mqtt publish mit retain senden

Begonnen von Spartacus, 05 Dezember 2023, 22:56:40

Vorheriges Thema - Nächstes Thema

Spartacus

Moin zusammen,

ich benutze fhem aktuell als enocean gateway um meinen alten Eltako FTS14 Devices pr mqtt in Homassistant zu benutzen. Die HA Unterstützung für enocean ist da nicht so prickelnd!

Hauptsächlich geht es mir um Sensoren, die über ein FTS14EM angebunden sind. Allerdings habe ich nach einem Neustanrt von HA immer das Problem, dass die Sensoren den Zusatnd "unknown" annehmen. Fhem zeigt hier brav den "released" bzw. "pressed" - Status an.

Die Überlegung ist, das retain Flag bei diesen Sensoren zu setzten, damit HA immer den letzten Zustand geliefert bekommt und meine Automations einen definierten Zustand haben. Ist das in diesem fall die Gängige Praxis oder wie löst man so etwas? Welche NAchteile hätte das Retain-Flag?

Aktuell sieht die Konfiguration des Devices so aus:
defmod EG.ss.TK.Haustuer EnOcean FFA2BD81
attr EG.ss.TK.Haustuer userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr EG.ss.TK.Haustuer IODev TCM310
attr EG.ss.TK.Haustuer alias Reedkontakt Haustür
attr EG.ss.TK.Haustuer comment Eltako FTS14-EM Kanal 1
attr EG.ss.TK.Haustuer event-on-change-reading buttons
attr EG.ss.TK.Haustuer group FTS14-EM Keller
attr EG.ss.TK.Haustuer manufID 00D
attr EG.ss.TK.Haustuer model FT55
attr EG.ss.TK.Haustuer mqttForward all
attr EG.ss.TK.Haustuer mqttPublish buttons:topic={"$base/$device/buttons"}
attr EG.ss.TK.Haustuer room 98-Geräte -> EnOcean,HASS
attr EG.ss.TK.Haustuer subType switch

setstate EG.ss.TK.Haustuer released
setstate EG.ss.TK.Haustuer 2023-11-28 22:01:37 .lastChannel A
setstate EG.ss.TK.Haustuer 2023-12-01 16:36:37 IODev TCM310
setstate EG.ss.TK.Haustuer 2023-12-05 22:41:13 buttons released
setstate EG.ss.TK.Haustuer 2023-11-28 22:01:37 channelA A0
setstate EG.ss.TK.Haustuer 2023-12-05 22:41:06 channelB B0
setstate EG.ss.TK.Haustuer 2023-12-05 22:41:13 state released
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

rudolfkoenig

ZitatWelche NAchteile hätte das Retain-Flag?
In diesem Fall: dass die gespeicherten Werte nicht mit der Wirklichkeit uebereinstimmen, z.Bsp. weil FHEM oder der MQTT-Server nicht aktiv war.

Generell kann es auch zu Problemen fuehren, wenn man die retain Topics Zeitstempel oder Zufallszahl beinhalten, weil dann die gespeicherte und zu verarbeitende Menge ohne Grenze waechst.

Ich wuerde in diesem Fall aber auch auf das retain Flag setzen, und darauf achten, dass FHEM nicht die gleichen Topics abonniert.

Spartacus

Hallo,

fhem published und HA abonniert. Von daher setze ich doch das retain bei fhem, so wie hier, oder?

attr EG.ss.TK.Haustuer mqttPublish buttons:topic={"$base/$device/buttons"} buttons:retain=1
ZitatIch wuerde in diesem Fall aber auch auf das retain Flag setzen, und darauf achten, dass FHEM nicht die gleichen Topics abonniert.
wie ist das zu verstehen, über en Zeitstempel?
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

betateilchen

Anderer Ansatz:
Kann sich Dein HA nicht nach einem Neustart bei FHEM "melden" (oder FHEM den Neustart von HA irgendwie erkennen), damit Du in FHEM mit einem notify reagieren und die DANN aktuellen Werte per publish verschicken kannst?

So habe ich das bei mir mit den Heizungsreglern auf ESP32 Basis gelöst: sobald das "connected" topic in FHEM ankommt, schickt FHEM ein publish mit der zuletzt eingestellten Solltemperatur.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Spartacus

sehr cool! Auf diese Idee, bin ich noch nicht gekommen! Muss ich mir mal ansehen! Das wäre ne sehr elegante Lösung! Danke für diesen guten Tipp! Dann könnte ich den enocean Kram tatsächlich weiter verwenden
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R