我的气象站正在通过 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
元素的消息?