Hallo liebe FHEM Gemeinde,
nachdem ich im Haus allerhand Enocean Geräte habe und es geschafft habe die Schalter und Aktoren gängig zu machen, wollte ich nun die Schalter mit anderen Geräten verbinden.
Neben FHEM betreibe ich noch eine Home Assistant und Homey Installation, dabei hat eine "Verdrahtung" über MQTT aus meiner Sicht am meisten Sinn.
In Homey eingerichtet Geräte bekomme ich ich ohne Probleme nach FHEM und HA. Über HA kann ich diese auch ohne Probleme schalten, da Homey eine HA Integration besitzt. Wenn ich das gleiche über FHEM Versuche, klappt das irgendwie leider nicht.
Setze ich die publishs auf dem Device entsprechend meines Homeys, dann kommt eine Endlosschleife zustande, die Fhem abstürzen läst.
Mach ich es mit einem eigenen Topic, schaltet das Gerät nicht, da ich es erst noch in einem der anderen Systeme übersetzen müsste.
Habe ich hier einen Denkfehler? Irgendwie dachte ich, dass es einfacher wird.
Long Story Short: Wie kann ich automatisch erzeugte MQTT Geräte über FHEM steuern?
Später mal:
Letztlich möchte ich im nächsten Schritt mit meinen Wandschaltern bspw. eine HUE steuern. Dabei ist der Schalter in FHEM und die HUE in Homey eingerichtet.
So sieht mein Device gegenwärtig aus und ist über die Bridge mit meinem mosquitto Server verbunden.
Attributes
IODev mqtt_io
mqttPublish *:topic={"mqttFhem/$device/$name"}
readingList
homey/esstisch/onoff:.* onoff
homey/esstisch/onoff/\x24name:.* _name
homey/esstisch/onoff/\x24retained:.* _retained
homey/esstisch/onoff/\x24settable:.* _settable
homey/esstisch/onoff/\x24datatype:.* _datatype
homey/esstisch/dim:.* dim
homey/esstisch/dim/\x24name:.* _name
homey/esstisch/dim/\x24retained:.* _retained
homey/esstisch/dim/\x24settable:.* _settable
homey/esstisch/dim/\x24unit:.* _unit
homey/esstisch/dim/\x24datatype:.* _datatype
homey/esstisch/dim/\x24format:.* _format
homey/esstisch/light-mode:.* light-mode
homey/esstisch/light-mode/\x24name:.* _name
homey/esstisch/light-mode/\x24retained:.* _retained
homey/esstisch/light-mode/\x24settable:.* _settable
homey/esstisch/light-mode/\x24datatype:.* _datatype
homey/esstisch/light-mode/\x24format:.* _format
homey/esstisch/\x24type:.* _type
homey/esstisch/\x24name:.* _name
homey/esstisch/\x24properties:.* _properties
homey/esstisch/state:.* state
homey/esstisch/onoff/set:.* set
homey/esstisch/dim/set:.* set
room MQTT2_DEVICE
setList
on homey/esstisch/onoff true
off homey/esstisch/onoff false
VG
Daniel
du hast schon MQTT2 DEvices, zumindest dem Auszug nach ... in diesen gibt es "set xxxx attrTemplate". Damit wird ein weiteres Device angelegt in dem dann, abhängig vom Template, schon Aktionen vorhanden sind. Diese kannst dann schalten, oder Readings auswerten. Ohne großen Konfigurationsaufwand.
schau dir hierzu mal das Wiki an, das ist mehr Info
https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#attrTemplate
https://wiki.fhem.de/wiki/MQTT2_DEVICE#attrTemplate
Hi,
vielen Dank für den Hinweis.
Das schaue ich mir noch mal genauer an.
Was mache ich, wenn es für meine Geräte kein Template gibt?
Bspw. Philips Hue oder andere die nicht in der Liste sind.
VG
Daniel
Ich würde dann ein template verwenden dass dem Gerät an ähnlichsten ist und dann die Abweichung konfigurieren. Hue ist verbreitet, da findest dann sicher auch was im Forum
Kein passendes attrTemplate vorhanden?
Exisitert (noch) kein passendes attrTemplate, ist zu empfehlen, zunächst das "tasmota_basic" anzuwenden. Dieses führt einige Basiskonfigurationen durch, die für FHEM hilfreich sind, z.B. wird die firmware so eingestellt, dass Schaltzustände in Kleinschreibung übermittelt werden, statt der defaults "ON" bzw. "OFF".
Allerdings stellt dieses das autocreate an dem MQTT2_DEVICE auf 0, was dann nicht optimal ist, wenn man weitere Readings aus dem Gerät erwartet, etwa, weil zusätzliche Sensoren vorhanden sind. In diesem Fall empfiehlt es sich, das autocreate-Attribut an dem MQTT2_DEVICE zu löschen, damit alle weiteren Informationen verarbeitet werden und ggf. im jsonMap-Attribut nur die Angabe "POWER1:state" zu belassen.
Vielleicht erklärst du erst mal, was wo eigentlich "nativ" vorhanden ist, und was wo dann "nur" als MQTT-Entity existiert....?
Und wenn man Daten von woanders empfängt, ist ein "Zwischengerät" mit bridgeRegepx und ignoreRegexp dringend zu empfehlen, siehe Wiki zu MQTT2_CLIENT.
Ansonsten gibt es einen recht aktuellen Thread rund um attrTemplate bei MQTT_GENERIC_BRIDGE (auch wenn da vieles noch fehlt), der hilft ggf. weiter?
Aber klar gerne doch.
letztlich versuche ich alles über den Homey abzubilden. An diesen lerne ich alle Geräte an, die er letztlich unterstützt.
Die ganzen Geräte sollen dann zum Home Assistant übertragen werden, der letztlich nur als UI dienen soll, da mir das FHEM UI nicht wirklich zusagt (Stand 2019).
Da keines der Systeme EnOcean unterstützt bzw. nicht wirklich, kommt FHEM in diesem Bereich zum Einsatz. In dem Zusammenhang lerne ich bspw. die Schalter ein um bspw. auf deren Statusänderungen zu reagieren. Des Weiteren Nutze ich das USB300 um meine Aktoren zu schalten, in dem ich es als Schalter agieren lasse.
Dazu lerne ich die verschiedenen Adressen des TCM per PCT-14 ins FAM14 ein, da alle Aktoren über dieses geschaltet werden. Das klappt auch erstaunlich gut.
Damit alle drei Systeme miteinander interagieren können, habe ich ein mosquitto aufgebaut, der als zentraler MQTT Server agiert.
Im FHEM läuft die Bridge neben dem Client.
Meine Verständnisprobleme, in denen ich mich langsam zurechtfinde ist die Art und Weise wie ich die verschiedenen Geräte mit ihren Status bspw. ins FHEM bekomme um dort auch direkt zu schalten und nicht nur den Status bzw. die Änderungen des Schalters per MQTT weitergebe. Genauso möchte ich Befehle aus dem Homey heraus per MQTT senden, so dass bspw. der EnOcean Schalter schaltet. Quasi ein Subscribe, welches dann ein Set auslöst.
Da MQTT doch recht komplex sein kann und irgendwie jedes System seine Eigenheiten mitbringt, ist das gar nicht so leicht alles zu fassen.
Aktuelle Wissenlücken in FHEM:
- Auf MQTT Befehl hin Schalter schalten
- MQTT Geräte sauber einbinden
- Statusänderungen an schaltern per MQTT senden
PS: Technisch habe ich alles über Rancher Kubernetes Container gelöst, so dass ein ausreichend starker Rechner FHEM, moquitto und HA nebeneinander laufen lässt. Klappt sehr gut.
Hi,
hab's jetzt soweit ich es benötige hinbekommen. Mal sehen wo es mich mal noch hinführt. :)