FHEM startet mit alten Readings aufgrund von MQTT

Begonnen von pzeier, 27 Juli 2017, 08:29:31

Vorheriges Thema - Nächstes Thema

pzeier

Hallo liebe FHEMer,

seit einiger Zeit habe ich folgendes Problem:

Wenn FHEM (unter Linux) neu gestartet wird (manuell via systemctl oder durch Reboot des Wirt-Systems) werden irgendwelche alten Readings von den Devices geladen. Bspw. alte Soll-Temperaturen bei den Heizthermostaten, was dann zum Anspringen der Heizung mitten im Sommer führt.
Ursache scheint die MQTT_BRIDGE zum Broker Mosquitto zu sein. Wenn ich Mosquitto beende und dann FHEM neu starte, werden die Readings von vor dem Neustart korrekt wiederhergestellt.

FHEM kommuniziert per MQTT mit OpenHab.
Mir ist nur absolut schleierhaft, warum von FHEM alte Werte geladen werden. Auch wenn in Mosquitto selbst alte Werte gecached würden, wären das immer noch die letzten, welche FHEM vor dem Restart gepublished hätte (Openhab ändert nichts an den Topics ohne aktiven Eingriff des Benutzers).

Kluge Ideen?  ;)

Gruß
Patrick

hexenmeister

#1
Moin!

Ich vermute Du hast irgendwann mal zwischendurch Werte mit Retain-Flag gepublisht. Wenn danach andere Werte ohne Retain gesendet werden, bleiben diese noch drin und werden jedesmal beim Connect (eingentlich beim subscribe) von dem Server gesendet. Lösche sie (indem Du einen leeren (null) Wert mit Retain an die entsprechende Topics sendest) und der Spuck ist weg.

Grüße
Alexander

Edit:
mosquitto_pub -t <topic> -r -n
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

pzeier

Hi Alexander,

danke für den Hinweis!
Die Ursache war nicht ganz die von dir beschriebene, aber beim Wort "Retain" hat es bei mir klick gemacht. In der Mosquitto Config gibt es den Parameter "persistence". Dieser war auf true.  ::)
Einmal auf false gesetzt und Mosquitto neu gestartet -> Spuk ist weg  ;D
Habe auch gleich von beiden Seiten (FHEM und OpenHab) mal gepublished und Fhem nochmal neu gestartet. Die Werte bleiben erhalten.

Ist schon spannend, wenn mitten im Hochsommer plötzlich alle Heizkörper angehen. Und aufgrund der limitierten Sendezeiten im 868 MHz Band dauert das dann auch schon mal eine Stunde, bis alle Befehle zum Zurückregeln bei den Ventilen angekommen sind. Super Sache.  ;)