J'ai fait un sacré moment car quand le NodeMCU se réveille d'un dsleep il est toujours vu comme venant d'un hard reset et pas moyen alors de détecter que l'on était en dsleep. Maintenant je sauve un flag dans la rtc-mem et je peux tester ce flag au moment du reset et détecter si je sors du dsleep. Reste encore à mieux faire la détection wifi pour savoir si on arrête le dsleep ou si on le relance
92 lines
2.4 KiB
Lua
92 lines
2.4 KiB
Lua
-- Teste le deep sleep !
|
|
-- s'endore pendant xx secondes après xx secondes
|
|
|
|
-- ATTENTION: il faut connecter la pin 0 à la pin RESET avec une résistance de 1k !
|
|
|
|
print("\n dsleep.lua zf200722.1133 \n")
|
|
|
|
zLED=4
|
|
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
|
|
|
|
function ztime()
|
|
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
|
|
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
|
|
end
|
|
|
|
function dsleep_on()
|
|
print("timer dsleep on...")
|
|
ztmr_SLEEP = tmr.create()
|
|
ztmr_SLEEP:alarm(2*1000, tmr.ALARM_SINGLE, function ()
|
|
print("Je dors...")
|
|
tmr.delay(100*1000)
|
|
-- node.dsleep(4*1000*1000)
|
|
-- print(node.bootreason())
|
|
rtcmem.write32(10, 43690) --flag pour détecter le réveil dsleep
|
|
-- print("le flag est à "..rtcmem.read32(10))
|
|
wifi.setmode(wifi.NULLMODE,true)
|
|
rtctime.dsleep(4*1000*1000)
|
|
end)
|
|
end
|
|
|
|
--[[
|
|
dsleep_on()
|
|
print(node.bootreason())
|
|
print("le flag est à "..rtcmem.read32(10))
|
|
|
|
f= "wifi_info.lua" if file.exists(f) then dofile(f) end
|
|
|
|
function ztime()
|
|
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
|
|
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
|
|
end
|
|
|
|
print(ztime())
|
|
|
|
|
|
]]
|
|
|
|
function dsleep_off()
|
|
print("timer dsleep off...")
|
|
ztmr_SLEEP:unregister()
|
|
end
|
|
|
|
function watch_wifi_on()
|
|
dsleep_on()
|
|
ztmr_watch_wifi_on = tmr.create()
|
|
ztmr_watch_wifi_on:alarm(1*1000, tmr.ALARM_AUTO , function()
|
|
if wifi.sta.getip() == nil then
|
|
-- print("Unconnected... (on)")
|
|
else
|
|
ztmr_watch_wifi_on:stop()
|
|
print("Connected... (on)")
|
|
-- f= "wifi_info.lua" if file.exists(f) then dofile(f) end
|
|
watch_wifi_off()
|
|
end
|
|
end)
|
|
end
|
|
|
|
function watch_wifi_off()
|
|
dsleep_off()
|
|
ztmr_watch_wifi_on:unregister()
|
|
ztmr_watch_wifi_off = tmr.create()
|
|
ztmr_watch_wifi_off:alarm(1*1000, tmr.ALARM_AUTO , function()
|
|
if wifi.sta.getip() == nil then
|
|
ztmr_watch_wifi_off:stop()
|
|
print("Unconnected... (off)")
|
|
watch_wifi_on()
|
|
ztmr_watch_wifi_off:unregister()
|
|
else
|
|
-- print("Connected... (off)")
|
|
xfois = 2
|
|
blink_LED ()
|
|
end
|
|
end)
|
|
end
|
|
|
|
print("Coucou, je suis réveillé...")
|
|
print("Et il est: ")
|
|
ztime()
|
|
|
|
watch_wifi_on()
|
|
|