2024-03-06 (水)
* Matterについて少し調べる
自作のデバイスをWiFiに接続するとき、Matterデバイスとして振舞えばスマホで簡単に設定できて便利そうだと思って少し調べてみる。
Matterは色々なものに依存していてドキュメント読んで理解するのは時間かかりそうなので、実装から。
まず、 https://github.com/espressif/esp-matter というESP32でMatterを使うSDKが用意されているのだけど、巨大でビルドするのも面倒。そもそもMatterだけでプログラム用のFlash領域使い切りそうに見えるので、最低限必要なものが何なのか見てみる。
Matterデバイスの挙動は何も知らなかったので、最初に読むのは https://speakerdeck.com/hideakitai/matter-wo-remo-nano-dehazimeyouこれが分かりやすかった。
最低限、BLE上でPASEを実装すればWiFiへの接続ができそう。
Device Attestation Certificateを用意しないといけないっぽいけど、esp-matterを見ると開発用の証明書が用意されている。実装読むとPASEのやりとりのレスポンスを秘密鍵で署名して返さないとだめっぽい。そして、署名がECDSAなので全部実装する場合それだけで面倒。いまどきのIoT機器はTLSで通信するだろうしECDSAとか使えるよねということなのかも。
DACの確認の後、NOCを受け取って、利用できるアクセスポイントの情報などを聞かれて、スマホ側でどこに接続するか選択して、SSIDとパスワードが送られてきそう。
おおよその流れは分かったけど、やりたいことのわりに面倒。
というわけで、自分で実装するのはあきらめておとなしくライブラリ使った方が良さそう。
https://github.com/Yacubane/esp32-arduino-matterplatform.ioから使うにはこのライブラリが一番楽そう。BLEスタックをNimBLEに入れ替えてたりして、省メモリと書いてあるけど、それでも動作中の残りのヒープが100kBくらいしかない。。