• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь MQTT client

Alex777Dark

New member
Здравствуйте,
у меня контроллер Arduino MEGA2560+WiFi R3 от RobotDyn запитан через блок питания 9В/1А, написал простой скетч для отображения в Monitor Port входящих сообщений от локального MQTT брокера. Работает все хорошо, но не долго, очень часто происходит переподключение к MQTT брокеру => 53. mqtt_client.publish("/logs", "ReConnect");.
Вопрос: в чем можеть быть проблема?

Код:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <WiFiManager.h>
#include <PubSubClient.h>

WiFiClient wifi_client;
PubSubClient mqtt_client(wifi_client);

byte server[] = { 192, 168, 0, 1 };
unsigned long lastMqtt = 0;

void callback(char* topic, byte* payload, unsigned int length) {
    payload[length] = '\0';
    //
    String strTopic = String(topic);
    String strPayload = String((char*)payload);
    //
    Serial.print(F("topic: "));
    Serial.println(strTopic);
    Serial.print(F("message: "));
    Serial.println(strPayload);
}

void setup()
{
    Serial.begin(115200);
    Serial.println(F("start"));
    //
    wifi();
    //
    mqtt_client.setServer(server, 1883);
    mqtt_client.setCallback(callback);
    //
    if (mqtt_client.connect("ESP8266_test", "user", "pass")) {
        mqtt_client.subscribe("/logs");
        mqtt_client.publish("/logs", "Connect");
    }
}

void loop()
{
    if (lastMqtt > millis()) {
        lastMqtt = 0;
    }
    //
    mqtt_client.loop();
    //
    if (millis() > (lastMqtt + 5000)) {
        if (!mqtt_client.connected()) {
            if (mqtt_client.connect("ESP8266_test", "user", "pass")) {
                mqtt_client.subscribe("/logs");
                mqtt_client.publish("/logs", "ReConnect");
            }
        }
        //
        lastMqtt = millis();
    }
}

void wifi()
{
    WiFiManager wifiManager;
    //
    IPAddress _ip = IPAddress(192, 168, 1, 0);
    IPAddress _gw = IPAddress(192, 168, 1, 0);
    IPAddress _sn = IPAddress(255, 255, 255, 0);
    //
    wifiManager.setAPStaticIPConfig(_ip, _gw, _sn);
    //
    if (!wifiManager.autoConnect("ESP8266", "1234567890")) {
        Serial.println(F("Error"));
        delay(3000);
        ESP.reset();
        delay(5000);
    }
    //
    Serial.println(F("Connected"));
    Serial.print(F("local ip: "));
    Serial.println(WiFi.localIP());
}
 

Alex777Dark

New member
Здравствуйте,
у меня контроллер Arduino MEGA2560+WiFi R3 от RobotDyn запитан через блок питания 9В/1А, написал простой скетч для отображения в Monitor Port входящих сообщений от локального MQTT брокера. Работает все хорошо, но не долго, очень часто происходит переподключение к MQTT брокеру => 53. mqtt_client.publish("/logs", "ReConnect");.
Вопрос: в чем можеть быть проблема?
Тема закрыта, на другом форуме помогли, теперь всё стабильно работает, хоть в космос запускай))
 
Сверху Снизу