diff options
Diffstat (limited to 'mqtt-bridge/mq.lua')
-rw-r--r-- | mqtt-bridge/mq.lua | 70 |
1 files changed, 48 insertions, 22 deletions
diff --git a/mqtt-bridge/mq.lua b/mqtt-bridge/mq.lua index 20801e4..dbebe8f 100644 --- a/mqtt-bridge/mq.lua +++ b/mqtt-bridge/mq.lua @@ -1,44 +1,70 @@ local m -local topic -local connected = false +local topic, cid -function mq_connected(con) - print("MQTT connected, con="..tostring(con)) +local function p(msg) + print("MQTT: "..msg) end -function mq_disconnected(con) - print("MQTT disconnected, con="..tostring(con)) - connected = false +local function mq_connected(con) +-- p("connected") end -function mq_client_connected(con) - print("connected="..tostring(con)) +local function mq_disconnected(con) +-- p("disconnected") + m:close() + m = nil +end - connected = true +local function mq_client_connected(con) + p("connected") local majorVer, minorVer, devVer, chipId, flashId, flashSize, flashMode, flashSpeed = node.info() - payload = "{version: '"..majorVer.."."..minorVer.."."..devVer.."', chipId:"..chipId..", flashId:"..flashId..", flashSize:"..flashSize..", flashMode:"..flashMode..", flashSpeed:"..flashSpeed.."}" + payload = '{"version": "'..majorVer..'.'..minorVer..'.'..devVer..'", "chipId":'..chipId..', "flashId":'..flashId..', "flashSize":'..flashSize..', "flashMode":'..flashMode..', "flashSpeed":'..flashSpeed.."}" mq_publish("firmware", payload) end -function mq_init(client_id) - print("MQTT: Configuring") +function mq_on_timer() + -- This crashes the module: + -- local status = wifi.sta.status() + -- p("checking status, status="..status) - topic = "/esp8266/"..client_id + local status = wifi.sta.getip() + p("checking status, status="..status) + + if status and status ~= "0.0.0.0" then + if not m then + p("connecting") - -- client id, keepalive, username, password - m = mqtt.Client(client_id, 120) - m:on("connect", mq_connected) + -- client id, keepalive, username, password + m = mqtt.Client(cid, 120) + m:on("connect", mq_connected) + m:on("offline", mq_disconnected) + + -- host, port, secure, auto_reconnect, function(client), ssl=8883 + m:connect("trygvis.io", 1883, 0, 0, mq_client_connected) + end + else + if m then + p("Lost wifi connection, disconnecting") + m:close() + m = nil + end + end +end + +function mq_init(timer_id, client_id) + p("Configuring") + + topic = "/esp8266/"..client_id + cid = client_id - m:on("offline", mq_disconnected) - -- host, port, secure, auto_reconnect, function(client), ssl=8883 - m:connect("trygvis.io", 1883, 0, 0, mq_client_connected) + tmr.alarm(timer_id, 3 * 1000, 1, mq_on_timer) - print("MQTT: Configured") + p("Configured") end function mq_publish(path, payload) - if connected then + if m then m:publish(topic.."/"..path, payload, 0, 0) end end |