NEWS
MQTT "LWT"-Feature Wartezeit ?
-
Hallo zusammen,
Nehme gerade das LWT-Feature (Last Will/Testament) des MQTT adapters (Version 2.3.4) in Betrieb.
Wenn ich also meinen ESP32 basierten "Client A" abschalte, möchte ich, daß der MQTT Broker Adapter auf dem ioBroker (Raspberry 4) nach einiger Zeit dem "Client B" mitteilt, daß Client A offline ist.
Funktioniert auch soweit, aber es dauert ziemlich lange, bis der MQTT broker nach Abschalten eines MQTT clients die LWT-Message ("offline") an die anderen Clients weiterschickt (so ca. 30 ... 100 sek).
Das ist mir viel zu lange.
Deshalb suche ich nach einer Möglichkeit, diese Zeit auf z.B. 5 ... 10 sek zu verkürzen, habe aber bis jetzt nix gefunden - weder in der MQTT Oberfläche noch im Forum.
Gibt's so eine Einstellung nicht?
Wovon hängt denn diese Wartezeit ab ?Grüße,
WillyIoBrok
-
@willyiobrok So wie ich das sehe, wird das Testament verschickt, sobald der Server mitbekommt, dass die Verbindung abgerissen ist.
Nun scheint das Problem zu sein, dass das Timeout (bei dir) sehr hoch ist und der Server entsprechend auch sehr lange nicht bemerkt, dass der Client nicht mehr verbunden ist.
Ich sehe die Lösung im Setzen des Keep-Alive (auf Seite des Clients) auf einen möglichst tiefen Wert.
-
@unclesam
Hmm, das dachte ich mir auch schon. Ich benutze als client einen ESP32 mit der Library "EspMQTTClient".
Das einzige, was ich in der Doku unter "live", "life" oder "time gefunden habe ist:Change the keepalive interval (15 seconds by default)
void setKeepAlive(uint16_t keepAliveSeconds);
Aber 15 sek hört sich doch gar nicht soo schlimm an. Werde es aber trotzdem mal auf 5 sek kürzen.
Schau ma mal
Erstmal vielen Dank,
WillyIoBrok
-
@UncleSam
habs jetzt mit 5s keepalive interval ausprobiert, ja, es geht schneller ! Vielen Dank für den Tip
(allerdings dauerts trotzdem noch bis zu 20 sek, damit kann/muß ich aber jetzt leben)