1. はじめに
Matter は、スマート デバイスの開発に大きな可能性をもたらす接続プロトコルです。この Codelab では、最初の Matter デバイスを作成します。Matter について詳しくは、Google Home Developer Center: Matter または Connectivity Standards Alliance のウェブサイトをご覧ください。
学習内容
- 実機を Matter と統合する方法。
- Google Home で Matter デバイスをコミッショニングして制御する方法。
必要なもの
- ハブ。Google Nest Hub(第 2 世代)など、Matter をサポートする Google Nest デバイス。
- Espressif Systems ESP32-DevkitC または ESP32 M5STACK Matter 評価ボード。
- Linux を実行しているパソコン。
- 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 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 デベロッパー コンソールは、Google Home との Matter 統合を管理するウェブ アプリケーションです。
Connectivity Standards Alliance(Alliance)の Matter 認証に合格した Matter デバイスは、Google Home エコシステムで動作します。認証されていない開発中のデバイスは、特定の条件下で Google Home エコシステムでコミッショニングできます。詳しくは、ペア設定の制限をご覧ください。
デベロッパー プロジェクトを作成する
まず、Google Home デベロッパー コンソールに移動します。
- [プロジェクトの作成] をクリックします。
- 一意のプロジェクト名を入力し、[プロジェクトの作成] をクリックします。
![[新しいプロジェクトを作成] ダイアログ](https://developers.home.google.com/static/codelabs/fragments/images/create-new-project.png?authuser=664441857&hl=ja)
- [+ 統合を追加] をクリックすると、[Matter リソース] 画面が表示されます。この画面では、Matter 開発ドキュメントを表示したり、一部のツールについて確認したりできます。
- 続行する準備ができたら、[次へ: 開発] をクリックします。これにより、[Matter チェックリスト] ページが表示されます。
- [次へ: セットアップ] をクリックします。
- [セットアップ] ページで、サービス名 を入力します。
- [デバイスの種類を選択] をクリックし、プルダウン メニューからデバイスの種類(この場合は
Light)を選択します。 - [Vendor ID(VID)] で [Test VID] を選択し、[Test VID] プルダウン メニューから [0xFFF1] を選択します。[Product ID(PID)] に「0x8000」と入力して [保存して続行] をクリックし、次のページで [保存] をクリックします。これらの VID/PID 値を正確に使用してください。後の Codelab の手順で必要になります。

- [Matter 統合] に統合が表示されます。
- ハブを再起動して、最新の Matter 統合プロジェクト構成がハブに反映されるようにします。後で VID または PID を変更する必要がある場合は、変更を有効にするためにプロジェクトを保存した後に再起動する必要があります。再起動の手順については、Google Nest デバイスまたは Google Wifi デバイスを再起動するをご覧ください。
4. デバイスをビルドする
Matter のすべての例は、GitHub リポジトリの examples フォルダにあります。いくつかのサンプルがありますが、この 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-appESP32 ビルド ディレクトリに移動し、ターゲット アーキテクチャを設定します。$ 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を、Alliance から割り当てられた 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 ファブリックでデバイスをコミッショニングするには、ハブが必要です。これは、Matter をサポートする Google Nest デバイス(Google Nest Hub(第 2 世代)など)で、Thread 対応デバイスのボーダー ルーターと、スマートホーム インテントをルーティングするためのローカル フルフィルメント パスの両方として機能します。
Matter をサポートするハブについては、こちらのリストをご覧ください。
コミッショニング プロセスを開始する前に、次のことを確認してください。
- ハブが、Google Home コンソールへのログインに使用した 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 アプリに表示される電球アイコンの横にある [オン] ラベルと [オフ] ラベルをタップできます。
詳しくは、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 デバイス ライブラリ、Matter アプリケーション クラスタ ライブラリ。
- Matter GitHub リポジトリ。