If you have a Particle Mesh device that is say perfectly stable at a line of sight distance of 300 m, and then it becomes disconnected, presently that device needs to be moved about 200 m closer to the gateway to reconnect. (Take these measurements with a grain of salt.)
Test the (lets call it the MLE) OPENTHREAD_CONFIG_MLE_LINK_REQUEST_MARGIN_MIN which is normally set to a value of 10, why doesn’t Particle try lower values say 7 to 3.
The MLE value of 10 is the difference between the RSSI value and background noise allowed for a device to re-connect.
This value is in the Particle github at https://github.com/particle-iot/openthread/tree/master/src/core inside the file openthread-core-default-config.h at line 1652 a fixed link to the file commit is here
Why test the Particle version of OpenThread with different values?
See this openthread-users group blurb about the RSSI values. Here is a quote from the thread:
The OPENTHREAD_CONFIG_MLE_LINK_REQUEST_MARGIN_MIN configuration represents a tradeoff between link stability and range. Of course, weighing the tradeoff can depend on a variety of factors, including hardware platform and operating environment.
RSSI values are a range: -1 Strong Signal -------> -99 Weak Signal
An MLE was very sensibly set by OpenThread so that for reconnection the Thread only looks at signals from -1 to -89 for perfect (no) background noise and a lower range for really bad background noise. Which makes lots of sense, until you see the RSSI values when working with the Particle Mesh. The best value I could get without Antennae and the 2 devices touching was -19, and that value dropped off dramatically within the first 2 meters. (2 meters between a Xenon and and Argon and my RSSI values could easily be -60)
However my Xenons are perfectly stable with an RSSI value of -98, perhaps the Particle hardware is more stable than what OpenThread was designed to work with!
Anyway, since the Particle Cloud is not Open Sourced (as far as I can tell). I can’t test this information out, so I can’t really help Particle with some of it’s connection issues. (If someone wants to contact me about how to make my own Particle Cloud I would be very interested. and then I could spend hours testing to see if this does help) So this is out of my hands and just a suggestion for Particle to try.
I will post some code when I get it working.