XIAO ESP32 シリーズでの Matter 開発
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
XIAO ESP32 シリーズでの Matter 開発
この記事は、Seeed Studio XIAO ESP32 開発シリーズの Matter に関する第 3 回目のチュートリアルです。以前のチュートリアルをまだ読んでいない場合は、まずそれらを読んで、デバイスが必要な設定を満たしていることを確認することをお勧めします。
急速に進化する IoT(モノのインターネット)の世界において、スマートホームデバイスが相互に通信し、連携する方法を革新する新しいプロトコルが登場しました。それが Matter です。この統一プロトコルは、さまざまなスマートホームエコシステム間のギャップを埋め、世界中のユーザーにシームレスで相互運用可能な体験を提供することを目指しています。
では、Matter とは具体的に何であり、なぜ IoT コミュニティでこれほど注目を集めているのでしょうか?Matter は、異なるメーカーのスマートホームデバイスが簡単に連携できるようにするオープンソースの標準化プロトコルです。共通の言語とフレームワークを提供することで、IoT デバイスの開発と展開を簡素化することを目的としています。

- スマートホームデバイス向けの通信プロトコル。
- 1.0 バージョンは 2022 年 10 月 4 日にリリース(2 度の延期を経て)。
- 標準化されたコマンドセットにより、異なるメーカーのデバイスが相互に通信可能。
- Thread、Wi-Fi、または Ethernet を使用して IP ネットワーク上で動作。
- 「セキュリティ・バイ・デザイン」と「ゼロトラスト」を採用。
- ローカルで動作し、通常は Matter ハブを介してクラウドに接続。
- Zigbee、Z-Wave、433MHz などの他のスマートホーム標準と共存。
- バッテリー寿命と通信範囲は無線ネットワーク技術に依存。
- Matter ハブによって調整される。
Matter の価値提案は明確です。それは、より接続性が高く、ユーザーフレンドリーで安全なスマートホーム体験への道を提供します。Matter を採用することで、デバイスメーカーは自社製品が Amazon Alexa、Google Home、Apple HomeKit などの幅広いスマートホームプラットフォームやアシスタントと互換性を持つことを保証できます。この相互運用性は消費者に利益をもたらすだけでなく、IoT 分野の開発者や企業に新たな機会を提供します。

開発者として Matter を採用することは、デバイスやサービスの広大なエコシステムにアクセスし、既存のスマートホーム環境とシームレスに統合できる革新的なソリューションを作成することを意味します。Matter の力を活用することで、デバイスの通信や互換性の複雑さを心配することなく、魅力的なユーザー体験や機能の構築に集中できます。
Matter 開発を始めるには、適切なツールと環境が必要です。このチュートリアルでは、IoT アプリケーション向けに特別に設計されたコンパクトで強力なボードである Seeed Studio XIAO ESP32C6 を使用して Matter 開発環境を設定する手順を案内します。ESP32-C6 マイクロコントローラーと豊富な周辺インターフェースを備えた XIAO ESP32C6 は、Matter 対応デバイスの開発に最適な選択肢です。

以下のセクションでは、Matter 開発環境を構成する手順を説明します。必要なソフトウェアのインストール、Seeed Studio XIAO ESP32C6 ボードのセットアップ、最初の Matter サンプルプログラムの実行を含みます。このチュートリアルを終える頃には、自分自身の Matter デバイスを構築し、相互運用可能なスマートホームソリューションの成長するエコシステムに貢献するための確かな基盤を得ることができます。
それでは、Seeed Studio XIAO ESP32C6 を使った Matter 開発の可能性を解き放ちましょう!
ソフトウェアの準備
以下に、本記事で使用するシステムバージョン、ESP-IDFバージョン、およびESP-Matterバージョンをリストします。これらは正常に動作することが確認された安定版です。
- ホスト: Ubuntu 22.04 LTS (Jammy Jellyfish)。
- ESP-IDF: タグ v5.2.1。
- ESP-Matter: メインブランチ、2024年5月10日時点のコミット bf56832。
- connectedhomeip: 現在のところ、2024年5月10日時点のコミット 13ab158f10と互換性があります。
- Git
- Visual Studio Code
ハードウェアの準備
このセクションでは、Ubuntu環境でESP-IDFを使用する方法を設定し、ESP-IDFが提供するライティング例を実行する手順を詳しく説明します。そのため、本記事では以下のいずれかのXIAO ESP32シリーズを準備するだけで十分です。
XIAOに加えて、WS281xモデルのライトバーまたはライトビーズも必要です。現在、Espressifが提供するライティング例は単一のビーズのみをサポートしているため、ストリップまたはビーズのどちらを使用しても、点灯するのは1つのライトだけです。また、配線を簡単にするために、XIAO用のGrove Baseを使用することをお勧めします。
インターフェースを統一するために、このケースではD9ピンを使用します。LEDストリップまたはビーズをXIAOのD9ピンに接続してください。

