При попытки подключении к MQTT, тормозит скетч

Тема в разделе "ESP8266, ESP32", создана пользователем Miheeei, 9 мар 2019.

  1. Miheeei

    Miheeei Нерд

    Добрый вечер,
    Помогите решить проблему с подключением к MQTT серверу.
    Имеется MQTT сервер на базе OrangePI.
    Имеется клиент на базе ESP8266.
    В приоритете задача клиента, работать автономно не зависимо от сети Wifi, но при ее наличии авторизоваться на MQTT и отправить данные.
    Клиент опрашивает пару датчиков, 2 клавиши и 2 реле под освещение.
    Каждые 5 минут при отсутствии Wifi выполняется процедура подключения-переподключения к сети Wifi.
    При наличии Wifi происходит подключение.
    Но вступает в ход 2я процедура, подключения с MQTT серверу.
    Если сервер доступен то подключение происходит махом, но столкнулась с проблемой при неудачном соединении. При попытки очередного подключениями образуется пауза в 5-7 секунд, при этом весь скетч тормозит как при delay. Ковырялась в библиотеке, искала все что связанно с delay или sleep. Но все без результата.
    Проблема конкретно в: client.connect(MQTT::Connect(ID).set_auth(mqtt_user, mqtt_pass))
    Так же прикрепляю весь код данной процедуры.
    Если есть способ решить данную проблему подскажите пожалуйста.
    Код (C++):
    void MQTT_Connect()
    {
      if (WiFi.status() == WL_CONNECTED)
      {
        if (!client.connected())
        {
          Serial.println("# Connection to MQTT...");
          if (client.connect(MQTT::Connect(ID).set_auth(mqtt_user, mqtt_pass)))
          {
            Serial.println("# MQTT connected");
            client.set_callback(callback);
            client.subscribe("Smart/"+(ID)+"/#");
          }
          else
          {
            Serial.println("# MQTT is not connected");  
          }
        }
        if (client.connected())
        {
          client.loop();  
        }  
      }
    }
     
  2. カオナシ

    カオナシ Нерд

  3. Miheeei

    Miheeei Нерд