2023/7/19に開催された、Nature Matter KaigiでのLT資料です。 Matterの各種開発環境をざっくり比較しました。
Matter開発環境をざっくり眺める 2023年7月19日Nature Matter KaigiNature 井田健太
View Slide
- 井田健太 @ciniml- Firmware Engineer- Remo nanoのファームウェアや工場向けツールを書いてます自己紹介 #NatureMatter
Matter対応デバイス開発を始めるには● Matterの規格書を読む○ Matter 1.1 (May 17, 2023)■ Core Spec - 911ページ■ Device Library Spec - 91ページ■ Application Library Spec - 358ページ○ 結構多い…● Matterのプロトコル・スタックを実装するのは大変○ 暗号化セッション確立のシーケンス難しい…● 基本的には既存のMatterスタック実装を使う#NatureMatter
Matter実装(1/6)● GitHubの project-chip organization以下にいろいろある○ CSAが管理しているorganization○ https://github.com/project-chip/○ アイコンが自動生成のままだがホンモノ (CSAのロゴにしてほしい)#NatureMatter
Matter実装(2/6) - connectedhomeip● https://github.com/project-chip/connectedhomeip● CSA公式のMatterプロトコルのリファレンス実装○ リファレンス実装、だいじ。● 各種プラットフォーム向け実装あり○ Linux, ESP32, nRF52等● C++で書かれている● Matterで必要なプロトコルの各階層を一通り実装● デバイスおよびコントローラ対応● 認証試験用ツールの実装にも使われているhttps://github.com/project-chip/connectedhomeip/raw/master/docs/images/Matter_Layered_Arch.png#NatureMatter
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
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版connectedhomeiphttps://github.com/nrfconnect/sdk-connectedhomeip○ Zephyr RTOS対応などが追加されている● まだ使ったことがないので、消費電力等どんな感じなのか気になる○ nRF52, 53だとThreadをつかうことになる?#NatureMatter
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
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
余談:Matterのデバッグ● 通信のデバッグと言えばWireshark○ https://gitlab.com/wireshark/wireshark● 基本的なMatterのパケット解析● 2023/4/21にマージされたのでUbuntu等では自前でビルドする必要アリ● Message Format, Protocol Formatの解析まで対応● OpCode毎のパラメータ解析はまだ● 暗号化フレームのデコードもなし#NatureMatter
Matter実装まとめ項目 connectedhomeip esp-matter nRF Connect SDK matter-rs matter.js成熟度 実用 実用 実用 実験 実験プラットフォームLinux, MacOS, 各種MCUESP32系 nRF系Zephyr RTOSほぼ任意? Nodeが動く環境言語 C++ C/C++ C++ Rust Type ScriptMCU向け可 はい はい はい はい いいえ?#NatureMatter
まとめ● connectedhomeipはサクッとデバイス作る分には便利○ 各デバイスベンダーのSDK向けのポーティングを使うだけ○ on/off cluster実装デバイスとかはすぐ作れる● 他言語による実装はまだ発展途上○ matter-rs: デバイス実装の一部が動く段階. コントローラ未実装○ matter.js: 結構すすんでそう. nodeを動かせるならアリかも● Wiresharkをビルドしておくと良い#NatureMatter
ご清聴ありがとうございました