ビデオチュートリアル
ESP-Matter のインストール手順
Matter の環境をインストールする前に、ESP-IDF プログラミング環境をインストールしてアクセスできるようにすることを確認してください。
ステップ 1. 依存関係のインストール
まず、apt-get
を使用して必要なパッケージをインストールします。ターミナルを開き、以下のコマンドを実行してください:
sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev
このコマンドは、git
、コンパイラ(gcc
、g++
)、および Matter SDK のビルドと実行に必要なライブラリをインストールします。
ステップ 2. ESP-Matter リポジトリのクローン作成
GitHub から esp-matter
リポジトリを git clone
コマンドを使用してクローンします。最新のスナップショットのみを取得するために深さ 1 を指定します:
cd ~/esp
git clone --depth 1 https://github.com/espressif/esp-matter.git
esp-matter
ディレクトリに移動し、必要な Git サブモジュールを初期化します:
cd esp-matter
git submodule update --init --depth 1
次に、connectedhomeip
ディレクトリに移動し、特定のプラットフォーム用のサブモジュールを管理する Python スクリプトを実行します:
cd ./connectedhomeip/connectedhomeip
./scripts/checkout_submodules.py --platform esp32 linux --shallow
このスクリプトは、ESP32 および Linux プラットフォーム用のサブモジュールを浅い方法(最新のコミットのみ)で更新します。
ステップ 3. ESP-Matter のインストール
esp-matter
のルートディレクトリに戻り、インストールスクリプトを実行します:
cd ../..
./install.sh

このスクリプトは、ESP-Matter SDK に特有の追加の依存関係をインストールします。
ステップ 4. 環境変数の設定
export.sh
スクリプトをソースとして実行し、開発に必要な環境変数を設定します:
source ./export.sh
このコマンドは、必要な環境パスと変数をシェルに設定します。
ステップ 5(オプション). ESP-Matter 開発環境への簡単なアクセス
提供されたエイリアスと環境変数設定を .bashrc
ファイルに追加することで、IDF と Matter 開発セットアップ間を簡単に切り替えたり、ccache を有効にしてビルドを高速化したりできます。
ターミナルを開き、テキストエディタを使用してホームディレクトリにある .bashrc
ファイルを開きます。nano
またはお好みのエディタを使用できます。例えば:
nano ~/.bashrc
.bashrc
ファイルの末尾までスクロールし、以下の行を追加します:
# ESP-Matter 環境を設定するためのエイリアス
alias get_matter='. ~/esp/esp-matter/export.sh'
# コンパイルを高速化するために ccache を有効化
alias set_cache='export IDF_CCACHE_ENABLE=1'
行を追加したら、ファイルを保存してテキストエディタを終了します。nano
を使用している場合は、Ctrl+O
を押して保存し、Enter
を押して確認し、Ctrl+X
を押して終了します。
変更を反映させるには、.bashrc
ファイルを再読み込みする必要があります。これを行うには、.bashrc
ファイルをソースするか、ターミナルを閉じて再度開きます。.bashrc
ファイルをソースするには、以下のコマンドを使用します:
source ~/.bashrc
これで、任意のターミナルセッションで get_matter
と set_cache
を実行して、esp-matter 環境を設定または更新できるようになります。
get_matter
set_cache
light サンプルの実行
Matter 環境が構築されたら、サンプルアプリケーション light をコンパイルしてアップロードし、動作を確認します。
ステップ 1. プロジェクトのパラメータを設定する
examples/light
ディレクトリに移動します。
cd examples/light # light サンプルディレクトリに移動
以前のビルドファイルを削除してクリーン操作を行います。
rm -rf build/ # 以前のビルドファイルを削除
ターゲットを ESP32-C6 に設定します。
idf.py set-target esp32c6 # ビルドターゲットを ESP32-C6 に設定
設定メニューに入り、必要な設定を行います。
idf.py menuconfig # 設定メニューに入る
menuconfig
内で、Channel for console output
オプションを見つけて有効にする必要があります。このオプションは通常、Component config -> ESP System Settings の下にあります。

