Сбой при переподключении к mqtt-брокеру при использовании собственного брокера Mosquitto в AWS EC2 Ubuntu Instance - PullRequest
0 голосов
/ 30 марта 2019

Ранее я использовал тестовый mqtt-брокер mosquito (то есть test.mosquitto.org) на моем esp8266 с кодом переподключения, т. Е. Если соединение разорвано из-за сброса маршрутизатора, то оно будет переподключено к брокеру, когда вернется Интернет. И работает нормально. Я использовал тот же код с брокером Cloud Mqtt, и он тоже работал отлично. Но теперь, когда я принимал своего собственного брокера от комаров, как в этом уроке MQTT-брокер на AWS EC2 , он перестал подключаться после сброса маршрутизатора. Ниже мой код на ESP8266: -

#include <ESP8266WiFi.h>
#include <PubSubClient.h>       

const char* topic = "someTopic";
String clientId = "randomClientId";
const char* mqttServer = "xxxxxxxxxxxxxxx.compute.amazonaws.com";
const int mqttPort = 1883;

PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);

  client.setServer(mqttServer, mqttPort);
  client.setCallback(callback);
  lastReconnectAttempt = 0;
  delay(500);
}

boolean reconnect() {
    clientId += String(random(0xffff), HEX);
    if (client.connect(clientId.c_str())) {
      client.subscribe(topic);
    } 
  return client.connected();
}

void loop() {
  if (!client.connected()) 
  {
    long now = millis();
    if (now - lastReconnectAttempt > 5000) 
    {
      lastReconnectAttempt = now;
      if (reconnect()) 
      {
        lastReconnectAttempt = 0;
      }
    }
  } else 
  {
    client.loop();
  }  
}

Пожалуйста, дайте мне знать, если кто-то знает причину этого.

...