Skip to main content

XIAO ESP32 シリーズでの Matter 開発

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

XIAO ESP32 シリーズでの Matter 開発

tip

この記事は、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環境でESP-IDFを使用する方法を設定し、ESP-IDFが提供するライティング例を実行する手順を詳しく説明します。そのため、本記事では以下のいずれかのXIAO ESP32シリーズを準備するだけで十分です。

XIAOに加えて、WS281xモデルのライトバーまたはライトビーズも必要です。現在、Espressifが提供するライティング例は単一のビーズのみをサポートしているため、ストリップまたはビーズのどちらを使用しても、点灯するのは1つのライトだけです。また、配線を簡単にするために、XIAO用のGrove Baseを使用することをお勧めします。

Grove Base for XIAOGrove - RGB LED Ring (20 - WS2813 Mini)

インターフェースを統一するために、このケースではD9ピンを使用します。LEDストリップまたはビーズをXIAOのD9ピンに接続してください。

ビデオチュートリアル

ESP-Matter のインストール手順

tip

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、コンパイラ(gccg++)、および 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_matterset_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 の下にあります。

  1. 矢印キーを使用してオプションに移動します。
  2. スペースキーまたは 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 です。
  1. 矢印キーを使用してオプションに移動します。
  2. スペースキーまたは Enter キーを押して GPIO 番号を入力します。
  3. 必要なオプションを有効にした後、menuconfig を終了するには q を押し、その後 y を押します。

ステップ 2. サンプルアプリケーションをコンパイルしてアップロードする

ビルドとフラッシュのプロセスを続行します。

idf.py build                      # プロジェクトをビルド

コンパイルが正常に完了すると、以下の結果が表示されます。

その後、プログラムをアップロードできます。

idf.py -p /dev/ttyACM0 flash monitor  # ファームウェアをフラッシュして出力をモニター

/dev/ttyACM0 を、XIAO ESP32 に対応する実際の USB デバイスファイルに置き換えてください。

すべての指示を慎重に従い、各ステップが正常に完了したことを確認してから次に進んでください。エラーが発生した場合は、それを解決してから続行する必要があります。

tip

Matter のファームウェアをフラッシュする過程で、権限がない状況に遭遇することがあります。この場合、以下のコマンドを使用してデバイスのポートに権限を付与し、再度プログラムをアップロードしてください。デバイスが接続されたり再起動されたりすると、再度権限を付与する必要がある場合があります。

sudo chmod 666 /dev/ttyACM0       # USB デバイスファイルに権限を付与

/dev/ttyACM0 を、XIAO ESP32 に対応する実際の USB デバイスファイルに置き換えてください。

ファームウェアのフラッシュに成功した場合、モニターでターミナルにデバッグログ出力が表示されます。

次に、Matter コマンドと chip-tool を使用して Matter デバイスを設定し、Matter デバイスのデバッグと確認を完了する方法を学びます。

ホスト制御と機器の試運転

menuconfigconsole 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

設定メニューで以下の手順を実行してください:

  1. Serial port setupを選択します。
  2. 'A'を押してシリアルデバイスを/dev/ttyACM0に変更します。
  3. 必要に応じて他の設定を調整します。デフォルト設定は通常9600 8N1 (9600 Baud, No Parity, 8 Data Bits, 1 Stop Bit)です。ボーレートを115200に変更するだけで十分です。
  4. 'Enter'を押してこの画面を終了します。

ステップ 4. 設定の保存

シリアルポートを設定した後:

  1. Save setup as dflを選択して、これをデフォルト設定として保存します。
  2. 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 の内容に従って再度実行してください。

リソース

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。

Loading Comments...