Ранее я использовал тестовый 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();
}
}
Пожалуйста, дайте мне знать, если кто-то знает причину этого.