Hallo zusammen,
ich würde gerne OpenHAB als MQTT-Gateway von und zu KNX nutzen. Aktuell habe ich insgesamt über 1000 KNX Gruppenadressen vergeben, deshalb sollte das Ganze möglichst gut skalieren, d.h. schlank und ressourcenarm ablaufen und eine gute Wartbarkeit wäre auch nicht unwichtig :-)
Usecase:
Ein KNX-Taster schaltet auf einem KNX-Aktor ein Licht an. Der Status des Aktors soll an MQTT übertragen werden.
So weit, so gut, und auch relativ simpel.
Was aber, wenn der KNX-Aktor auch gleichzeitig von MQTT aus geschaltet werden soll?
Und genau hier versagt meine Vorstellungskraft, wie ich das richtig und rückkopplungsfrei in KNX abbilde. Am elegantesten wäre es IMO, Rules zu vermeiden (um Ressourcen zu sparen), und der Einfachheit halber direkt zwei Channels zu brücken. Ich könnte mir folgendes Setup vorstellen:
knx.things:
Dabei ist 1/0/30 die Schalt-GA (An/Aus) und 1/7/30 die Status-GA.
mqtt.things:
knx.items:
Wenn ich das aber so implementiere, passiert folgendes:
Hat jemand Ideen, wie man sowas ohne Rules lösen kann?
ich würde gerne OpenHAB als MQTT-Gateway von und zu KNX nutzen. Aktuell habe ich insgesamt über 1000 KNX Gruppenadressen vergeben, deshalb sollte das Ganze möglichst gut skalieren, d.h. schlank und ressourcenarm ablaufen und eine gute Wartbarkeit wäre auch nicht unwichtig :-)
Usecase:
Ein KNX-Taster schaltet auf einem KNX-Aktor ein Licht an. Der Status des Aktors soll an MQTT übertragen werden.
So weit, so gut, und auch relativ simpel.
Was aber, wenn der KNX-Aktor auch gleichzeitig von MQTT aus geschaltet werden soll?
Und genau hier versagt meine Vorstellungskraft, wie ich das richtig und rückkopplungsfrei in KNX abbilde. Am elegantesten wäre es IMO, Rules zu vermeiden (um Ressourcen zu sparen), und der Einfachheit halber direkt zwei Channels zu brücken. Ich könnte mir folgendes Setup vorstellen:
knx.things:
Code:
Type switch: kg_heizraum_beleuchtung_onoff "KG Heizraum Beleuchtung An/Aus" [ ga="1/0/30+<1/7/30" ]
mqtt.things:
Code:
Type switch: kg_heizraum_beleuchtung_onoff "KG Heizraum Beleuchtung An/Aus" [ stateTopic="building/kg/heizraum/beleuchtung/status", commandTopic="building/kg/heizraum/beleuchtung/onoff", on="1", off="0", postCommand="true" ]
Code:
Switch kg_heizraum_beleuchtung_onoff "KG Heizraum Beleuchtung An/Aus [%s]" (gZabbixOnOff) { channel="knx:device:bridge:generic:kg_heizraum_bel euchtung_onoff", channel="mqtt:topic:mqtt1:building:kg_heizraum_bel euchtung_onoff" }
- Der KNX-Aktor kann vom KNX-Taster aus geschaltet werden, und der Status wird in der OpenHAB-Sitemap korrekt abgebildet.
- ...in MQTT allerdings sehe ich den Schaltvorgang weder unter building/kg/heizraum/beleuchtung/onoff, noch unter building/kg/heizraum/beleuchtung/status.
- Der KNX-Aktor kann von der OpenHAB-Sitemap aus geschaltet werden, und der Status wird in der OpenHAB-Sitemap und am KNX-Taster korrekt abgebildet.
- ...in MQTT sehe ich den Schaltvorgang unter building/kg/heizraum/beleuchtung/onoff, aber auf building/kg/heizraum/beleuchtung/status kommt nichts an.
- Das Senden einer "1" auf building/kg/heizraum/beleuchtung/onoff bewirkt gar nichts.
Hat jemand Ideen, wie man sowas ohne Rules lösen kann?
Kommentar