summaryrefslogtreecommitdiff
path: root/wakeup.lua
diff options
context:
space:
mode:
Diffstat (limited to 'wakeup.lua')
-rw-r--r--wakeup.lua46
1 files changed, 40 insertions, 6 deletions
diff --git a/wakeup.lua b/wakeup.lua
index 9239fe1..9b5b6a4 100644
--- a/wakeup.lua
+++ b/wakeup.lua
@@ -61,18 +61,52 @@ function wakeup:sendout (interval, times, after)
end
+function wakeup:now ()
+ local time = rtctime.epoch2cal(rtctime.get())
+ time.year = nil
+ time.sec = nil
+ return time
+end
+
+
+local
+function compare (time, pattern)
+ for key, value in pairs(pattern) do
+ if time[key] ~= value then
+ return false
+ end
+ end
+ return true
+end
+
+
function wakeup:init ()
gpio.write(4, gpio.HIGH)
gpio.mode(4, gpio.OUTPUT)
self.data = magic_packet(self.mac)
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function ()
- gpio.write(4, gpio.LOW)
-
- self:sendout(500, 5, function ()
- wifi.setmode(wifi.NULLMODE, false)
- gpio.write(4, gpio.HIGH)
- end)
+ sntp.sync(
+ self.sntp,
+ function ()
+ if compare(self:now(), self.when) then
+ gpio.write(4, gpio.LOW)
+ self:sendout(500, 5, function ()
+ wifi.setmode(wifi.NULLMODE, false)
+ gpio.write(4, gpio.HIGH)
+ end)
+ else
+ print("Not yet time")
+ wifi.setmode(wifi.NULLMODE, false)
+ tmr.create():alarm(25000, tmr.ALARM_SINGLE, function ()
+ self:run()
+ end)
+ end
+ end,
+ function (code, err)
+ print("SNTP sync failed", code, err)
+ node.restart()
+ end)
end)
end