- 矢印キーを使用してオプションに移動します。
- スペースキーまたは Enter キーを押してオプションを選択します:
USB Serial/JTAG Controller
.
異なる XIAO の場合、GPIO ピン番号も更新する必要があります。このオプションは Component config -> Board Support Package (generic) -> LEDs の下にあります。
- XIAO ESP32C3 の場合、D9 の GPIO は 9 です。
- XIAO ESP32S3 の場合、D9 の GPIO は 8 です。
- XIAO ESP32C6 の場合、D9 の GPIO は 20 です。

- 矢印キーを使用してオプションに移動します。
- スペースキーまたは Enter キーを押して GPIO 番号を入力します。
- 必要なオプションを有効にした後、
menuconfig
を終了するにはq
を押し、その後y
を押します。
ステップ 2. サンプルアプリケーションをコンパイルしてアップロードする
ビルドとフラッシュのプロセスを続行します。
idf.py build # プロジェクトをビルド
コンパイルが正常に完了すると、以下の結果が表示されます。

その後、プログラムをアップロードできます。
idf.py -p /dev/ttyACM0 flash monitor # ファームウェアをフラッシュして出力をモニター
/dev/ttyACM0
を、XIAO ESP32 に対応する実際の USB デバイスファイルに置き換えてください。
すべての指示を慎重に従い、各ステップが正常に完了したことを確認してから次に進んでください。エラーが発生した場合は、それを解決してから続行する必要があります。
Matter のファームウェアをフラッシュする過程で、権限がない状況に遭遇することがあります。この場合、以下のコマンドを使用してデバイスのポートに権限を付与し、再度プログラムをアップロードしてください。デバイスが接続されたり再起動されたりすると、再度権限を付与する必要がある場合があります。
sudo chmod 666 /dev/ttyACM0 # USB デバイスファイルに権限を付与
/dev/ttyACM0
を、XIAO ESP32 に対応する実際の USB デバイスファイルに置き換えてください。
ファームウェアのフラッシュに成功した場合、モニターでターミナルにデバッグログ出力が表示されます。

