1. はじめに
Matter は、スマート デバイスの開発に刺激的な機会をもたらす接続プロトコルです。この Codelab では、初めての Matter デバイスを作成します。Matter について詳しくは、Google Home Developer Center: Matter または Connectivity Standards Alliance のウェブサイトをご覧ください。
学習内容
- 実機を Matter に統合する方法。
- Google Home で Matter デバイスを試したり操作したりする方法。
必要なもの
- ハブ: Matter に対応している Google Nest デバイス(Google Nest Hub(第 2 世代)など)。
- Espressif Systems の ESP32-DevkitC または ESP32 M5STACK Matter 評価ボード。
- Linux を実行している PC。
- Linux の基本的な知識。
2.環境を設定する
シリアル デバイスを特定する
開発環境を設定する最初のステップは、デバイスが接続されているシリアルポートを決定することです。この情報により、デベロッパー ボードをプログラミングしたり、デベロッパー ボードとやり取りしたりできます。
- USB ケーブルを使用してデベロッパー ボードをパソコンに接続します。
/dev
ファイル システムでデベロッパー ボード デバイスを見つけます。デベロッパー ボードのデバイス プレフィックスを指定すると、検索を絞り込むことができます。Espressif の ESP32 は/dev/ttyUSBx
を使用します。user@host $ ls /dev/ttyUSB* /dev/ttyUSB0
ハブを設定する
この Codelab で使用する Google アカウントと同じアカウントを使用してハブを設定します。
開発環境を設定する
前提条件
この手順は Debian Linux でテストされており、Ubuntu を含むほとんどの Debian ベースの Linux ディストリビューションで機能します。別の Linux ディストリビューションを使用している場合は、依存関係のセットアップ手順が以下のものと異なる場合があります。
依存関係のインストール
次のコマンドを実行して、必要な Linux パッケージ バイナリをインストールします。このバイナリがまだインストールされていない可能性があります。
$ 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 screen
SDK を設定する
この Codelab を続けるには、Espressif SDK(Espressif IoT 開発フレームワークまたは「ESP-IDF」)が必要です。
- ESP-IDF を格納するディレクトリを作成します。
$ mkdir ~/esp-idf_tools
- GitHub にあるこのディレクトリに ESP-IDF のクローンを作成します。
$ cd ~/esp-idf_tools $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
- ツールチェーンのインストールを完了します。
$ cd ./esp-idf $ ./install.sh $ cd ~/
Matter SDK をセットアップする
- オープンソースの Matter リポジトリのクローンを作成します。
$ git clone https://github.com/project-chip/connectedhomeip.git $ cd ./connectedhomeip $ git fetch origin v1.0-branch $ git checkout FETCH_HEAD
- リポジトリのサブモジュールを取得します。
$ ./scripts/checkout_submodules.py --shallow --platform esp32
- Matter 開発環境をブートストラップします。
$ source ./scripts/bootstrap.sh
3. Google Home デベロッパー コンソール
Google Home Developer Console は、Matter と Google Home の統合を管理するウェブ アプリケーションです。
Connectivity Standards Alliance(アライアンス)の Matter 認定に合格した Matter デバイスは、Google Home エコシステムで使用できます。認定を受けていない開発中のデバイスは、一定の条件下で Google Home エコシステムでコミッショニングできます。詳しくは、ペア設定の制限をご覧ください。
デベロッパー プロジェクトを作成する
まず、Google Home デベロッパー コンソールに移動します。
- [プロジェクトの作成] をクリックします。
- 一意のプロジェクト名を入力し、[プロジェクトを作成] をクリックします。
- [+ 統合を追加] をクリックすると、[Matter のリソース] 画面が表示され、Matter の開発ドキュメントや一部のツールを確認できます。
- 続行する準備ができたら、[Next: Develop] をクリックします。[Matter checklist] ページが表示されます。
- [Next: Setup] をクリックします。
- [設定] ページで製品名を入力します。
- [デバイスの種類を選択] をクリックし、プルダウン メニューからデバイスの種類(この場合は
Light
)を選択します。 - [Vendor ID (VID)] で [Test VID] を選択し、[Test VID] プルダウン メニューから 0xFFF1 を選択します。[商品 ID(PID)] に「0x8000」と入力し、[保存して続行してから、表示されるページで [保存] をクリックします。以下の Codelab のステップでは、正確な VID/PID 値を使用します。
- [Matter の統合] の下に統合した項目が表示されます。
- ハブを再起動して、最新の Matter 統合プロジェクト設定が受信されることを確認します。VID または PID を後で変更する必要がある場合は、変更を有効にするためにプロジェクトを保存した後に再起動する必要があります。再起動の詳しい手順については、Google Nest デバイスまたは Google Wifi デバイスを再起動するを参照してください。
4. デバイスをビルドする
Matter のサンプルはすべて、GitHub リポジトリの example フォルダに保存されています。いくつかのサンプルを利用できますが、この Codelab では主に lighting-app を使用します。
この例は、Google Home でオン / オフライトとして表示され、オン / オフのコマンドに反応するシンプルなデバイスです。実際の照明を制御する方法については、この Codelab の対象外です。
ビルドを構成する
- Matter SDK を設定し、Matter ビルド環境を有効にします。
$ cd ~/esp-idf_tools/esp-idf $ source export.sh $ cd ~/connectedhomeip $ source ./scripts/activate.sh
- ビルドプロセスを高速化する Ccache を有効にします。
$ export IDF_CCACHE_ENABLE=1
lighting-app
ESP32 ビルド ディレクトリに移動し、ターゲット アーキテクチャを設定します。$ cd ./examples/lighting-app/esp32 $ idf.py set-target esp32
- 構成ユーティリティを実行します。
$ idf.py menuconfig
- [
Demo -> Device Type
] を選択し、[Device Type
] をESP32-DevKitC
に設定します。 - 左矢印キーを押して最上位のメニューに戻ります。
- [
Component config --->
] を選択します。 - [
CHIP Device Layer --->
] を選択します。 - [
Device Identification Options --->
] を選択します。 Vendor ID
を、アライアンスが割り当てた VID またはテスト VID に設定します。Product ID
を、Google Home Developer Console で Matter の統合で設定した PID に設定します。- S キーを押して保存します。
- Return キーを押して、設定が保存されるデフォルトのパスをそのまま使用します。
- Return キーを押して、保存確認ダイアログを閉じます。
- Q キーを押して構成ユーティリティを終了します。
- 構成ユーティリティを実行します。
ビルドを実行する
ビルド スクリプトを呼び出します。
idf.py build
ビルドはエラーなしで完了するはずです。
デバイスをプログラムする
- USB ケーブルを使用してデベロッパー ボードをパソコンに接続します。
- デバイス上の以前のファームウェアを削除します(パソコンに接続されているデベロッパー ボードが 1 つだけの場合は、
-p {device}
オプションを省略して構いません)。デバイスは自動的に検出されます。idf.py -p {device} erase-flash
- 次のコマンドで新しいアプリケーションをデベロッパー ボードにコピーします。
idf.py -p {device} flash
フラッシュ オプションについて詳しくは、Espressif esptool.py
のドキュメント ページをご覧ください。
5. デバイスに接続する
- ターミナル ウィンドウを開きます。
- 現在のディレクトリをメモし、GNU
screen
を使用して新しい Matter デバイスに接続します。$ screen -L {device} 115200
- 空白のコンソールが表示されたら、[RESET] ボタンを押してデバイスの起動プロセスを開始します。
6. デバイスをコミッショニングする
注: この手順は、Google Home Console ですでにプロジェクトをセットアップしている場合にのみ有効です。
Google Nest Hub
Matter ファブリックでデバイスをコミッショニングするには、ハブが必要です。Google Nest Hub(第 2 世代)などの Google Nest デバイスです。Matter をサポートし、Thread 対応デバイスのボーダー ルーターとして、また、スマートホーム インテントをルーティングするためのローカル フルフィルメント パスとして機能します。
Matter に対応しているハブについては、こちらのリストをご覧ください。
試運転プロセスを開始する前に、以下の点をご確認ください。
- ハブは、Google Home コンソールでのログインに使用した Google アカウントとペア設定されています。
- ハブが、Virtual Matter デバイスの実行に使用しているパソコンと同じ Wi-Fi ネットワークに接続されていること。
- ハブが、Google Home アプリで使用しているのと同じ構造であること。(Google Home Graph の「家」はストラクチャを表します)。
デバイスをペア設定する
ESP32 ペア設定手順に沿って、デバイスをペア設定します。
注: M5STACK を使用している場合、書き込み後も画面が空白のままであるため、コンソールに表示される URL を使用して QR コードを表示する必要があります。または、手動でペア設定コードを入力することもできます。
QR コードの URL を示すコンソール出力の例:
I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]
トラブルシューティング
コミッショニングが失敗する
- Google Home コンソールで、プロジェクトが VID と PID の組み合わせが正しいものを作成したことを確認します。
- ビルド設定に正しい VID と PID が入力されていることを確認します。
- ビルド構成で正しい
Device Type
を選択していることを確認してください。
その他のトラブルシューティングのヒントについては、Matter のトラブルシューティングのページをご覧ください。
7. デバイスを操作する
Matter 対応デバイスが正常にコミッショニングされ、Google Home アプリに電球として表示されたら、Google アシスタント、Google Home アプリ、または VS Code 用 Google Home 拡張機能の Google アシスタント シミュレータを使用してデバイスを操作してみてください。
Google アシスタント
スマートフォンやハブの Google アシスタントを使用して、「OK Google, ライトを切り替えて」などの音声コマンドでデバイスの状態を切り替えることができます。
その他のコマンドの例については、Google Home アプリに追加されたスマートホーム デバイスを操作するの音声コマンドでスマートホーム デバイスを操作するを参照してください。
Google Home アプリ
Google Home アプリに表示される電球アイコンの横にある「オン」と「オフ」のラベルをタップします。
詳しくは、Google Home アプリでデバイスを操作するを参照してください。
Google アシスタント シミュレータ
Google Home 拡張機能 for VS Code では、Google アシスタント シミュレータを使用して、チャット形式のインターフェースからデバイスに音声を送信できます。
8. 完了
最初の Matter デバイスの作成とコミッショニングが完了しました。うまくできました。
この Codelab では、以下について学びました。
- 要件から動作状態までの Matter 開発環境をインストールします。
- Matter デバイスをビルドして実行します。
- Google Home からデバイスをコミッショニングして操作します。
Matter について詳しくは、以下の参考資料をご覧ください。
- Google Home の Matter Primer: Matter プロトコルの重要なコンセプトと原則について学びます。
- Connected Standard Alliance が公開している Matter の仕様、Matter デバイス ライブラリ、Matter アプリケーション クラスタ ライブラリ。
- Matter GitHub リポジトリ。