Slide 1

Slide 1 text

Matter開発環境をざっくり眺める
 2023年7月19日 Nature Matter Kaigi Nature 井田健太


Slide 2

Slide 2 text

- 井田健太 @ciniml - Firmware Engineer - Remo nanoのファームウェアや 工場向けツールを書いてます 自己紹介
 #NatureMatter

Slide 3

Slide 3 text

Matter対応デバイス開発を始めるには ● Matterの規格書を読む ○ Matter 1.1 (May 17, 2023) ■ Core Spec - 911ページ ■ Device Library Spec - 91ページ ■ Application Library Spec - 358ページ ○ 結構多い… ● Matterのプロトコル・スタックを実装するのは大変 ○ 暗号化セッション確立のシーケンス難しい… ● 基本的には既存のMatterスタック実装を使う #NatureMatter

Slide 4

Slide 4 text

Matter実装(1/6) ● GitHubの project-chip organization以下にいろいろある ○ CSAが管理しているorganization ○ https://github.com/project-chip/ ○ アイコンが自動生成のままだがホンモノ (CSAのロゴにしてほしい) #NatureMatter

Slide 5

Slide 5 text

Matter実装(2/6) - connectedhomeip ● https://github.com/project-chip/connectedhomeip ● CSA公式のMatterプロトコルのリファレンス実装 ○ リファレンス実装、だいじ。 ● 各種プラットフォーム向け実装あり ○ Linux, ESP32, nRF52等 ● C++で書かれている ● Matterで必要なプロトコルの各階層を一通り実装 ● デバイスおよびコントローラ対応 ● 認証試験用ツールの実装にも使われている https://github.com/project-chip/connectedhomeip/raw/m aster/docs/images/Matter_Layered_Arch.png #NatureMatter

Slide 6

Slide 6 text

Matter実装(3/6) - esp-matter ● https://github.com/espressif/esp-matter ● ESP32シリーズ向けにconnectedhomeipをポーティングしたもの ○ ESP32: Espressifの無線機能付きMCU ● ESP32向けの実装 ○ NVS(不揮発メモリ) ドライバの実装 ■ FabricやNOC等の情報の保存 ■ デバイス固有情報の読み出し ■ DACの管理 ● さらにesp-matter固有のCライクなAPIでラップされている ○ ESP-IDFはCでの開発をサポートしているので、そのため? ● Remo nanoのファームウェアでも使用 #NatureMatter

Slide 7

Slide 7 text

Matter実装(4/6) - nRF Connect SDK ● https://www.nordicsemi.com/Products/Development-software/nrf-connect-sdk ● NordicのnRFシリーズ向けのファームウェア開発用SDK ○ nRF52, 53, 70, 91等 ● nRFシリーズ向けにconnectedhomeipをポーティングしたものが含まれる ○ Nordicのfork版connectedhomeip https://github.com/nrfconnect/sdk-connectedhomeip ○ Zephyr RTOS対応などが追加されている ● まだ使ったことがないので、消費電力等どんな感じなのか気になる ○ nRF52, 53だとThreadをつかうことになる? #NatureMatter

Slide 8

Slide 8 text

Matter実装(5/6) - matter-rs ● MatterプロトコルスタックのRust実装 ○ https://github.com/project-chip/matter-rs ● まだ未完成 ○ project-chip以下にあるけど、個人プロジェクトっぽい状態に見える ● 簡単なデバイスの実装は動いている ○ コントローラ実装はまだ手が付けられていない ● 現行実装はRustの `std` 環境を要求する ○ 組込み環境は `no_std` が一般的 (といいつつESP32はstdがあるけど) ● `no_std` 対応が進められている ● (connectedhomeipのビルド重いのでこっち開発すすむといいな…) #NatureMatter

Slide 9

Slide 9 text

Matter実装(6/6) - matter.js ● MatterプロトコルスタックのTypeScript実装 ○ https://github.com/project-chip/matter.js ● まだ未完成だがmatter-rsよりは活発そうに見える ● matter.jsをつかったコントローラやデバイスの実装として matternodeやmatter-node.jsがある ● 成熟すれば、Linux上でのMatter実装の候補の一つとなりそう #NatureMatter

Slide 10

Slide 10 text

余談:Matterのデバッグ ● 通信のデバッグと言えばWireshark ○ https://gitlab.com/wireshark/wireshark ● 基本的なMatterのパケット解析 ● 2023/4/21にマージされたので Ubuntu等では自前でビルドする必要アリ ● Message Format, Protocol Formatの 解析まで対応 ● OpCode毎のパラメータ解析はまだ ● 暗号化フレームのデコードもなし #NatureMatter

Slide 11

Slide 11 text

Matter実装まとめ 項目 connectedhomeip esp-matter nRF Connect SDK matter-rs matter.js 成熟度 実用 実用 実用 実験 実験 プラットフォー ム Linux, MacOS, 各 種MCU ESP32系 nRF系 Zephyr RTOS ほぼ任意? Nodeが 動く環境 言語 C++ C/C++ C++ Rust Type Script MCU向け可 はい はい はい はい いいえ? #NatureMatter

Slide 12

Slide 12 text

まとめ ● connectedhomeipはサクッとデバイス作る分には便利 ○ 各デバイスベンダーのSDK向けのポーティングを使うだけ ○ on/off cluster実装デバイスとかはすぐ作れる ● 他言語による実装はまだ発展途上 ○ matter-rs: デバイス実装の一部が動く段階. コントローラ未実装 ○ matter.js: 結構すすんでそう. nodeを動かせるならアリかも ● Wiresharkをビルドしておくと良い #NatureMatter

Slide 13

Slide 13 text

ご清聴ありがとうございました