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 mqttBrokerublish("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)
mqttBrokern("connect", function(client) print ("connected") end)
mqttBrokern("offline", reconn)
conn()
tmr.alarm(0, (5 * 1000), 1, pubEvent)
end
Статистика ошибок:
Из 5 тестов: 2 все ок - соединение(mqtt) восстанавливается. 2 вот такие -
ets Jan 8 2013,rst cause:2, boot mode3,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г
и последний может просто зависнуть.
Может я в коде что-то упустил...хз, как это обычно стандартно обрабатывается, как у вас?
По идее мою ситуацию должен обрабатывать колбек mqttBrokern("offline", reconn) - но он какой-то тугой. При чем с восстановлением wifi проблем не возникает. Сорри за смайлы.
Дано: плата 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 mqttBrokerublish("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)
mqttBrokern("connect", function(client) print ("connected") end)
mqttBrokern("offline", reconn)
conn()
tmr.alarm(0, (5 * 1000), 1, pubEvent)
end
Статистика ошибок:
Из 5 тестов: 2 все ок - соединение(mqtt) восстанавливается. 2 вот такие -
ets Jan 8 2013,rst cause:2, boot mode3,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г
и последний может просто зависнуть.
Может я в коде что-то упустил...хз, как это обычно стандартно обрабатывается, как у вас?
По идее мою ситуацию должен обрабатывать колбек mqttBrokern("offline", reconn) - но он какой-то тугой. При чем с восстановлением wifi проблем не возникает. Сорри за смайлы.