1. はじめに
Matter は、スマート デバイスの開発に大きな可能性をもたらす接続プロトコルです。この Codelab では、最初の Matter デバイスを構築します。Matter について詳しくは、Google Home デベロッパー センター: 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 Developer Console は、Google Home との Matter 統合を管理するウェブ アプリケーションです。
Connectivity Standards Alliance(Alliance)の Matter 認証に合格した Matter デバイスは、Google Home エコシステムで動作します。認証されていない開発中のデバイスは、特定の条件下で Google Home エコシステムでコミッショニングできます。詳しくは、ペア設定の制限をご覧ください。
デベロッパー プロジェクトを作成する
まず、Google Home Developer Console にアクセスします。
- [プロジェクトの作成] をクリックします。
- 一意のプロジェクト名を入力し、[プロジェクトを作成] をクリックします。
![[新しいプロジェクトを作成] ダイアログ](https://developers.home.google.com/static/codelabs/fragments/images/create-new-project.png?authuser=4&hl=ja)
- [+ 統合を追加] をクリックすると、Matter リソース画面に移動します。この画面では、Matter 開発ドキュメントを表示したり、一部のツールについて確認したりできます。
- 続行する準備ができたら、[次へ: 開発] をクリックします。Matter チェックリスト ページが表示されます。
- [次へ: 設定] をクリックします。
- [設定] ページで、[プロダクト名] を入力します。
- [デバイスの種類を選択] をクリックし、プルダウン メニューからデバイスの種類(この場合は
Light)を選択します。 - [Vendor ID (VID)] で [Test VID] を選択し、[Test VID] プルダウン メニューから 0xFFF1 を選択します。[Product ID (PID)] に 0x8000 と入力し、[Save & continue] をクリックします。次のページで [Save] をクリックします。これらの 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 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 - コンソールが空白の場合は、リセット ボタンを押してデバイスの起動プロセスを開始します。
6. デバイスをコミッショニングする
注: この手順は、Google Home Developer Console でプロジェクトをすでに設定している場合にのみ成功します。
Google Nest Hub
Matter ファブリックでデバイスをコミッショニングするには、ハブが必要です。これは、Matter をサポートし、Thread 対応デバイスのボーダー ルーターとスマートホーム インテントのルーティングのローカル フルフィルメント パスの両方として機能する Google Nest デバイス(Google Nest Hub(第 2 世代)など)です。
Matter に対応しているハブについては、こちらのリストをご覧ください。
コミッショニング プロセスを開始する前に、次のことを確認してください。
- ハブは、Google Home Console へのログインに使用したのと同じ Google アカウントとペア設定されています。
- ハブが、Virtual Matter Device の実行に使用しているパソコンと同じ 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 Console で正しい 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 の入門。Matter プロトコルの重要なコンセプトと原則について学ぶことができます。
- Connected Standard Alliance が公開する Matter 仕様、Matter デバイス ライブラリ、Matter アプリケーション クラスタ ライブラリ。
- Matter GitHub リポジトリ。