[MQTT] - Sesam öffne dich oder: nach reconnect published received

Begonnen von Thargor, 24 November 2016, 22:46:13

Vorheriges Thema - Nächstes Thema

Thargor

Hallo zusammen,

ich habe hier folgendes Problem in dieser Umgebung:
Raspberry mit FHEM angebunden via MQTT an eine andere FHEM Instanz auf meinem NAS. Mosquitto läuft auch auf dem NAS.
Auf dem Raspberry nutze ich unter anderem GPIOs zum Schalten um ein Garagentor zu steuern und den Status abzufragen. Das klappt auch wunderbar.
Allerdings gibt es einen Effekt, den ich nicht verstehe:

Trenne ich auf dem Raspberry-FHEM den MQTT_Broker mit disconnect und connecte ich mich danach wieder, wird das Garagentor geöffnet :-)
Im Logfile sehe ich:

publish received for raspi/pin16/state/set, on
Pin16, in fileaccess: value 1

Ich interpretiere das so, dass tatsächlich der Befehl über Mosquitto reinkommt, verstehe aber nicht wieso und wie ich das abstellen kann. Wer kann mir helfen?

Momentan führt das unter anderem dazu, dass bei einem Stromausfall sich das Garagentor öffnet, was natürlich nicht Sinn der Sache ist. Ich bin also für jeden Hinweis dankbar.



Kuzl

Die Meldung wurde mit retain an Mosquitto gesendet. D.h. beim Verbinden bzw. Subscribe wird dem neuen Client der letzte Wert des Topics gesendet.

Lösung: Meldung  raspi/pin16/state/set, on nicht mehr mit retain absetzen.

Viele Grüße,
Kuzl

Thargor

Zitat von: Kuzl am 25 November 2016, 07:14:06
Die Meldung wurde mit retain an Mosquitto gesendet. D.h. beim Verbinden bzw. Subscribe wird dem neuen Client der letzte Wert des Topics gesendet.
Lösung: Meldung  raspi/pin16/state/set, on nicht mehr mit retain absetzen.

Vielen Dank für die schnelle Antwort!

Ich habe sowohl im Raspi-FHEM also auch im NAS-FHEM das attribut retain auf 0 gesetzt. Und danach auch noch den Wert per MQTT geschickt. Leider wird trotzdem bei einem Reconnect der Wert erneut gesetzt.
Muss man das Attribut retain löschen? Kann man in Mosquitto irgendwie sehen ob das Telegramm mit Retain geschickt wird/wurde?

Thargor

Nach einem Neustart des Mosquitto Server scheint es jetzt zu funktionieren. Vielen Dank für den Hinweis auf die richtige Spur!

Kuzl

Ansonsten muss einmalig auf den Topic mit retain ein leerer String gepublisht werden - das löscht den retain (und den Topic) aus dem Server raus.