ESP32C6のMatter ThreadデバイスをHome Assistantから制御する(Threadボーダールーターあり)
1. はじめに
過去記事にまとめてきましたMatterでのデバイス制御とThread通信を組み合わせ、スマートフォンのアプリからThread通信のMatterデバイスを制御する検証を行います。
過去記事はこちらです。
2. Matterとは
Matterは、スマートホームのための新しい共通規格(プロトコル)です。大手IT企業が多数参加する無線通信規格標準化団体(Connectivity Standards Alliance、CSA)によって策定されました。Matter対応デバイスを開発・販売する際にはMatterの認証を取得する必要があります。
2.1. Matterの主な特徴
Matterには以下の4つの主要な特徴があります。
- シンプルさ(Simplicity) : 消費者が購入後すぐに使用できる
- 相互運用性(Interoperability) : 異なるメーカーのIoTデバイス同士をシームレスに連携
- 信頼性(Reliability) : インターネットが切断してもローカルで接続可能
- 安全性(Security) : 堅牢なセキュリティにより、開発者と消費者の双方が安心して利用可能
2.2. 技術的特徴
Matterは以下の技術的特徴を持っています。
- IPv6ベースのプロトコル
- Wi-FiとThreadの2つの接続技術をサポート
- OSIモデルのアプリケーション層に実装
- TCP/UDPなどのトランスポート層プロトコルを利用
2.3. Matterの利点
- デバイス間の互換性 : 異なるブランドのMatter対応デバイスが互いに認識し、連携できる
- 簡単なセットアップ : QRコードをスキャンするだけで、デバイスをホームネットワークに自動接続
- ローカル接続 : インターネット接続に問題が発生しても、ローカルエリアネットワーク内でデバイスにアクセス可能
2.4. 今後の展望
Matterの登場により、スマートホーム市場はより統一された規格のもとで発展することが期待されます。消費者にとっては、異なるメーカーの製品を簡単に組み合わせて使用できるようになり、より便利なスマートホーム環境を構築できるようになるでしょう。この新しい規格は、スマートホーム業界に大きな変革をもたらす可能性があり、今後の発展が注目されています。
3. Threadプロトコルとは
Threadは、IoT(Internet of Things)デバイス向けに設計された無線ネットワークプロトコルです。IPv6ベースの低消費電力メッシュネットワーク技術で、特にスマートホームや商業ビルの自動化アプリケーションに適しています。通常であればWiFiを利用してデバイスと通信する部分をThreadに置き換えます。
3.1. 主な特徴
Threadプロトコルには、以下のような特徴があります:
1. シンプルさと使いやすさ
- 簡単なセットアップと起動プロセス
- デバイス間の直接通信が可能
- 自己設定・自己修復機能を持つメッシュネットワーク
2. 高度なセキュリティ
- AES-128暗号化とパスワードベースの認証
- すべての通信が暗号化され、認証されたデバイスのみがネットワークに参加可能
3. 信頼性と効率性
- 自己修復メッシュネットワーク構造
- 単一障害点がない分散型プロトコル
- 低レイテンシーと低消費電力設計
4. スケーラビリティ
- 数百のデバイスをサポート可能
- スター型からメッシュ型まで、自動的にネットワークトポロジーを調整
5. IPv6ベース
- 将来性の高いIPv6アドレッシングアーキテクチャを採用
- 他のIP基盤のデバイスとの互換性
3.2. Threadの仕組み
Threadは802.15.4無線規格上で動作し、6LoWPAN(IPv6 over Low-power Wireless Personal Area Networks)を使用してIPv6通信を実現します。ネットワーク内のデバイスは直接通信するか、近隣デバイスを経由してメッセージを転送します。ボーダールーターと呼ばれる特殊なデバイスを使用して、ThreadネットワークをWi-Fiやインターネットなどの他のネットワークに接続します。
3.3. 他のプロトコルとの比較
ZigbeeやZ-Waveなどの他の低電力メッシュネットワークプロトコルと比較して、Threadはより効率的なデバイス間通信、優れたスケーラビリティ、そしてネットワークの自己修復能力を提供します。
3.4. まとめ
Threadプロトコルは、IoTデバイスの接続性、セキュリティ、および効率性に関する多くの課題を解決する革新的な技術です。その柔軟性と将来性により、スマートホームや商業用ビルオートメーションの分野で急速に採用が進んでいます。開発者やユーザーにとって、より安全で信頼性の高いIoTエコシステムを構築するための強力なツールとなっています。
4. OpenThreadとは
OpenThreadは、GoogleがリリースしたThreadのオープンソース実装です。Threadは、IoT(Internet of Things)製品向けの低消費電力メッシュネットワーク技術で、安全性と将来性を両立させるよう設計されています。OpenThreadの主な特徴は以下の通りです:
- IPv6ベースのプロトコル
- メッシュネットワーク機能
- 低消費電力
- 高い信頼性
- セキュリティ機能
OpenThreadは、すべてのThreadネットワークレイヤー(IPv6、6LoWPAN、IEEE 802.15.4 MACセキュリティ、メッシュリンクの確立、メッシュルーティング)を実装しています。
5. OpenThread CLI とは
OpenThread CLI(Command Line Interface)は、OpenThreadの構成と管理APIをインターフェースから使用できるツールです。開発者はこのCLIを使用して、OpenThreadの開発やテストを行うことができます。
5.1. CLIの主な機能
- ネットワーク管理 : Threadネットワークの作成、参加、離脱などの操作が可能です。
- デバイス設定 : チャンネル、PAN ID、ネットワークキーなどの設定ができます。
- 状態確認 : デバイスの現在の状態(リーダー、ルーター、子デバイスなど)を確認できます。
- データセット操作 : アクティブデータセットの初期化、コミット、表示が可能です。
- TCP機能テスト : Thread ネットワーク上でTCPエンドポイント間の通信をテストできます。
OpenThread CLIは、開発者がThreadネットワークを効率的に構築、管理、テストするための強力なツールです。
6. Home Assistantとは
Home Assistantは、スマートホームデバイスを一元管理し、自動化するためのオープンソースのホームオートメーションプラットフォームです。様々なメーカーの製品を統合し、ユーザーが自宅のデバイスを効率的に制御できるようにします。
今回はRaspberry PiにHome Assistantをインストールすることで実装します。
6.1. Thread、Matter、Open Thread Border Router
Home Assistantは、最新のスマートホーム技術であるThread、Matter、Open Thread Border Routerをサポートしています。
- Thread : 低消費電力型のメッシュネットワーク技術で、IoT製品向けに設計された無線通信プロトコルです。
- Matter : 複数のスマートホームシステムで同時に利用できる新しい規格です。Apple HomeKitやGoogle Home、アマゾンのAlexaなど主要なプラットフォームと互換性があります。
- Open Thread Border Router (OTBR) : Home AssistantをThread境界ルーターとして機能させるアドオンです。これにより、マター(Matter)デバイスをThread経由で接続できるようになります。
Home Assistantは、これらの技術を統合することでより柔軟で相互運用性の高いスマートホームシステムを実現しています。
6.2. Home Assistantの主な用途
- デバイス統合 : 異なるメーカーの製品を一つのインターフェースで操作できます。
- 自動化 : 時間やセンサーなどの条件に基づいてデバイスの動作を自動化できます。
- カスタマイズ : ユーザーインターフェースやダッシュボードを作成してカスタマイズが可能です。
- エネルギー管理 : 電力消費量や再生可能エネルギーの使用状況も監視できます。
- セキュリティとプライバシー保護 : ローカルでの動作によりクラウドへの依存が少なくなるためセキュリティとプライバシーが向上します。
Home Assistantは、これらの機能によってユーザーにとって高度かつ柔軟なスマートホーム環境を作り出します。また、新しい技術に対応することで将来的な発展にも対応可能な強力なプラットフォームとなっています。
7. 検証システム構成図
8. 今回の検証に必要な機材
今回のMatter Threadデバイスは照明器具を想定したデバイスで、スマートフォンアプリからESP32に接続されたLEDの調光制御を行います。
ESP THREAD BR-ZIGBEE GW
ThreadネットワークをWifi経由で中継するThreadボーダールーター
https://www.marutsu.co.jp/pc/i/46068560
Raspberry Pi 4B 以上
Home Assistant構築用。
電源、SDカード等も別途準備。
https://www.marutsu.co.jp/pc/i/2227274
Seeed Studio XIAO ESP32C6【113991254】
https://www.marutsu.co.jp/pc/i/2788523
【オプション】XIAO ESP32C3/C6用2.4GHzロッドアンテナ【103990623】
https://www.marutsu.co.jp/pc/i/2582859
GROVE - RGB LED RING (24-WS2813【104020168】
https://www.marutsu.co.jp/pc/i/33411610
SEEED STUDIO GROVE BASE FOR XIAO【103020312】
https://www.marutsu.co.jp/pc/i/35528249
*40ピン基板用ピンヘッダー[40ピン×1列]【2130S140GSE】**
https://www.marutsu.co.jp/pc/i/10041
GROVE - 4ピンケーブル 20cm(5本セット)【110990027】
https://www.marutsu.co.jp/pc/i/829422
9. ESP Thread Border Routerの構築
下記リンク先ページの手順に従い、Thread ボーダールーター用のバイナリを書き込みます。
検証時の ESP-IDFのバージョンはv5.5でした。
esp-thread-brのビルドをする際、適切なESP-IDFのバージョンでなければビルドエラーがでます。
https://docs.espressif.com/projects/esp-thread-br/en/latest/dev-guide/build_and_run.html
9.1. ESP Thraed Border Router用開発環境構築
ESP Thraed Border Router用のesp-idfはv5.5であり、後ほど構築するesp-matter用の場合にはesp-idf v5.2.3を利用します。よって、2つのバージョンのesp-idfを利用するため環境構築するディレクトリも分けておきます。
mkdir v5.5
cd v5.5
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
git checkout e6aeb3d36d2fcaf578e4e53308191a8e262dc822
git submodule update --init --depth 1
./install.sh
. ./export.sh
cd ..
git clone --recursive https://github.com/espressif/esp-thread-br.git
9.2. OpenThread RCP用バイナリのビルド
Thread通信を担うESP32-H2用のバイナリをビルドします。
cd $IDF_PATH/examples/openthread/ot_rcp
idf.py set-target esp32h2
idf.py build
9.3. ホストSocのビルドと書き込み
WiFi通信を担うESP32-S3のバイナリをビルドします。
cd esp-thread-br/examples/basic_thread_border_router
idf.py set-target esp32s3
idf.py menuconfig
- ESP Thread Border Router Example → Enable the automatic start mode in Thread Border Router:enable
- Example Connection Configuration → WiFi SSID:接続するWiFiのSSID
- Example Connection Configuration → WiFi Password:接続するWiFiのパスワード
- Component config → ESP System Settings → Channel for console output:USB Serial/JTAG Controller
idf.py build
ESP32-S3のバイナリをフラッシュすると、自動的にESP32-H2用のバイナリもフラッシュされます。
idf.py -p /dev/ttyACM0 flash
10. Home Assistantの構築
10.1. Raspberry Piの設定
下記リンク先ページの手順に従い、Home AssistantのイメージをSDカードに書き込みます。
https://www.home-assistant.io/installation/raspberrypi
SDカードをRasbperry Piに挿入・起動します。
通常のRaspberry Piのデスクトップは起動せず、Home Assistantのコンソール画面になります。
10.2. Home Assistantの設定
Raspberry Pi以外のPCから下記URLにブラウザでアクセスします。
接続できない場合には、PCのファイアフォール設定を一時的に無効にしてみます。
[ http://homeassistant.local:8123/ ]
画面に従い初期設定を行います。
[設定] - [デバイスとサービス]で、「統合を追加」ボタンをクリックし、[Thread]を追加します。
Home AssistantのCLIから下記コマンドで再起動します。
host reboot
再起動後、[設定] - [デバイスとサービス] - [Thread] - [設定]をクリックします。
ESP Thread Border Routerの電源を入れると、自動的に検出されるので [Android + iOS認証情報にルーターを使用する] をクリックします。
その後、[ MAKE PREFERRED NETWORK ]をクリックします。
ESP Thread Border Routerが優先ネットワークに設定されます。
11. Matter Thread デバイス(照明デバイス)構築
ESP32C6でLEDを制御するテストデバイスを構築します。
下記リンク先の情報を参考にしてください。
https://wiki.seeedstudio.com/xiao_idf
今回はESP-IDF v5.2.3を利用します。
mkdir v5.2.3
cd v5.2.3
git clone -b v5.2.3 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh
source ./export.sh
cd ..
git clone --depth 1 https://github.com/espressif/esp-matter.git
cd esp-matter
git submodule update --init --depth 1
cd ./connectedhomeip/connectedhomeip
./scripts/checkout_submodules.py --platform esp32 linux --shallow
cd ../..
./install.sh
cd examples/light
idf.py set-target esp32c6
idf.py menuconfig
- Component config → ESP System Settings → Channel for console output:USB Serial/JTAG Controller
- Component config → Board Support Package (generic) -> LEDs:20
- Component config → OpenThread → OpenThread:enable
- Component config → CHIP Device Layer → WiFi Station Options → Enable CHIP WIFI STATION:disable
- Component config → CHIP Core → General Options → Use the minimal mDNS implementation shipped in the CHIP library:disable
idf.py build
idf.py -p /dev/ttyACM0 flash
書き込み完了後、デバイスが起動するので、シリアルモニタから下記コマンドを入力し、スマートフォンのアプリからMatterデバイスとして登録するためのQRコードのURLを控えておきます。
URLにPCのブラウザからアクセスするとQRコードが表示されます。
matter onboardingcodes ble
QRCode: MT:Y.xxxxxxxxxxxx
QRCodeUrl: https://project-chip.github.io/connectedhomeip/qrcode.html?data=xxxxxxxxxxxx
ManualPairingCode: xxxxxxxxxxxx
Done
12. スマートフォンアプリからMatterデバイスを登録
Home Assistantアプリをインストールします。
https://play.google.com/store/apps/details?id=io.homeassistant.companion.android&hl=ja&pli=1
https://apps.apple.com/jp/app/home-assistant/id1099568401
アプリを起動すると、同じネットワーク上にあるHome Assistant (Raspberry Pi)が自動的に検出されるためログインし、下図に従いMatterデバイスの登録を行います。
もし、登録がうまくできない場合には、下部にあるトラブルシューティングの手順に従ってください。
12.1. Matterデバイス登録手順
12.2. トラブルシューティング
[設定] - [コンパニオンアプリ] - [トラブルシューティング]
13. 動作確認
スマートフォンアプリから登録した照明デバイスを操作し、動作確認をしました。
電源ON/OFFは正常に動作しましたが、LEDの光色を変更する操作などの一部は正常に動作しない(あるいは遅れて動作する)ことがありました。Matterデバイス側に問題があるのか、Home Assistant側に問題があるかは、まだ切り分けできていませんが、ひとまず、ひととおりの動作確認はできました。
14. FAQ
- この検証に必要な機材は何ですか?
- 主な機材には、ESP THREAD BR-ZIGBEE GW、Raspberry Pi 4B以上、Seeed Studio XIAO ESP32C6、GROVE – RGB LED RINGなどが含まれます。
- ESP Thread Border Routerのセットアップ方法は?
- ESP-IDF v5.5を使用し、指定のGitHubリポジトリからコードをクローンして、必要な設定を行った後にビルドとフラッシュを行います。
- Home Assistantのインストール方法は?
- Raspberry PiにHome AssistantのイメージをSDカードに書き込み、起動後にブラウザからアクセスして初期設定を行います。
- MatterとThreadの違いは何ですか?
- Matterはスマートホームデバイスの共通規格で、ThreadはIoTデバイス向けの無線ネットワークプロトコルです。Matterは通信プロトコルとしてThreadを使用できます。
- OpenThreadとは何ですか?
- OpenThreadはGoogleがリリースしたThreadのオープンソース実装で、低消費電力メッシュネットワーク技術を提供します。
- Home AssisntantにMatterデバイスの登録がうまくいかない場合はどうすればよいですか?
- Home Assistantアプリの設定から「Thread認証情報の同期」を行うことで解決できる場合があります。






























