MQTT zu KNX Werte übertragen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Andi7032
Beiträge: 3
Registriert: 10. Aug 2021 16:43
Answers: 0

MQTT zu KNX Werte übertragen

Beitrag 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
von udo1toni » 10. Aug 2021 19:51
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.
  1. Klassich (und umständlich): Mehrere Items und je Itempärchen eine Rule, die den geänderten Wert als Befehl weiterleitet.
  2. Über die Metadaten profile=follow setzen. Damit werden Status Updates als Befehl an die verbundenen Channel weitergereicht.
  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.
  4. 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.
Gehe zur vollständigen Antwort

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT zu KNX Werte übertragen

Beitrag 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.
  1. Klassich (und umständlich): Mehrere Items und je Itempärchen eine Rule, die den geänderten Wert als Befehl weiterleitet.
  2. Über die Metadaten profile=follow setzen. Damit werden Status Updates als Befehl an die verbundenen Channel weitergereicht.
  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.
  4. 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.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Andi7032
Beiträge: 3
Registriert: 10. Aug 2021 16:43
Answers: 0

Re: MQTT zu KNX Werte übertragen

Beitrag von Andi7032 »

Hallo Udo, riesiges Dankeschön für die einfache sehr ausführliche Antwort!!

Andi7032
Beiträge: 3
Registriert: 10. Aug 2021 16:43
Answers: 0

Re: MQTT zu KNX Werte übertragen

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT zu KNX Werte übertragen

Beitrag 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...
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten