Duplicate MQTT messages being received at DynamoDB

0

So I have some sensors that are sending MQTT data using the IOT Core to DynamoDB. However I note that there are always 2 messages(duplicates). I am using Select for the topic, set up a Rule as was needed,etc. ITs all working fine, except for the duplicates. I looked through the questions but didn't find an answer. Any suggestion to find the root cause appreciated. Regards

6/11/22 additional data Some additional info might be useful so I have provided it here.

Rule query statement The source of the messages you want to process with this rule.

Extract below.............

SELECT state.reported.value as state_reported_value FROM '#' Using SQL version 2016-03-23 Actions Actions are what happens when a rule is triggered.

Insert a message into a DynamoDB table

Extract end.................

Hope this helps in directing me. Regards

2 個答案
0
已接受的答案

Hi fixingthingsguy. The issue is likely related to using a wildcard for the topic in the FROM statement of the rule. The state.reported.value property could be found in the message of more than one topic. Even amongst shadow topics and shadow documents.

In this case, it will likely appear in the shadow document for both the /update topic when the device publishes the new value and in the shadow document of the /updated/accepted topic when IoT Core responds. You probably want to change the FROM statement to use $aws/things/+/shadow/update if you're using the Classic shadow or $aws/things/+/shadow/name/<shadowName>/update if you're using a named shadow.

profile pictureAWS
專家
Greg_B
已回答 2 年前
0

Greg_B. Thanks very much. I've been wracking my brains on this one. I just tested using your suggestion and the duplicates are not occurring. So for any future user who sees the same problem, here's the before and after SELECT using Classic Shadow. BEFORE: SELECT state.reported.value as state_reported_value FROM '#' AFTER Greg_B's suggestion: SELECT state.reported.value as state_reported_value FROM '$aws/things/+/shadow/update'

已回答 2 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南