1

私の測候所は、MQTT を介して AWS IoT にステータスを公開しています。

メッセージはトピックに発行され $aws/things/my-weather-station-001/shadow/update、次のようになります。

{
 "state": {
   "reported": {
      "temperature" : 22,
      "humidity" : 70,
       ....
      "wind" : 234,
      "air" : 345
   }
 }

メッセージを受信したら、AWS DynamoDB に保存するルールを作成しました。ルールの select ステートメントは次のとおりです。

SELECT state.reported.* FROM $aws/things/+/shadow/update/accepted

そして、これがうまくいくと、state.reportedフィールドを含むメッセージを送信しています。

$aws/things/weather-station-0001/shadow/updateただし、デバイスに LED またはその他の部分をオンにするように指示する「制御」メッセージがトピックに送信されることがあります。これらのメッセージは通常、アプリまたは制御サーバーによって送信され、フィールドの代わりに次の通知のように表示されます。reporteddesired

{
 "state": {
   "desired": {
      "led1" : "on",
      "locked" : true
   }
 }

{}したがって、これらのメッセージが到着すると、それらはまだルールによって処理され、空のペイロードで DynamoDb テーブルに到着します。

state.reported要素を含まないメッセージを無視するようにルールを強制する方法はありますか?

4

1 に答える 1