次に、Matter コマンドと chip-tool を使用して Matter デバイスを設定し、Matter デバイスのデバッグと確認を完了する方法を学びます。
ホスト制御と機器の試運転
menuconfig
でconsole output to USB Serial
のチャンネルを設定します。この目的は、USBインターフェースを使用してXIAOを制御し、ネットワークへの参加を設定したり、その他のデバッグを行ったりすることです。このステップは非常に重要であり、シリアルツールを使用してデバイスにコマンドを送信できるかどうかを決定します。
以下は、ケーブルを介してデバイスを直接制御するためのコマンドで、通常matter
で始まります。
一般的なコマンド
BLEコマンド: BLE広告の開始と停止:
matter ble [start|stop|state]
Wi-Fiコマンド: Wi-Fiモードの設定と取得:
matter wifi mode [disable|ap|sta]
デバイス設定: デバイスの静的設定をダンプ:
matter config
工場出荷時リセット:
matter device factoryreset
オンボーディングコード: オンボーディングペアリングコードのペイロードをダンプ:
matter onboardingcodes
属性の取得: (IDは16進数):
matter esp attribute get <endpoint_id> <cluster_id> <attribute_id>
例: on_off::on_off:
matter esp attribute get 0x1 0x6 0x0
属性の設定: (IDは16進数):
matter esp attribute set <endpoint_id> <cluster_id> <attribute_id> <attribute value>
例: on_off::on_off:
matter esp attribute set 0x1 0x6 0x0 1
診断:
matter esp diagnostics mem-dump
Wi-Fi接続:
matter esp wifi connect <ssid> <password>
使用方法
ステップ 1. Minicomのインストール
Minicomは、Unix系オペレーティングシステム向けのテキストベースのモデム制御および端末エミュレーションプログラムです。Minicomをインストールすることで、Matter制御コマンドをXIAOに簡単に送信できます。UbuntuにMinicomをインストールするには、ターミナルを開いて以下のコマンドを入力します:
sudo apt update
sudo apt install minicom
このコマンドはパッケージリストを更新し、Minicomをインストールします。
ステップ 2. ユーザー権限の設定
ttyACM0
のようなシリアルポートに非rootユーザーがアクセスできるようにするには、ユーザーをdialout
グループに追加する必要があります。以下のコマンドを使用してください:
sudo usermod -a -G dialout $USER
$USER
をあなたのユーザー名に置き換えるか、現在ログインしているユーザーに適用する場合は省略してください。このコマンドを実行した後、ログアウトして再ログインする必要があります。これによりグループ変更が有効になります。
ステップ 3. Minicomの設定
次に、MinicomをttyACM0
ポートで使用するように設定する必要があります。以下のコマンドで設定モードでMinicomを実行します:
sudo minicom -s
設定メニューで以下の手順を実行してください:
- Serial port setupを選択します。
- 'A'を押してシリアルデバイスを
/dev/ttyACM0
に変更します。 - 必要に応じて他の設定を調整します。デフォルト設定は通常9600 8N1 (9600 Baud, No Parity, 8 Data Bits, 1 Stop Bit)です。ボーレートを115200に変更するだけで十分です。
- 'Enter'を押してこの画面を終了します。
ステップ 4. 設定の保存
シリアルポートを設定した後:
- Save setup as dflを選択して、これをデフォルト設定として保存します。
- Exit from Minicomを選択してMinicom設定を終了します。
ステップ 5. Minicomの実行
デフォルト設定でMinicomを開始するには、以下を入力します:
minicom
もし権限の問題が発生した場合は、sudo権限で実行することもできます:
sudo minicom
Minicomを終了するには、Ctrl-A
を押してヘルプメニューを表示し、その後X
を押してプログラムを終了します。
ステップ 6. XIAOの配布ネットワーク設定
以下のコマンドを使用してXIAOをネットワークに接続します。ネットワークを選択する際、XIAOは2.4Gネットワークのみをサポートし、5Gネットワークはサポートしていないことに注意してください。
matter esp wifi connect <ssid> <password>
接続が成功した後、以下のコマンドを使用してMatterデバイスに関する非常に重要な情報を照会できます: VendorID, ProductId, Discriminator, PinCode。この情報は、Chip-toolツールを使用してデバッグする際にデバイスをペアリングするのに役立ちます。
matter config

最後に、以下のコマンドを使用してオンボーディングペアリングコードのペイロードをダンプします。
matter onboardingcodes onnetwork

