diff options
Diffstat (limited to 'diller/mq.lua')
-rw-r--r-- | diller/mq.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/diller/mq.lua b/diller/mq.lua new file mode 100644 index 0000000..0b4a884 --- /dev/null +++ b/diller/mq.lua @@ -0,0 +1,61 @@ +local P = {} +local m, topic, cid + +local function p(msg) + print("MQTT: "..msg) +end + +local function mq_client_connected(con) + p("connected") +end + +function mq_on_timer() + -- This crashes the module: + -- local status = wifi.sta.status() + -- p("checking status, status="..status) + + local status = wifi.sta.getip() + + if status and status ~= "0.0.0.0" then + if not m then + p("connecting") + + -- client id, keepalive, username, password + m = mqtt.Client(cid, 120) + -- m:on("connect", mq_connected) + m:on("offline", function() m:close(); m = nil end) + + -- 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 P.init(timer_id, client_id) + cid = client_id + + topic = "/esp8266/"..client_id + + tmr.alarm(timer_id, 3 * 1000, 1, mq_on_timer) +end + +function P.publish(path, payload) + if not m then + print("Not connected, dropping message to "..path) + return + end + + path = topic.."/"..path + print("path="..path) + m:publish(path, payload, 0, 0) + + return true, "yo?" +end + +return P |