Нужна помощь MQTT - Как вы реализуете(решаете) ситуацию с обрывом wifi

Ninjamannn

New member
Привет. Столкнулся с проблемой, при тестировании ситуации с обрывом wifi (свет погас, итп) - получаю неопределенное поведение. Нет реконнекта к mqtt.
Дано: плата esp8266 nodemcu3, MQTT сервер - CloudMQTT, питание по usb 3.0,
прошивка:
SSL: false
modules: bit,bmp085,cron,dht,ds18b20,file,gpio,http,mqtt,net,node,ow,tmr,uart,wifi
powered by Lua 5.1.4 on SDK 2.2.1(cfd48f3)

Код:

function pubEvent()
pubValue = "hi!"
if mqttBroker:publish("status", pubValue, 0, 0, function(m) print("send HI! status") end)
then
print("publish ok")
else
print("publish problem")
tmr.stop(0)
reconn()
end
end

function reconn()
print("Disconnected, reconnecting....")
mqttBroker:close()
conn()
end

function conn()
print("Making connection to MQTT broker")
mqttBroker:connect("m23.cloudmqtt.com", 16547, 0,
function(client)
print ("connected")
tmr.start(0)
end,
function(client, reason)
print("failed reason: "..reason)
reconn()
end)
end

function makeConn()
-- Instantiate a global MQTT client object
print("Instantiating mqttBroker")
mqttBroker = mqtt.Client("esp8266", 120, "log", "pass", 1)

mqttBroker:eek:n("connect", function(client) print ("connected") end)
mqttBroker:eek:n("offline", reconn)

conn()

tmr.alarm(0, (5 * 1000), 1, pubEvent)
end

Статистика ошибок:
Из 5 тестов: 2 все ок - соединение(mqtt) восстанавливается. 2 вот такие -
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 27184, room 16
tail 0
chksum 0xc7
load 0x3ffe8000, len 2256, room 8
tail 8
chksum 0x38
load 0x3ffe88d0, len 136, room 0
tail 8
chksum 0x11
csum 0x11
„гмГgдЫsѓт'|д$d$l`c›Я|r“lњoаѓgг

и последний может просто зависнуть.

Может я в коде что-то упустил...хз, как это обычно стандартно обрабатывается, как у вас?
По идее мою ситуацию должен обрабатывать колбек mqttBroker:eek:n("offline", reconn) - но он какой-то тугой. При чем с восстановлением wifi проблем не возникает. Сорри за смайлы.
 
Сверху Снизу