Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "NodeMCU", создана пользователем Ninjamannn, 31 май 2018.

Метки:
  1. Ninjamannn

    Ninjamannn Новичок

    Сообщения:
    4
    Симпатии:
    0
    Привет. Столкнулся с проблемой, при тестировании ситуации с обрывом 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 проблем не возникает. Сорри за смайлы.
     
  2. igorlll

    igorlll Новичок

    Сообщения:
    10
    Симпатии:
    1
    Ninjamannn нравится это.
  3. Ninjamannn

    Ninjamannn Новичок

    Сообщения:
    4
    Симпатии:
    0
    Спасибо, помогло.
     

Поделиться этой страницей