デバイスシャドウのベストプラクティスを実装しました。
構成
今回使ったデバイスは Wio LTE JP Version という、マイコン+LTEモデムが搭載された、IoTプロトタイプ向けデバイスです。
LTEモデムがついているのでIoTプロダクトに向いているのですが AWS IoT device SDK が対応していません。そのため MQTTS 実装を自力でやる必要があるのですが、そこを SORACOM Beam で肩代わりしています。
SORACOM Beam は以下のような時に使います;
- TLS 実装が面倒、もしくはそもそも TLS が使えないようなデバイス
- 証明書の更新など運用面の考慮
実装
https://gist.github.com/ma2shita/5ed0e066975b3715f0f326bc0513a12d に掲載しています。MIT ライセンスです。
センサーデバイスを D38 に取り付けた想定でサンプルも記載しています。シャドウでは d38
というキーで扱っています。
利用の注意点
- IMPL.; と書いてある4つのポイントがカスタマイズ位置です。
- SORACOM Air メタデータサービスを有効にすると
awsiotcore_thing_name
というキーの値を AWS IoT Core の ThingName として利用します。メタデータサービスが使えない場合は SIM の IMSI が ThingName になります。 - ArduinoJson に依存しまくってます。5.x 系を使っています。
- PubSubClient は公式から fork したライブラリを使っています。これは MQTT のペイロードサイズを大きくしていることと、Wio LTE ライブラリが PubSubClient 2.7 以上では動かないためです。
解説
実装すべき内容3点が実装済みです。
- Reporter
- Updator と Restore
挙動を動画にまとめました。
再接続処理も実装済みです。
こちらも以下のような挙動になります。
あとがき
やっと全部出し切れた。
EoT