Added time synchronization again

This commit is contained in:
ollo 2016-06-19 00:30:09 +02:00
parent 6874d1545b
commit 7140717696
2 changed files with 81 additions and 72 deletions

147
main.lua
View File

@ -1,14 +1,18 @@
-- Main Module -- Main Module
function startSetupMode()
tmr.stop(0) function mydofile(mod)
tmr.stop(1)
-- start the webserver module
mod="webserver"
if (file.open(mod .. ".lua")) then if (file.open(mod .. ".lua")) then
dofile( mod .. ".lua") dofile( mod .. ".lua")
else else
dofile(mod .. ".lc") dofile(mod .. ".lc")
end end
end
function startSetupMode()
tmr.stop(0)
tmr.stop(1)
-- start the webserver module
mydofile("webserver")
wifi.setmode(wifi.SOFTAP) wifi.setmode(wifi.SOFTAP)
cfg={} cfg={}
@ -20,20 +24,6 @@ function startSetupMode()
startWebServer() startWebServer()
end end
print("Solving dependencies")
dependModules = { "timecore" , "wordclock", "displayword" }
for _,mod in pairs(dependModules) do
print("Loading " .. mod)
if (file.open(mod .. ".lua")) then
dofile( mod .. ".lua")
else
dofile(mod .. ".lc")
end
end
ledPin=4
-- Color is defined as GREEN, RED, BLUE
color=string.char(0,0,250)
function syncTimeFromInternet() function syncTimeFromInternet()
--ptbtime1.ptb.de --ptbtime1.ptb.de
@ -47,66 +37,85 @@ function syncTimeFromInternet()
) )
end end
connect_counter=0 function normalOperation()
-- Wait to be connect to the WiFi access point. ledPin=4
tmr.alarm(0, 500, 1, function() -- Color is defined as GREEN, RED, BLUE
connect_counter=connect_counter+1 color=string.char(0,0,250)
if wifi.sta.status() ~= 5 then
print("Connecting to AP...")
if (connect_counter % 2 == 0) then
ws2812.write(ledPin, string.char(255,0,0):rep(114))
else
ws2812.write(ledPin, string.char(0,0,0):rep(114))
end
else
tmr.stop(0)
print('IP: ',wifi.sta.getip())
print("Start webserver...") connect_counter=0
tmr.alarm(2, 2000, 0 ,function() -- Wait to be connect to the WiFi access point.
dofile("webserver.lua") tmr.alarm(0, 500, 1, function()
startWebServer() connect_counter=connect_counter+1
if wifi.sta.status() ~= 5 then
print("Connecting to AP...")
if (connect_counter % 2 == 0) then
ws2812.write(ledPin, string.char(255,0,0):rep(114))
else
ws2812.write(ledPin, string.char(0,0,0):rep(114))
end
else
tmr.stop(0)
print('IP: ',wifi.sta.getip())
tmr.alarm(2, 500, 0 ,function()
syncTimeFromInternet()
end)
print("Start webserver...")
tmr.alarm(3, 2000, 0 ,function()
mydofile("webserver")
startWebServer()
end)
end
-- when no wifi available, open an accesspoint and ask the user
if (connect_counter == 300) then -- 300 is 30 sec in 100ms cycle
startSetupmode()
end
end) end)
tmr.alarm(1, 15000, 1 ,function()
sec, usec = rtctime.get()
-- Include the timezone
sec = sec + (timezoneoffset * 3600)
end time = getTime(sec, timezoneoffset)
-- when no wifi available, open an accesspoint and ask the user print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second)
if (connect_counter == 300) then -- 300 is 30 sec in 100ms cycle words = display_timestat(time.hour, time.minute)
startSetupmode() ledBuf = generateLEDs(words, color)
end -- Write the buffer to the LEDs
end) ws2812.write(ledPin, ledBuf)
tmr.alarm(1, 15000, 1 ,function() -- Used for debugging
sec, usec = rtctime.get() if (clockdebug ~= nil) then
-- Include the timezone for key,value in pairs(words) do
sec = sec + (timezoneoffset * 3600) if (value > 0) then
print(key,value)
time = getTime(sec, timezoneoffset) end
print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second) end
words = display_timestat(time.hour, time.minute)
ledBuf = generateLEDs(words, color)
-- Write the buffer to the LEDs
ws2812.write(ledPin, ledBuf)
-- Used for debugging
if (clockdebug ~= nil) then
for key,value in pairs(words) do
if (value > 0) then
print(key,value)
end
end end
end -- cleanup
-- cleanup ledBuf=nil
ledBuf=nil words=nil
words=nil time=nil
time=nil collectgarbage()
collectgarbage() end)
end) end
-- Logic
if ( file.open("config.lua") ) then if ( file.open("config.lua") ) then
--- Normal operation
print("Solving dependencies")
dependModules = { "timecore" , "wordclock", "displayword" }
for _,mod in pairs(dependModules) do
print("Loading " .. mod)
mydofile(mod)
end
wifi.setmode(wifi.STATION) wifi.setmode(wifi.STATION)
dofile("config.lua") dofile("config.lua")
normalOperation()
else else
-- Logic for inital setup
startSetupMode() startSetupMode()
end end