Wordclock/mqtt.lua

63 lines
1.9 KiB
Lua
Raw Normal View History

-- Global variable
t=nil
mqttConnected = false
2020-12-07 21:26:02 +01:00
-- MQTT extension
function startMqtt()
m = mqtt.Client("wordclock", 120)
-- on publish message receive event
m:on("message", function(client, topic, data)
print(topic .. ":" )
if data ~= nil then
print(data)
if (data == "ON") then
2020-12-07 21:37:04 +01:00
briPercent=100
2020-12-07 21:26:02 +01:00
m:publish(mqttPrefix .. "/clock", "ON", 0, 0)
elseif (data == "OFF") then
2020-12-07 21:37:04 +01:00
briPercent=0
2020-12-07 21:26:02 +01:00
m:publish(mqttPrefix .. "/clock", "OFF", 0, 0)
else
if (tonumber(data) >= 0 and tonumber(data) <= 100) then
2020-12-07 21:37:04 +01:00
briPercent=tonumber(data)
2020-12-07 21:26:02 +01:00
m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0)
end
end
end
end)
m:connect(mqttServer, 1883, 0, function(client)
2020-12-07 21:37:04 +01:00
print("MQTT is connected")
2020-12-07 21:26:02 +01:00
mqttConnected = true
-- subscribe topic with qos = 0
client:subscribe(mqttPrefix .. "/command", 0)
-- publish a message with data = hello, QoS = 0, retain = 0
client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0)
end,
function(client, reason)
print("failed reason: " .. reason)
end)
end
2020-12-08 21:51:14 +01:00
function startMqttClient()
if (mqttServer ~= nil and mqttPrefix ~= nil) then
startMqtt()
print "Started MQTT client"
oldBrightness=0
oldTemp=0
2020-12-10 21:11:35 +01:00
tmr.alarm(5, 5001, 1 ,function()
if (mqttConnected) then
local temp = nil
if (t ~= nil) then
temp=readTemp()
end
if (oldBrightness ~= briPercent) then
m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0)
else
m:publish(mqttPrefix .. "/heap", tostring(node.heap()), 0, 0)
end
oldBrightness = briPercent
2020-12-08 21:51:14 +01:00
end
end)
end
2020-12-10 21:11:35 +01:00
end