拡張ポイント:ネットワーク形態、ウェイクワード、MCP、アセットのカスタマイズ

拡張ポイント:ネットワーク形態、ウェイクワード、MCP、アセットのカスタマイズ

ボードの基本対応と会話が動いた後は、ファームウェアが提供するいくつかの拡張入口を使えます。このページはナビゲーション専用です。各機能がソースのどこにあるかを示し、詳細ドキュメントへ案内します。上流の裏付けがない実装方法は書いていません。

1. ネットワーク形態

main/boards/common/ にはネットワーク形態ごとの基底クラスがあり、個々のボードはそのうち 1 つを継承します。

基底クラス用途
WifiBoardWi-Fi 接続。ネットワーク設定の流れは初回起動とネットワーク設定を参照
Ml307BoardML307 モジュールによる 4G Cat.1 ネットワーク
DualNetworkBoardWi-Fi と ML307 を切り替える。ネットワーク種別は Settings に保存され、既定値はボードのコンストラクタ引数で与えられる
EthernetBoard、RndisBoard、Nt26Boardその他のネットワーク形態の基底クラス。使い方は、これらを使うボードのディレクトリを参照

bread-compact-ml307 などは ML307 4G のリファレンス実装です。配線はハードウェア構築ガイドの 4G モジュールの項を参照してください。

2. ウェイクワードとオーディオ処理

  • ウェイクワードの種類は Kconfig の WAKE_WORD_TYPE で選びます。AFE ウェイクワード、AFE なしの WakeNet、MultiNet のカスタムウェイクワード、または無効です。チップごとの選択肢はチップ対応とストレージ仕様を参照してください。
  • カスタムウェイクワードには 2 つの経路があります。コンパイルオプション(CUSTOM_WAKE_WORD など)か、assets.bin へのパッケージ化です。詳細はカスタム Assets ガイドを参照してください。
  • SEND_WAKE_WORD_DATA を有効にすると、ウェイク後に直近約 2 秒のオーディオが会話の最初のメッセージとしてサーバーに送られます(PSRAM のリングバッファ。main/audio/README.md を参照)。

3. MCP ツール

デバイスは main/mcp_server.* でツールを登録し、大規模言語モデルがデバイスを制御できるようにします。ユーザーだけが呼び出せるツール(self.assets.set_download_url など)もあります。登録方法と組み込みツール一覧は MCP IoT 制御の使い方、プロトコルの流れは MCP プロトコルを参照してください。ボードは自身の初期化コードでツールを追加できます。たとえば bread-compact-esp32 は LampController をライト制御の例として使っています。

4. 通知、フォント補完、絵文字

5. ネットワーク設定とアップグレード

  • BluFi 設定ガイド:Bluetooth で Wi-Fi を設定します。
  • OTA のバージョン確認、アクティベーションコード、ファームウェアアップグレードは main/ota.* と Application が処理します。流れは初回起動を参照してください。
  • assets パーティションは、ファームウェアとは独立してアップグレードできます。カスタム Assets ガイドを参照してください。

6. 電源管理

Board は LOW_POWER、BALANCED、PERFORMANCE の 3 つの省電力レベルを定義しており、ボード側の SetPowerSaveLevel() が実装します。boards/common/ には power_save_timer、sleep_timer、バッテリー監視などのヘルパーもあります。スリープに入るかどうかは Application::CanEnterSleepMode() が判断します。具体的な動作はボードごとに異なるため、対象ボードのソースを確認してください。

関連ドキュメント

出典:78/xiaozhi-esp32 v2.5.2 の main/boards/common/、main/Kconfig.projbuild、main/mcp_server.cc、main/audio/README.md。