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