aboutsummaryrefslogtreecommitdiff
path: root/mqtt-bridge/mq.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mqtt-bridge/mq.lua')
-rw-r--r--mqtt-bridge/mq.lua70
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