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 アカウントを使用してハブをセットアップします。
開発環境をセットアップする
Prerequisites
この手順は 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 Development Framework または「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(Alliance)の Matter 認証に合格した Matter デバイスは、Google Home エコシステムで動作します。特定の条件下で、認定されていない開発中のデバイスを Google Home エコシステムでコミッショニングできます。詳しくは、ペア設定の制限をご覧ください。
デベロッパー プロジェクトを作成する
まず、Google Home デベロッパー コンソールに移動します。
- [プロジェクトの管理] ページで、[プロジェクトを作成] をクリックします。
- [スタートガイド] ページで [プロジェクトを作成] をクリックします。
- 一意のプロジェクト名を入力して、[Create new project(新しいプロジェクトを作成)] をクリックします。
- [+ Add integration] をクリックします。[Matter のリソース] 画面が表示されます。この画面で、Matter の開発ドキュメントを確認したり、一部のツールについて確認したりできます。
- 続行する準備ができたら、[Next: Develop] をクリックして、[Matter Checklist] ページを開きます。
- [次へ: 設定] をクリックします。
- [設定] ページで [プロダクト名] を入力します。
- [デバイスタイプを選択] をクリックし、プルダウン メニューからデバイスタイプ(この場合は
Light
)を選択します。 - [Vendor ID(VID)] 欄で、[Test VID] を選択し、[Test VID] プルダウン メニューから 0xFFF1 を選択します。[プロダクト ID(PID)] に「0x8000」と入力して [保存して次へ] をクリックし、次のページで [保存] をクリックします。
- Matter の統合の下に Matter デバイスが 1 つ表示されるようになります。
- ハブを再起動して、最新の Matter 統合プロジェクトの設定を受信していることを確認します。後で VID または PID を変更する必要が生じた場合は、変更を有効にするために、プロジェクトを保存した後に再起動する必要もあります。再起動の手順については、Google Nest デバイスまたは Google Wifi デバイスを再起動するをご覧ください。
4. デバイスをビルドする
Matter 内のすべてのサンプルは、GitHub リポジトリのサンプル フォルダに配置されています。いくつかのサンプルが用意されていますが、この 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 デベロッパー コンソールの 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 デベロッパー コンソールでプロジェクトがすでにセットアップされている場合のみです。
Google Nest Hub
デバイスを Matter ファブリックでコミッショニングするには、ハブが必要です。Google Nest Hub(第 2 世代)などの Google Nest デバイスであり、Matter をサポートし、Thread 対応デバイスのボーダー ルーターとしても、スマートホーム インテントをルーティングするためのローカル フルフィルメント パスとしても機能します。
Matter に対応しているハブについては、こちらのリストをご覧ください。
コミッショニング プロセスを開始する前に、次の点を確認してください。
- ハブは、Google Home Console へのログインに使用した Google アカウントとペア設定されます。
- ハブは、仮想 Matter デバイスの運用に使用しているパソコンと同じ Wi-Fi ネットワーク上にある。
- ハブは、Google Home アプリで使用しているのと同じ構造になっています(Google Home グラフの「家」は構造を表します)。
デバイスをペア設定する
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 アプリに表示された電球アイコンの横にある [ON] ラベルと [OFF] ラベルをタップします。
詳しくは、Google Home アプリでデバイスを操作するを参照してください。
Google アシスタント シミュレータ
VS Code 用 Google Home 拡張機能では、Google アシスタント シミュレータを使用して、チャットのようなインターフェースからデバイスに発話できます。
8. 完了
最初の Matter デバイスの作成とコミッショニングが完了しました。でも使用できます。
この Codelab では、以下について学びました。
- 要件から動作状態まで Matter 開発環境をインストールします。
- Matter デバイスをビルドして実行します。
- Google Home からデバイスをコミッショニングして操作できます。
Matter について詳しくは、以下の参考資料をご覧ください。
- Google Home の Matter Primer。Matter プロトコルの重要なコンセプトと原則を学ぶことができます。
- Connected Standard Alliance が公開している Matter 仕様、Matter Device Library、Matter Application Cluster Library です。
- Matter GitHub リポジトリ。