Wifi / MQTT reconnect

Hi, hab einen Sensor der sich per MQTT meldet. Das klappt auch alles wunderbar mit den einfachen Beispielen (a la ArduinoMQTTClient/WifiSimpleSender.

Aber: Geht mal das Wifi und/oder die Verbindung zum Broker verloren ist man aufgeschmissen. Meist sehe ich noch dass das Wifi wieder läuft (status=connected), aber beim MQTT Broker kommt trotzdem nichts mehr an.

Was ist die richtige Strategie die Verbindung zu überwachen? Beim Wifi gibts ja immerhin noch den Status aber bei MQTT? Und wie das wieder neu zu verbinden - was sind die Kriterien, also wo bekomme ich einen Fehler auf den ich reagieren könnte? Bei mqttClient.beginMessage/print/endMessage kann ich am Rückgabewert nicht wirklich schließen ob der Broker das empfangen hat.

Die Frage ist also, wenn Wifi.Status (wieder) auf connected geht - ist dann diesbezüglich alles auch wieder gut und wie bekomme ich wieder Zugang zum MQTT broker?

Danke für jede Hilfe!

Wenn ich mir den Quellcode von der Library so anschaue, dann sehe ich, dass es eine Methode connected() gibt, die true zurückgibt, wenn der Broker verbunden ist, andernfalls false.

Also müsste der Verbindungszustand zum Broker abgefragt werden können.
Mit Sicherheit kann ich das aber nicht sagen, weil ich mit der Bibliothek noch nichts gemacht habe.

1 Like

Danke Kai. Ich habe das probiert
if (!mqttClient.connected()) { mqttClient.connect(broker, port); }
und es scheint zu wirken. Muss ich aber noch intensiver testen.
Wie hast du das gefunden? Ich sehe im Header nur:
virtual uint8_t connected();
aber nichts zu was der Rückgabewert ist.

In der .cpp Datei ist die Methode

uint8_t MqttClient::connected()
{
  return clientConnected() && _connected;
}

_connected ist eine Membervariable vom Typ bool . Da diese mit dem Ergebnis von clientConnected() "verunded" wird, bin ich zu meiner Aussage gekommen.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.