Seite 1 von 1
MQTT zu KNX Werte übertragen
Verfasst: 10. Aug 2021 16:56
von Andi7032
Hallo zusammen,
ich fange gerade an mich intensiv mit Smart Home zu beschäftigen. Der Hausbau geht bald los!
Mein Testaufbau umfasst aktuell ein OH3 (Synology Docker) in Verbindung mit KNX (Glastaster II, Smart55, Dimmaktor) und ESP2866 mit DS18b20.
Ich möchte gerne von einem ESP2866 die aktuelle Temperatur auf den Glastaster anzeigen lassen. Der ESP sendet über MQTT die Werte an OH.
Wie muss ich die Bridge von MQTT zu KNX bauen?
Wenn ich ein Item (number) in den MQTT und KNX Channel setze und das Item auf der Oberfläche als Slider habe, dann kann ich per Slider den Wert ändern und neue Werte von MQTT werden auch ins KNX Netz gesendet. Nur sobald ich meinen Browser schließe kommt nichts mehr neues an.
LG
Andi
Re: MQTT zu KNX Werte übertragen
Verfasst: 10. Aug 2021 19:51
von udo1toni
Dein Browser sollte eigentlich nichts damit zu tun haben
Grundsätzlich sollte es reichen, die betreffenden Channel mit einem passenden Item zu verlinken. Natürlich gibt es ein paar Kleinigkeiten zu beachten

Grundsätzlich leitet openHAB ausschließlich Commands an ein Binding weiter. Gleichzeitig ist es gewöhnlich so, dass über mqtt empfangene Payloads als Status Update gewertet werden.
Nun gibt es verschiedene Möglichkeiten, mit diesem Problem umzugehen.
- Klassich (und umständlich): Mehrere Items und je Itempärchen eine Rule, die den geänderten Wert als Befehl weiterleitet.
- Über die Metadaten profile=follow setzen. Damit werden Status Updates als Befehl an die verbundenen Channel weitergereicht.
- Im mqtt Binding ist es möglich, einen Channel so zu konfigurieren, dass ankommende Payloads als Befehl ausgewertet werden. Damit leitet openHAB sie automatisch an die anderen verknüpften Channel weiter.
- Im knx Binding gibt es die *-control Channel.
Gewöhnlich verhält sich openHAB passiv, also eher wie ein Lichtschalter denn wie ein Relais. Wenn man *-control Channel nutzt, dreht sich das Verhalten um.
Gewöhnlich wertet openHAB ankommende GA als Status Update und sendet die Commands. Bei *-control Channels wertet openHAB ankommende GA als Commands und sendet Status Updates an den Bus, das heißt, openHAB verhält sich dann wie ein Stellvertreter für den Aktor, der mit einem anderen Binding angebunden ist.
ACHTUNG! Jeder dieser Wege ist exklusiv und darf nicht kombiniert werden. Aber alle vier Varianten sind legitim.
Welcher Weg der "beste" ist, kommt vor allem auf das drumherum an. Es gibt Bindings, die weniger flexibel sind.
Es gibt auch den Fall, dass Werte nicht 1:1 übertragen werden dürfen, das heißt, es muss dann noch eine Transformation stattfinden.
Re: MQTT zu KNX Werte übertragen
Verfasst: 10. Aug 2021 22:21
von Andi7032
Hallo Udo, riesiges Dankeschön für die einfache sehr ausführliche Antwort!!
Re: MQTT zu KNX Werte übertragen
Verfasst: 10. Aug 2021 23:25
von Andi7032
Ich habe nun den 3. Weg gewählt, klingt für mich aktuell am sinnvollsten.
3. Im mqtt Binding ist es möglich, einen Channel so zu konfigurieren, dass ankommende Payloads als Befehl ausgewertet werden. Damit leitet openHAB sie automatisch an die anderen verknüpften Channel weiter.
Vielen Dank nochmal
postCommand: true
Code: Alles auswählen
UID: mqtt:topic:7e471689d7:2dac1ea8dc
label: Generic MQTT Thing
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:7e471689d7
channels:
- id: Temperatur
channelTypeUID: mqtt:number
label: Temperatur
description: ""
configuration:
retained: false
postCommand: true
unit: °C
stateTopic: ESP_Easy/sensor1/temperature
Re: MQTT zu KNX Werte übertragen
Verfasst: 10. Aug 2021 23:40
von udo1toni
Mit der unit musst Du aufpassen, knx kann kein UoM. Aber vielleicht geht es auch trotzdem

ich hab das halt noch nie probiert...