最後に表示されるのはデバイスのペアリングQRコードへのリンクです。このQRコードを使用して、スマートフォンでコードをスキャンし、MatterデバイスをGetting Startedの手順に従ってバインドできます。
Matter デバイスのリモートデバッグ方法(Chip-toolを使用)
Matterデバイスはスマートホームの重要な部分であり、デバッグやセットアップの際に常にデータケーブルを使用するのは現実的ではありません。Matterデバッグツールの中で最も一般的に使用されるのがChip-toolであり、デバイスが接続されている場合にリモートでデバッグを行うことができます。
Chip-toolコマンドは通常、Chip-toolスクリプトを必要とし、chip-tool
で始まることが一般的です。
IP経由でデバイスをペアリングする
以下のコマンドはデバイスを検出し、提供されたセットアップコードを使用して最初に検出されたデバイスとペアリングを試みます。
chip-tool pairing onnetwork ${NODE_ID_TO_ASSIGN} 20202021
以下のコマンドは、長い識別子3840を持つデバイスを検出し、提供されたセットアップコードを使用して最初に検出されたデバイスとペアリングを試みます。
chip-tool pairing onnetwork-long ${NODE_ID_TO_ASSIGN} 20202021 3840
以下のコマンドは、指定されたQRコード(デバイスが起動時にログに記録するもの)に基づいてデバイスを検出し、最初に検出されたデバイスとペアリングを試みます。
chip-tool pairing code ${NODE_ID_TO_ASSIGN} MT:#######
これらすべての場合において、デバイスには${NODE_ID_TO_ASSIGN}
(10進数または0xで始まる16進数である必要があります)というノードIDが割り当てられます。
現在コミッション済みのデバイスを忘れる
chip-tool pairing unpair
クライアントを使用してMatterコマンドを送信する
クライアントを使用してMatterコマンドを送信するには、ビルドされた実行ファイルを実行し、ターゲットクラスタ名、ターゲットコマンド名、およびエンドポイントIDを渡します。
エンドポイントIDは1から240の間である必要があります。
chip-tool onoff on 1
クライアントは単一のコマンドパケットを送信し、その後終了します。
使用方法
Chip-toolを使用してデバッグを行う準備が整ったら、XIAOをコンピュータから切断し、電源に接続します。
最初のステップとして、デバイスをペアリングする必要があります。これは、IP経由でデバイスをペアリングするセクションのいずれかの方法を使用して行うことができます。
例えば、以下のコマンドを使用します。
chip-tool pairing onnetwork-long 0x12 20202021 3840
この場合、デバイスにはノードID0x12
(10進数または0xで始まる16進数である必要があります)が割り当てられます。20202021はPinCodeであり、3840はDiscriminatorです。

最後に、以下のコマンドを使用してライトのオン/オフを制御できることを確認します。
ライトをオンにする:
chip-tool onoff on 0x12 0x1
ライトをオフにする:
chip-tool onoff off 0x12 0x1

0x12
はペアリング時にデバイスに割り当てられたノードIDです。
皆さん、おめでとうございます!ここで実施したチュートリアルの手順により、ESP-Matterの開発フレームワークの一般的な手順とデバッグツールの使用方法について初歩的な理解が得られたと思います。まだ理解できない点や慣れていない点がある場合は、次のチュートリアルで引き続き使用方法を案内していきますので、ぜひご期待ください!
トラブルシューティング
Q1: 環境のインストール中にさまざまなエラーが発生するのはなぜですか?
ESP-Matter の環境は少し要求が厳しく、開発によく使用される Ubuntu ホストを使用している場合、一部の Python 依存関係のバージョンが異なるためにエラーが発生する可能性があります。Matter フレームワークは Seeed によって開発されたものではないため、この問題に関してはおそらく対応できることはありません。そのため、インストール中に問題が発生した場合は、公式の ESP-Matter リポジトリ にイシューを提出してサポートを受けることをお勧めします。
Q2: Matter の環境をどのようにアンインストールしますか?
./install.sh
スクリプトを実行して Python 環境の設定ステップで行き詰まった場合、Matter の バージョン が connectedhomeip のバージョンと一致しているか確認する必要があります。
簡単にリセットする方法は、以下のコマンドを実行することです。
rm -r connectedhomeip/connectedhomeip/.environment
その後、適切なバージョンの connectedhomeip ブランチを再度取得します。
git submodule update --init --depth 1
それでもうまくいかない場合は、esp-matter フォルダ全体を削除し、Wiki の内容に従って再度実行してください。
リソース
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。