Hallo zusammen,
steuere meine Rolläden über MQTT zwischen Broker auf Raspi und ESP32 als Schalt-Clients.
Diese Clients bleiben alle paar Tage in der else-schleife der Funktion mqttConnect hängen wenn die Wlan-Verbindung für kurze Zeit instabil ist oder der 2,4Hz-Kanal sich ändert ("Fehler bei mqtt connect Rc = -2)
void mqttConnect() {
boolean willRetain = false;
while (!mqttClient.connected()) {
if (mqttClient.connect(CLIENT_ID, willTopic, willQoS, willRetain, willMessage))
{
mqttClient.subscribe(CLIENT_TOPIC);
Serial.println("mqtt connect ok");
}
else
{
Serial.println("Fehler bei mqtt connect, rc = ");
Serial.println( mqttClient.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
Alles anzeigen
Habe die unmöglichsten Sachen bereits raus gefunden. Wenn der ESP beim Router eingeloggt war, findet er nach der "WLAN-Pause" wieder aus der Schleife raus, wenn er aber im Repeater eingeloggt war, dann bleibt er in der Schleife und ich kann nur noch den ESP stromlos machen um ihn wieder ins Spiel zu bekommen.
Wenn an der Fritzbox die WLAN-Kanal-Automatik eingeschaltet ist, dann ist nach einem Kanalwechsel bei dem ein oder anderen ESP auch Schluss und er kommt aus dem Fehler rc=-2 nicht mehr raus.
Den Kanal kann ich natürlich fest einstellen, jedoch kurze WLAN-Unterbrechungen können immer mal sein. Soll ich nun in der Schleife ein ESP.reset programmieren, z.b. nach 5 Versuchen, oder gibt es noch andere Möglichkeiten des Abfangens?
Was ich mich frage: Liegt die Schwäche beim MQTT-Broker oder bei der WLAN-Verbindung? Die festgefahrenen ESP's lassen sich dann nicht mehr anpingen aber im Monitor sehe ich noch immer wiederkehrend die Fehlermeldungen "Fehler bei mqtt connect = -2".
void setup_wifi() {
delay(1500);
WiFi.begin(SSID, PSK);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(2000);
}
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
Eine Fehlermeldung aus der WLAN-Aufbau-Funktion sehe ich im Monitor der Arduino-IDE nicht. Was ist jetzt tot? Die MQTT-Verbindung (last will Meldung kommt) oder / und die WLAN-Verbindung?
Ich hoffe ihr kommt mit meinem wilden Geschribsel zurecht. Gerne beantworte ich noch Nachfragen.
Danke!!!!!!