My core is installed in a location with poor WiFi range (I’ve already ordered a new antenna) therefore sometimes it loses the WiFi connection and starts blinking green.
That is ok, but there are two problems:
- If it’s been blinking green for a while (hours) it won’t recover by itself, even after I restore the wifi signal, so I need to do a manual reset. I call that the green blinking of death.
- During that whole time, it won’t run my code.
My code needs to always be running, even when the network is offline / unreachable / poor range / whatever. A few seconds or even a minute of blinking green is acceptable, but after that it needs to timeout and get back to my code.
I see there are some very long threads on the topic, but they are quite old.
What is the current state of the art? What are the guidelines for making sure my code is always running? or at least never blocked for more than a few seconds or a minute.
What is the recommended SYSTEM_MODE to get reliability in the face of CC3000 or connectivity issues? Is there some example application code to achieve just that?
I mean, if I use semi-automatic or manual mode, will Spark.connect() timeout and get back to my code if it cannot connect to WiFi? Should I set up an interrupt to call Spark.disconnect() and make it do so? In semi-automatic mode, what happens when it loses WiFi? Does it try to connect again by itself, or does it wait for me to call connect() again?
I’ll make a few tests, but I’d like to get some info on the current state of things.
I’m using an old core from June 14, so I just performed all the updates (deep_update_2014_06 and flash --usb cc3000). In a few days I’ll know if that solves these issues. I’ve also ordered a couple of Photons. Are they more reliable in this regard?
I mean, the whole point of having an embedded controller is that it never fails. If it locks up and stops running user code, that’s quite a problem!