Watchdog timer?

Every once in a while I will notice that my imp is not responding. I get the dreaded log:

Power state: online=>offline

Not sure what is causing this (potentially a bug with my code), but it is a bummer, because now I have to go manually power up/down my imp (and it isn’t in a location I have easy access).

First, is there a better way to debug such things? Also, is there some watchdog timer which can reset it if it doesn’t respond after X amount of time?

There’s a thread about this here http://forums.electricimp.com/discussion/comment/2972#Comment_2972

Summary:

  • The issue is with devices that do not run squirrel regularly (eg: input only devices that are not getting sent data).
  • This is fixed for future releases, but it can be worked around now with a watchdog server.log() every now and then (every 30 mins works in my tests).
  • We’re still investigating some corner cases to see if more bugs remain. Our test farm has not had issues though.

I don’t think my device fits in this category. It receives UART data at least every minute (update of time, I believe). There must be something else going on (and it isn’t an infinite loop, my code has been MUCH simplified.

Also, it worked for several weeks, then stopped working. Now will not stay online for more then an hour. Maybe something is wonky with my Wifi network. Would that knock things off permanently?

I have a device that is 24/7 since October last year. I have been through code revisions of course. The device is only receiving UART information and passing it back to the planner and to COSM. For the most part the device is very reliable but just a few times, 3? it has gone offline without apparent cause and has required a power cycle. I am using a sparkfun Arduino shield.

The last occurrence was 2013-01-29 around 21:44 central time

I added a planner message to tell me the free memory periodically and I will watch that. On average the Imp gets UART data in 3.5 times per minute in my setup and total 5000 small UART messages per day.

I have checked out the Shield and noticed it uses a regulator with an unused shut-down pin. I am considering connecting this pin in a future spin of my design. I can use the Arduino to force a power cycle by turning off the regulator for a short time. Of course i have to hack the board a little bit to make it work. the Arduino, of course would need to have a way to determine when/if to do a power cycle, or else I could try setting this up to occur once or twice per day.

If you wanted to force a reboot of the imp, the best way is to do a server.sleepfor(5) - this will make it go to sleep and then reboot after 5 seconds.

Obviously it needs to be working for that, but if you’re trying to be preventative then it’s an option… not that it should be required!

I pulled a NES, took the IMP out of the april board, blew on it, did a dance, put it back in again and it has been stable. Not sure what is going on.

@cnr1089 which dance did you use? :wink:

Please god, don’t let it be gangnamstyle!

What ever dance was in style circa 1985 when you needed to blow the Nintendo cartridge to get it to work (ok, maybe that didn’t require a dance, but felt like it). Btw, my device went offline last night (I now get a push to my phone when my imp doesn’t check in after 5 minutes, last night I lost it around 2:45 am EST).

@cnr1089: please PM me the MAC address so I can check server logs.

I am having a similar symptom (unexpected Power state: online=>offline).
I will change my deepsleep timeout to maximum 30 minutes per Hugo’s suggestion.
I am seeing this on MAC is 0c2a6900036b

I previously suspected poor power supply on my end but I have switched back to April board supplied by USB and still see the symptom.