こんにちは、Michaelです。
今回は、「AWS IoTルールの基本」の第2回として、MQTTの別トピックにRepublishするルール設定を紹介します。
今回の構成
AWS IoTのトピック「test/pub」にPublishされたメッセージを、トピック「test/sub」に再度Publishさせます。
デバイスからはセンサーデータのみが送信される想定で、機器のClientIdと受信時刻をAWS IoTで付加して「test/sub」にRepublishします。
メッセージソースの設定
メッセージソースには以下のAWS IoT SQLクエリを設定します。
組み込み関数のclientid()でデバイスのClientId、timestamp()でAWS IoT で受信した時刻を取得し、それぞれ「client_id」、「timestamp」として付加します。
1 |
SELECT clientid() AS client_id, timestamp() AS timestamp, * FROM 'test/pub' |
ルールアクションの設定
アクションとして「AWS IoT のトピックにメッセージを再パブリッシュする」を選択します。
設定内容はRepublishする先のトピックのみで、「test/sub」にpublishするように設定をします。
実行結果
MQTT.fxを送信・受信デバイスとしてテストを実行してみます。
ClientIdには「device001」を設定し、Republish先の「test/sub」をSubscribeした状態にしておきます。
Publish先トピックに「test/pub」を設定し、以下のようなセンサーデータのJSONをメッセージとしてPublishをします。
1 2 3 4 5 |
{ "temperature": 26.3, "humidity": 58, "pressure": 994.2 } |
Subscribeしているトピックを確認すると、送信メッセージにメッセージソースで設定した「client_id」、「timestamp」が付加されたメッセージが確認できました。
まとめ
AWS IoTルールでは、AWS IoT SQLで条件設定や出力メッセージの設定ができるため、MQTTの別トピックにRepublishする設定を使うことで、簡単な条件処理であればAWS IoTのみで完結させることができます。
例えば、センサーデータが閾値を超えた場合に機器設定変更のデータを返送用トピックにRepublishするといった形で利用することができます。
次回は、AWS IoTメッセージをS3に保存する設定を紹介します。
お楽しみに!