日記
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
2024-03-09 (土)
* Matterの仕様を眺める
ESP32用のMatterのライブラリを触ってたのだけど、やはりライブラリが大きすぎて、素のESP32だとほかの事が出来ない。そもそもMatterのPASEがまだ良くわかってないので仕様の方も見てみる。
仕様書のダウンロードは無料だけど、メールアドレスと会社名と名前を要求される。登録するとメールで送られてくる。ただ、登録しなくても、仕様自体は検索すればたくさん出てくる。例えば これ とか。
PASEでWiFiの設定するだけでも、通信のためにBLEの上にTCPもどきのBTPを実装して、そのうえでAESで暗号化されたMatterのセッションを実装して、Matter TLVのエンコード・デコードを実装しないといけない。そしてDACはやっぱりECDSAを使うように指定されていた。
ただ、ESP32はハードウェアでAES扱えるし、ECDSAもhttps使うためのTLSライブラリに含まれてるので、実は難しく考えなくても実装できそう?
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くらいしかない。。