• Система автоматизации с открытым исходным кодом на базе 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");.
Вопрос: в чем можеть быть проблема?
Тема закрыта, на другом форуме помогли, теперь всё стабильно работает, хоть в космос запускай))
 
Сверху Снизу