Timer calls replaced

This commit is contained in:
Ollo 2021-01-31 20:22:32 +01:00
parent fc97df71ea
commit f72295e709
4 changed files with 45 additions and 43 deletions

View File

@ -13,7 +13,6 @@ end)
local blacklistfile="init.lua config.lua config.lua.new webpage.html"
function recompileAll()
for i=0,5 do tmr.stop(i) end
-- compile all files
l = file.list();
for k,_ in pairs(l) do
@ -43,9 +42,8 @@ function mydofile(mod)
end
end
tmr.alarm(1, 5000, 0, function()
tmr.stop(2)
local initTimer = tmr.create()
initTimer:register(5000, tmr.ALARM_SINGLE, function (t)
if (
(file.open("main.lua")) or
(file.open("timecore.lua")) or
@ -68,5 +66,7 @@ tmr.alarm(1, 5000, 0, function()
else
print("No Main file found")
end
t:unregister()
end)
initTimer:start()
print("Init file end reached")

View File

@ -1,10 +1,9 @@
-- Main Module
local looptimer = tmr.create()
displayword = {}
function startSetupMode()
tmr.stop(0)
tmr.stop(1)
-- start the webserver module
mydofile("webserver")
@ -112,7 +111,8 @@ function normalOperation()
connect_counter=0
-- Wait to be connect to the WiFi access point.
tmr.alarm(0, 500, 1, function()
local wifitimer = tmr.create()
wifitimer:register(5000, tmr.ALARM_SINGLE, function (t)
connect_counter=connect_counter+1
if wifi.sta.status() ~= 5 then
print(connect_counter .. "/60 Connecting to AP...")
@ -148,7 +148,7 @@ function normalOperation()
ws2812.write(string.char(0,0,0):rep(114))
end
else
tmr.stop(0)
t:unregister()
print('IP: ',wifi.sta.getip())
-- Here the WLAN is found, and something is done
print("Solving dependencies")
@ -158,8 +158,9 @@ function normalOperation()
mydofile(mod)
end
setupCounter=5
tmr.alarm(1, 5000, 1 ,function()
local setupCounter=5
local alive=0
looptimer:register(5000, tmr.ALARM_AUTO, function (lt)
if (setupCounter > 4) then
syncTimeFromInternet()
setupCounter=setupCounter-1
@ -178,17 +179,20 @@ function normalOperation()
displayTime()
end
setupCounter=setupCounter-1
elseif ((alive % 60) == 0) then
-- sync the time every 5 minutes
syncTimeFromInternet()
displayTime()
alive = alive + 1
else
displayTime()
alive = alive + 1
end
collectgarbage()
-- Feed the system watchdog.
tmr.wdclr()
end)
-- sync the time every 5 minutes
tmr.alarm(2, 300003, 1 ,function()
syncTimeFromInternet()
displayTime()
end)
looptimer:start()
end
-- when no wifi available, open an accesspoint and ask the user
@ -196,12 +200,8 @@ function normalOperation()
startSetupMode()
end
end)
wifitimer:start()
end
function stopWordclock()
for i=0,5,1 do tmr.stop(i) end
end
-------------------main program -----------------------------
@ -218,11 +218,12 @@ else
end
----------- button ---------
gpio.mode(3, gpio.INPUT)
btnCounter=0
-- Start the time Thread
tmr.alarm(4, 500, 1 ,function()
local btnCounter=0
-- Start the time Thread handling the button
local btntimer = tmr.create()
btntimer:register(5000, tmr.ALARM_AUTO, function (t)
if (gpio.read(3) == 0) then
tmr.stop(1) -- stop the LED thread
looptimer:unregister()
print("Button pressed " .. tostring(btnCounter))
btnCounter = btnCounter + 5
local ledBuf= string.char(128,0,0):rep(btnCounter) .. string.char(0,0,0):rep(110 - btnCounter)
@ -234,3 +235,4 @@ tmr.alarm(4, 500, 1 ,function()
end
end
end)
btntimer:start()

View File

@ -96,7 +96,9 @@ function registerMqtt()
m=nil
t=nil
mqttConnected = false
for i=0,6,1 do tmr.stop(i) end
if (looptimer ~= nil) then
looptimer:unregister()
end
collectgarbage()
mydofile("telnet")
if (startTelnetServer ~= nil) then
@ -120,14 +122,17 @@ function registerMqtt()
mqttConnected = true
-- subscribe topic with qos = 0
client:subscribe(mqttPrefix .. "/cmd/#", 0)
tmr.alarm(3, 1000, 0, function()
local mytimer = tmr.create()
mytimer:register(1000, tmr.ALARM_SINGLE, function (t)
-- publish a message with data = hello, QoS = 0, retain = 0
client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0)
local red = string.byte(colorBg,2)
local green = string.byte(colorBg,1)
local blue = string.byte(colorBg,3)
client:publish(mqttPrefix .. "/background", tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue), 0, 0)
t:unregister()
end)
mytimer:start()
end,
function(client, reason)
print("failed reason: " .. reason)
@ -147,7 +152,8 @@ function startMqttClient()
end
oldBrightness=0
oldTemp=0
tmr.alarm(5, 5001, 1 ,function()
local mqtttimer = tmr.create()
mqtttimer:register(5001, tmr.ALARM_AUTO, function (t)
if (mqttConnected) then
local temp = nil
if (t ~= nil) then
@ -165,5 +171,6 @@ function startMqttClient()
oldBrightness = briPercent
end
end)
mqtttimer:start()
end
end

View File

@ -130,7 +130,6 @@ end
function stopWordclock()
print("Stop all Wordclock")
-- Stop all
for i=0,5 do tmr.stop(i) end
-- unload all other functions
-- grep function *.lua | grep -v webserver | grep -v init.lua | grep -v main.lua | cut -f 2 -d ':' | grep "^function" | sed "s/function //g" | grep -o "^[a-zA-Z0-9\_]*"
updateColor = nil
@ -159,18 +158,6 @@ function startWebServer()
color=string.char(0,128,0)
end
ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48))
-- Start Time after 3 minute
tmr.alarm(5, 180000, 0 ,function()
dependModules = { "timecore" , "wordclock", "displayword" }
for _,mod in pairs(dependModules) do
print("Loading " .. mod)
mydofile(mod)
end
-- Start the time Thread again
tmr.alarm(1, 20000, 1 ,function()
displayTime()
end)
end)
if (sendPage ~= nil) then
print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...")
-- Load the sendPagewebcontent
@ -285,18 +272,24 @@ function startWebServer()
print("Rename config")
if (file.rename(configFile .. ".new", configFile)) then
print("Successfully")
tmr.alarm(3, 20, 0 ,function()
local mytimer = tmr.create()
mytimer:register(50, tmr.ALARM_SINGLE, function (t)
replaceMap=fillDynamicMap()
replaceMap["$ADDITIONAL_LINE"]="<h2><font color=\"green\">New configuration saved</font></h2>"
print("Send success to client")
sendPage(conn, "webpage.html", replaceMap)
t:unregister()
end)
mytimer:start()
else
tmr.alarm(3, 20, 0 ,function()
local mytimer = tmr.create()
mytimer:register(50, tmr.ALARM_SINGLE, function (t)
replaceMap=fillDynamicMap()
replaceMap["$ADDITIONAL_LINE"]="<h2><font color=\"red\">ERROR</font></h2>"
sendPage(conn, "webpage.html", replaceMap)
t:unregister()
end)
mytimer:start()
end
else
replaceMap=fillDynamicMap()