MQTT プログラミング
MQTT 通信方式
Publisher → Broker(Topic) → Subscriber(IoT rule/Operater)
BrokerとSubscriberは常時接続なので、ほぼリアルタイムでの通信が可能(一方向)
双方向にするには、PublisherとSubscriberを入れ替えて両方実装
SDK実装でpub/subをどう表現するのか?
keepAlive Time は個々の事例による
AWS IoT Core で利用できるQoS
QoS 0 or 1
対応していないが、QoS2もある
確実に1度だけ送信する機能
サンプルアプリ
SDKの中にサンプルがあるので、それを活用する
必ずMQTTを使う必要はない
ニアリアルタイムの双方向通信 = MQTT
データ送信のみ = MQTT or HTTP
コストでの分類
固定回線 = MQTT or HTTP
SIM = メッセージ頻度が高い場合はMQTT
MQTT をポート443で利用できるようになったので、B2Bでも利用可能な可能性が高くなった
IoT Core 活用
アンチパターン
shadowに全センサー共通のtopicを参照するような設計
shadowを使うと有効なケース:結果整合性で同じ状態になってほしい場合
pub/subを使うと有効なケース:メッセージング
ルールエンジンの組み込み関数
thing名の取得方法
- payloadのjsonの中にthins名を入れる
- MQTT接続の際に使ったclientIDをルールエンジンで取得する
- MQTT topicを利用する
ルールエンジン、topicを有効活用することで、皇族のLambdaの処理を軽減することができる