This weekend I’ve been testing one of my ESP-12 module for more than just a few minutes; more like a few hours. Just to see how ‘robust’ the ESP8266 actually is. The story about ‘zombie mode‘, where the module didn’t restart after the deep sleep period had ended, made me curious whether the ESP8266 was stable enough (to use at all).
So I created these 2 scripts to make it do something useful for a change:
FileToExecute="gettemp.lua" l = file.list(); for k,v in pairs(l) do if k == FileToExecute then print("*** You've got 5 sec to stop timer 0 ***") tmr.alarm(0, 5000, 0, function() print("Executing ".. FileToExecute) dofile(FileToExecute) end) end end
require('ds18b20') serv_ip = '192.168.10.168' serv_port = 8001 gpio4 = 2 interval = 20000000 ds18b20.setup(gpio4) function getTemp() temp = ds18b20.read() conn = net.createConnection(net.TCP, 0) conn:on("connection", function(socket) socket:send(""..node.chipid().." "..tries.." "..temp.."\r") end) conn:on("sent",function(conn) conn:close() end) conn:on("disconnection", function(conn) node.dsleep(interval-tmr.now(), 0) end) conn:connect(serv_port, serv_ip) end function connect() tries = tries + 1 wifi_ip = wifi.sta.getip() if wifi_ip == nil then if tries < 5 then tmr.alarm(0, 1000, 0, connect) else node.dsleep(interval-tmr.now()) end else getTemp() end end tries = 0 connect()
Nothing spectacular – it reads a DS18B20 sensor, sends the temperature and some other data to a NodeJS TCP server, goes to deep sleep and wakes up 20 seconds after the previous wake-up, so that the module does this 180 times per hour. It has been running since Friday night.
But then I found another interesting post about deep sleep and interrupts. And if my interpretation is right, this could be what I’ve been looking for – I just had to try it out:
You can easily esp8266 wake from a deep sleep. Just bring on to the RST short negative pulse. I use it.
Well…it works! (on a ESP-12 that is, haven’t tested any other model).
Whenever the black wire at the bottom of picture makes contact with the RST pin and effectively pulling it to GND, the ESP8266 wakes up – this needs further research! 🙂
For now, I resumed the reliability test for another night.