Точки расширения: типы сетей, слова пробуждения, MCP и настройка ресурсов
Когда базовая адаптация платы и диалог заработали, прошивка предлагает несколько типов точек расширения. Эта страница — только навигация: она показывает, где в исходном коде находится каждая возможность, и ведёт к подробной документации. Схемы реализации без опоры на upstream здесь не придумываются.
1. Типы сетей
В main/boards/common/ для разных сетей есть базовые классы, конкретная плата наследует один из них:
| Базовый класс | Назначение |
|---|---|
WifiBoard | Подключение по Wi-Fi; настройку сети см. в Первом запуске и Настройке сети |
Ml307Board | Сеть 4G Cat.1 через модуль ML307 |
DualNetworkBoard | Переключение между Wi-Fi и ML307; тип сети хранится в Settings, значение по умолчанию задаётся параметром конструктора платы |
EthernetBoard, RndisBoard, Nt26Board | Базовые классы для других типов сети; об использовании смотрите в каталогах плат, которые их применяют |
Платы вроде bread-compact-ml307 — эталонная реализация 4G на ML307. Подключение см. в части про 4G-модуль в руководстве по сборке оборудования.
2. Слова пробуждения и обработка аудио
- Тип слова пробуждения выбирается опцией Kconfig
WAKE_WORD_TYPE: слово пробуждения AFE, WakeNet без AFE, пользовательское слово MultiNet или отключено. Варианты для каждого чипа см. в разделе Поддержка чипов и спецификации хранилища. - У пользовательских слов пробуждения два пути: параметры компиляции (
CUSTOM_WAKE_WORDи др.) или упаковка вassets.bin, подробности в руководстве по пользовательским Assets. - При включённом
SEND_WAKE_WORD_DATAпосле пробуждения последние примерно две секунды звука отправляются на сервер как первое сообщение диалога (кольцевой буфер в PSRAM, см.main/audio/README.md).
3. Инструменты MCP
Устройство регистрирует инструменты в main/mcp_server.*, чтобы большая языковая модель могла им управлять; есть и инструменты, доступные только пользователю (например, self.assets.set_download_url). Способ регистрации и список встроенных инструментов см. в разделе Использование MCP для управления IoT, а последовательность протокола — в разделе Протокол MCP. Плата может добавлять инструменты в собственном коде инициализации, например bread-compact-esp32 использует LampController как пример управления лампой.
4. Уведомления, дополнение шрифтов и эмодзи
- Асинхронные голосовые уведомления (notify): облако отправляет одностороннее голосовое уведомление, пока устройство простаивает, и показывает субтитры по временной шкале.
- Расширение Glyph Push для динамического текста: если в шрифте устройства нет символа, сервер присылает растровый глиф.
- Отображение настроения через эмодзи: большая языковая модель выражает эмоции эмодзи, а устройство показывает соответствующее выражение.
5. Настройка сети и обновление
- Руководство по настройке BluFi: настройка Wi-Fi через Bluetooth.
- Проверка версии OTA, код активации и обновление прошивки выполняются в
main/ota.*иApplication; порядок см. в Первом запуске. - Раздел assets можно обновлять независимо от прошивки, см. руководство по пользовательским Assets.
6. Управление питанием
Board определяет три уровня энергосбережения: LOW_POWER, BALANCED и PERFORMANCE, их реализует SetPowerSaveLevel() платы; в boards/common/ есть также вспомогательные классы power_save_timer, sleep_timer и мониторинга батареи. Входить ли в сон, решает Application::CanEnterSleepMode(). Конкретное поведение зависит от платы, поэтому читайте исходный код своей платы.
Связанные материалы
- Обзор кода прошивки: структура каталогов, конечный автомат и правила разработки
- Руководство по своей плате: добавление новой платы
- Устранение неполадок: проблемы сборки, прошивки и работы
Источники: main/boards/common/, main/Kconfig.projbuild, main/mcp_server.cc и main/audio/README.md в 78/xiaozhi-esp32 v2.5.2.