diff --git a/main.lua b/main.lua index 2c28db4..b7ab043 100644 --- a/main.lua +++ b/main.lua @@ -48,6 +48,11 @@ function displayTime() words.briPer=nil end end + local tw=nil + local tcol=nil + if (mqttDispTemp ~= nil) then + tw, tcol = wc.temp(dw, rgbBuffer, invertRows) + end wc = nil collectgarbage() print("wc: " .. tostring(node.heap())) @@ -61,12 +66,9 @@ function displayTime() local c = dw.countChars(words) dw.generateLEDs(rgbBuffer, words, colorBg, color, color1, color2, color3, color4, invertRows, c) end - if (mqttDispTemp ~= nil) then - local tw, tcol = mqttDispTemp(dw, rgbBuffer, invertRows) - if ( (tw ~= nil) and (tcol ~= nil) ) then + if ( (tw ~= nil) and (tcol ~= nil) ) then local c1 = dw.countChars(tw) dw.generateLEDs(rgbBuffer, tw, nil, tcol, nil, nil, nil, nil, invertRows, c1) - end end dw = nil collectgarbage() diff --git a/mqtt.lua b/mqtt.lua index 534a5b5..a8a9c3b 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -3,7 +3,7 @@ local m=nil local mqttConnected = false -- Temp: local t=nil -local dispTemp=nil +dispTemp=nil function handleSingleCommand(client, topic, data) if (data == "ON") then @@ -106,55 +106,6 @@ function reConnectMqtt() end end --- Logic to display Mqtt -function mqttDispTemp(dw, rgbBuffer, invertRows) -if (dispTemp ~= nil) then - -- Values: it, is, 5 minutes, 10 minutes, afer, before, three hour, quarter, dreiviertel, half, s - -- hours: one, one Long, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve - -- Special ones: twenty, clock, minute 1 flag, minute 2 flag, minute 3 flag, minute 4 flag - local ret = { it=0, is=0, m5=0, m10=0, ha=0, hb=0, h3=0, hq=0, h3q=0, half=0, s=0, - h1=0, h1l=0, h2=0, h3=0, h4=0, h5=0, h6=0, h7=0, h8=0, h9=0, h10=0, h11=0, h12=0, - m20=0, cl=0, m1=0, m2=0, m3=0, m4=0 } - - print("Mqtt Display of temperature: " .. tostring(dispTemp) ) - if (dispTemp == 1) or (dispTemp == -1) then - ret.h1=1 - elseif (dispTemp == 2) or (dispTemp == -2) then - ret.h2=1 - elseif (dispTemp == 3) or (dispTemp == -3) then - ret.h3=1 - elseif (dispTemp == 4) or (dispTemp == -4) then - ret.h4=1 - elseif (dispTemp == 5) or (dispTemp == -5) then - ret.h5=1 - elseif (dispTemp == 6) or (dispTemp == -6) then - ret.h6=1 - elseif (dispTemp == 7) or (dispTemp == -7) then - ret.h7=1 - elseif (dispTemp == 8) or (dispTemp == -8) then - ret.h8=1 - elseif (dispTemp == 9) or (dispTemp == -9) then - ret.h9=1 - elseif (dispTemp == 10) or (dispTemp == -10) then - ret.h10=1 - elseif (dispTemp == 11) or (dispTemp == -11) then - ret.h11=1 - elseif (dispTemp == 12) or (dispTemp == -12) then - ret.h12=1 - else - -- over or under temperature - end - local col=string.char(128,0,0) -- red; positive degrees - if (dispTemp < 0) then - col=string.char(0,0,128) -- blue; negative degrees - end - return ret, col -else - return nil, nil -end - -end - -- MQTT extension function registerMqtt() m = mqtt.Client("wordclock", 120) @@ -235,12 +186,15 @@ function startMqttClient() if (mqttServer ~= nil and mqttPrefix ~= nil) then registerMqtt() print "Started MQTT client" - if (file.open("ds18b20_diet.lc")) then - t=require("ds18b20_diet") - t.setup(2) -- GPIO4 - readTemp() -- read once, to setup chip - print "Setup temperature" - end + local dstimer = tmr.create() + dstimer:register(123, tmr.ALARM_SINGLE, function (t) + if (file.open("ds18b20_diet.lc")) then + t=require("ds18b20_diet") + t.setup(2) -- GPIO4 + readTemp() -- read once, to setup chip + print "Setup temperature" + end + end) local oldBrightness=0 oldTemp=0 local mqtttimer = tmr.create() diff --git a/wordclock.lua b/wordclock.lua index 11be758..93567c7 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -140,9 +140,60 @@ local timestat=function (hours, minutes, longmode) collectgarbage() return ret end + + +-- Logic to display Mqtt +function temp(dw, rgbBuffer, invertRows, dispTemp) +if (dispTemp ~= nil) then + -- Values: it, is, 5 minutes, 10 minutes, afer, before, three hour, quarter, dreiviertel, half, s + -- hours: one, one Long, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve + -- Special ones: twenty, clock, minute 1 flag, minute 2 flag, minute 3 flag, minute 4 flag + local ret = { it=0, is=0, m5=0, m10=0, ha=0, hb=0, h3=0, hq=0, h3q=0, half=0, s=0, + h1=0, h1l=0, h2=0, h3=0, h4=0, h5=0, h6=0, h7=0, h8=0, h9=0, h10=0, h11=0, h12=0, + m20=0, cl=0, m1=0, m2=0, m3=0, m4=0 } + + print("Mqtt Display of temperature: " .. tostring(dispTemp) ) + if (dispTemp == 1) or (dispTemp == -1) then + ret.h1=1 + elseif (dispTemp == 2) or (dispTemp == -2) then + ret.h2=1 + elseif (dispTemp == 3) or (dispTemp == -3) then + ret.h3=1 + elseif (dispTemp == 4) or (dispTemp == -4) then + ret.h4=1 + elseif (dispTemp == 5) or (dispTemp == -5) then + ret.h5=1 + elseif (dispTemp == 6) or (dispTemp == -6) then + ret.h6=1 + elseif (dispTemp == 7) or (dispTemp == -7) then + ret.h7=1 + elseif (dispTemp == 8) or (dispTemp == -8) then + ret.h8=1 + elseif (dispTemp == 9) or (dispTemp == -9) then + ret.h9=1 + elseif (dispTemp == 10) or (dispTemp == -10) then + ret.h10=1 + elseif (dispTemp == 11) or (dispTemp == -11) then + ret.h11=1 + elseif (dispTemp == 12) or (dispTemp == -12) then + ret.h12=1 + else + -- over or under temperature + end + local col=string.char(128,0,0) -- red; positive degrees + if (dispTemp < 0) then + col=string.char(0,0,128) -- blue; negative degrees + end + return ret, col +else + return nil, nil +end + +end -- Pack everything into a module M = { - timestat = timestat + timestat = timestat, + temp = temp } end wc = M