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つの主要な特徴があります。

2.2. 技術的特徴

Matterは以下の技術的特徴を持っています。

2.3. Matterの利点

2.4. 今後の展望

Matterの登場により、スマートホーム市場はより統一された規格のもとで発展することが期待されます。消費者にとっては、異なるメーカーの製品を簡単に組み合わせて使用できるようになり、より便利なスマートホーム環境を構築できるようになるでしょう。この新しい規格は、スマートホーム業界に大きな変革をもたらす可能性があり、今後の発展が注目されています。

3. Threadプロトコルとは

Threadは、IoT(Internet of Things)デバイス向けに設計された無線ネットワークプロトコルです。IPv6ベースの低消費電力メッシュネットワーク技術で、特にスマートホームや商業ビルの自動化アプリケーションに適しています。通常であればWiFiを利用してデバイスと通信する部分をThreadに置き換えます。

3.1. 主な特徴

Threadプロトコルには、以下のような特徴があります:

1. シンプルさと使いやすさ

2. 高度なセキュリティ

3. 信頼性と効率性

4. スケーラビリティ

5. IPv6ベース

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の主な特徴は以下の通りです:

OpenThreadは、すべてのThreadネットワークレイヤー(IPv6、6LoWPAN、IEEE 802.15.4 MACセキュリティ、メッシュリンクの確立、メッシュルーティング)を実装しています。

5. OpenThread CLI とは

OpenThread CLI(Command Line Interface)は、OpenThreadの構成と管理APIをインターフェースから使用できるツールです。開発者はこのCLIを使用して、OpenThreadの開発やテストを行うことができます。

5.1. CLIの主な機能

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をサポートしています。

  1. Thread : 低消費電力型のメッシュネットワーク技術で、IoT製品向けに設計された無線通信プロトコルです。
  2. Matter : 複数のスマートホームシステムで同時に利用できる新しい規格です。Apple HomeKitやGoogle Home、アマゾンのAlexaなど主要なプラットフォームと互換性があります。
  3. Open Thread Border Router (OTBR) : Home AssistantをThread境界ルーターとして機能させるアドオンです。これにより、マター(Matter)デバイスをThread経由で接続できるようになります。

Home Assistantは、これらの技術を統合することでより柔軟で相互運用性の高いスマートホームシステムを実現しています。

6.2. Home Assistantの主な用途

  1. デバイス統合 : 異なるメーカーの製品を一つのインターフェースで操作できます。
  2. 自動化 : 時間やセンサーなどの条件に基づいてデバイスの動作を自動化できます。
  3. カスタマイズ : ユーザーインターフェースやダッシュボードを作成してカスタマイズが可能です。
  4. エネルギー管理 : 電力消費量や再生可能エネルギーの使用状況も監視できます。
  5. セキュリティとプライバシー保護 : ローカルでの動作によりクラウドへの依存が少なくなるためセキュリティとプライバシーが向上します。

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
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 
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認証情報の同期」を行うことで解決できる場合があります。