Thingspeak Talkback Idempotency issue

I use this method to update channels and execute Talkback: https://www.mathworks.com/help/thingspeak/writedataandexecutetalkbackcommand.html
Most of the time this works great, but once and and a while I do not recieve a response from the http Post. This is more than likley due to a weak cellular connection. When this happens, I redo the http Post and usually get a server response the second time. The problem is, the talkback was already executed on the first try that was not recieved. That means the second try does not contain the Talkback. Any ideas on how to overcome this issue?

 采纳的回答

One possible solution, though possibly expensive in terms of bytes would be to read the command - instead of executing. Then when once you get the command, send the execute command to remove the old from the list but ignore the response.
The get command requires the talkback ID, but you could get all commands and read the last one.

4 个评论

Thank you. I believe this would work, but as you said, too many bytes.
Can you think of any TCP socket settings that would help ensure I get the response? From my very basic understanding of TCP sockets, I should be able to eventually get the response with enough time. Maybe the http server is closing after so many seconds?
I have simulated my issue using Postman and software that simulates a crippled connection. Fields updated, but http response is never recieved.
Modem: Ublox SARA R410m
MCU: Arduino mega
My sketch does all of the communication with the modem, so I am not using any libraries.
This is probably a long shot, but I'll ask anyway. If I give you my channel ID, are there any logs available on thingspeak's end?
I am going to move away from Talkback, and instead use an extra channel field to send commands to the device. I will use this method: https://www.mathworks.com/help/thingspeak/readlastfieldentry.html while the socket is still open after updating fields. It will certainly use more data, but at least I won't have to re-open the socket. Also I will be able to guarantee command delivery.
Thank you for your help and idea.

请先登录,再进行评论。

更多回答(1 个)

Vinod
Vinod 2021-4-19
Out of curiosity, are you using talkbacks as a mechanism for 2 devices to synchronize values/state? If so, rather than a polling model, perhaps you can consider using MQTT publish and subscribe to a topic that is one of the fields on your channel?

1 个评论

I am using talkbacks as commands from a human. I have considered Mqtt, but I am not quite sold on it yet.
As far as I know thingspeak mqtt only provides Qos 0. In my mind, I would have some of the same issues. Although, I could probably update more frequently because of the data savings.

请先登录,再进行评论。

社区

更多回答在  ThingSpeak Community

类别

帮助中心File Exchange 中查找有关 Read Data from Channel 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by