AWS IoT规则导致空Payload

时间:2016-03-13 19:36:08

标签: amazon-web-services mqtt aws-iot

我的气象站正在通过MQTT将其状态发布到AWS IoT。

消息已发布到主题 $aws/things/my-weather-station-001/shadow/update看起来像这样:

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

收到消息后,我创建了一条规则,将其存储在AWS DynamoDB中,规则选择语句为:

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

当这种情况正常时,我正在发送包含state.reported字段的邮件。

但有时会向主题$aws/things/weather-station-0001/shadow/update发送"控制"消息告诉设备打开LED或其他部分。这些消息通常由应用或控制服务器发送,看起来像通知reported字段而不是desired

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

因此,当这些消息到达时,它们仍然由规则处理并到达具有{}空载荷的DynamoDb表。

有没有办法强制规则忽略不包含state.reported元素的消息?

1 个答案:

答案 0 :(得分:1)

您可以在SQL语句中添加where子句。尝试

SELECT state.reported.* FROM $aws/things/+/shadow/update/accepted WHERE state.reported <> ''