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

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

Тема в разделе "Раздел для начинающих", создана пользователем Alex777Dark, 8 авг 2018.

Метки:
  1. Alex777Dark

    Alex777Dark Новичок

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

    Код (Text):
    1. #include <ESP8266WiFi.h>
    2. #include <ESP8266WebServer.h>
    3. #include <DNSServer.h>
    4. #include <WiFiManager.h>
    5. #include <PubSubClient.h>
    6.  
    7. WiFiClient wifi_client;
    8. PubSubClient mqtt_client(wifi_client);
    9.  
    10. byte server[] = { 192, 168, 0, 1 };
    11. unsigned long lastMqtt = 0;
    12.  
    13. void callback(char* topic, byte* payload, unsigned int length) {
    14.     payload[length] = '\0';
    15.     //
    16.     String strTopic = String(topic);
    17.     String strPayload = String((char*)payload);
    18.     //
    19.     Serial.print(F("topic: "));
    20.     Serial.println(strTopic);
    21.     Serial.print(F("message: "));
    22.     Serial.println(strPayload);
    23. }
    24.  
    25. void setup()
    26. {
    27.     Serial.begin(115200);
    28.     Serial.println(F("start"));
    29.     //
    30.     wifi();
    31.     //
    32.     mqtt_client.setServer(server, 1883);
    33.     mqtt_client.setCallback(callback);
    34.     //
    35.     if (mqtt_client.connect("ESP8266_test", "user", "pass")) {
    36.         mqtt_client.subscribe("/logs");
    37.         mqtt_client.publish("/logs", "Connect");
    38.     }
    39. }
    40.  
    41. void loop()
    42. {
    43.     if (lastMqtt > millis()) {
    44.         lastMqtt = 0;
    45.     }
    46.     //
    47.     mqtt_client.loop();
    48.     //
    49.     if (millis() > (lastMqtt + 5000)) {
    50.         if (!mqtt_client.connected()) {
    51.             if (mqtt_client.connect("ESP8266_test", "user", "pass")) {
    52.                 mqtt_client.subscribe("/logs");
    53.                 mqtt_client.publish("/logs", "ReConnect");
    54.             }
    55.         }
    56.         //
    57.         lastMqtt = millis();
    58.     }
    59. }
    60.  
    61. void wifi()
    62. {
    63.     WiFiManager wifiManager;
    64.     //
    65.     IPAddress _ip = IPAddress(192, 168, 1, 0);
    66.     IPAddress _gw = IPAddress(192, 168, 1, 0);
    67.     IPAddress _sn = IPAddress(255, 255, 255, 0);
    68.     //
    69.     wifiManager.setAPStaticIPConfig(_ip, _gw, _sn);
    70.     //
    71.     if (!wifiManager.autoConnect("ESP8266", "1234567890")) {
    72.         Serial.println(F("Error"));
    73.         delay(3000);
    74.         ESP.reset();
    75.         delay(5000);
    76.     }
    77.     //
    78.     Serial.println(F("Connected"));
    79.     Serial.print(F("local ip: "));
    80.     Serial.println(WiFi.localIP());
    81. }
     
  2. Alex777Dark

    Alex777Dark Новичок

    Сообщения:
    2
    Симпатии:
    0
    Тема закрыта, на другом форуме помогли, теперь всё стабильно работает, хоть в космос запускай))
     
  3. andrik_zp

    andrik_zp Читатель

    Сообщения:
    87
    Симпатии:
    8
    Так а в чем проблема была?
     

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