Hello, My team is having some issues with intermittent connectivity for sending instructions to the device or getting information back.
Typically we push instructions to the device with a function call via the particle cloud api.
Is there any built-in retry here?
Is there any way for our remote system to know whether the device received the data?
Our current means of handling this is that we’re having the device publish an event with its latest instructions; however, intermittent connectivity means that this packet can get lost, so we’re left with nothing.
Another thing we’ve done do try to make the communication more durable is having the events request information periodically (currently once per minute.)
The order of operations for how we’re achieving this is
a) the device publishes an event
b) the event triggers a webhook to a remote system (uni-directional)
c) the remote system invokes the same function call as above for pushing data
For practical purposes, we can assume that the connection between particle cloud and the remote server will not go down, but both (a) and (c) are subject to connectivity issues.
So, similar to above, is there any for our remote system to know that the RPC happened successfully, and if not, will it retry automatically (and at what rate)?
Another line of reasoning is that we could switch the “get me my data” calls from event->hook->function to event->hook->subscribe to the hook-response. I’ve read that the subscriptions will retry up to 3 times. How frequently do the retries take place? Is there any way for us to know whether the device got the hook-response? (ie, could we potentially set up another integration and kick off another webhook to try again?)
Open to other ideas here! Trying to handle these scenarios is eating a lot of our time.
Just to clarify, when I say “instructions”, I don’t mean that we’re trying to rely completely on remote operation, but rather update the devices parameters by which it operates.