Seite 1 von 1

Http item mit KNX schalten

Verfasst: 16. Mai 2020 20:19
von rhierlmeier
Ich habe einen Teichfilter mit WLAN Anschluss. Dieser stellt ein Rest-Interface zur Verfügung um diverse Operationen auszuführen. Eine davon ist z.B. die Teichbeleuchtung zu schalten. Mir ist es gelungen ein entsprechendes Item zu konfigurieren:

Code: Alles auswählen

Switch TeichLichtSchalten "Teichlicht [%s]"  <light> (Teich) { http=">[*:GET:http://192.168.10.14:8080/config/toggleLight] <[teichConfig:6000:JS(teichLicht.js)]"}
Dieses Item funktioniert. Es wird in der Sitemap korrekt angezeigt und ich kann das Licht über Openhab auch ein- und ausschalten.

Ich möchte das Teichlicht nun auch über einen Schalter im KNX Netz schalten. Ich habe hierfür in den KNX things ein switch-control definiert:

Code: Alles auswählen

    Type switch-control : TeichLichtSchaltenKnx  "Light" [ga="1/0/80+<1/0/81"]
Aber wie verbinde ich nun das HTTP Item mit dem KNX Thing?

Ich hab im Internet ein Beispiel gefunden, da wurde ein KNX Schalter mit einer Phillips Hue Lampe verbunden. Dabei wurde im Item zwei Channels angegeben.
Aber ich habe für das HTTP Item keinen Channel oder?

Re: Http item mit KNX schalten

Verfasst: 16. Mai 2020 20:47
von rhierlmeier
Ich hab nun einfach in den geschweiften Klammern des Items den KNX Channel angegeben:

Code: Alles auswählen

Switch TeichLichtSchalten "Teichlicht [%s]"  <light> (Teich) { 
 http=">[*:GET:http://192.168.10.14:8080/config/toggleLight] <[teichConfig:6000:JS(teichLicht.js)]",
      channel="knx:device:bridge:generic:TeichLichtSchaltenKnx"
 }
In den Logs kommt kein Fehler. Der Kanal wird scheinbar akzeptiert. In der Karaf-Konsole wird ein Link angezeigt:

Code: Alles auswählen

openhab> smarthome:links list | grep TeichLicht
TeichLicht -> knx:device:bridge:generic:haislTeichLichtSchaltenKnx
haislTeichLichtSchaltenKnx -> knx:device:bridge:generic:haislTeichLichtSchalten
Aber beim Schalten des KNX-Schalters passiert nichts.
Auch beim Schalten des Schalters in der Sitemap wird auf den KNX-Bus kein Signal gesendet (überprüft mit dem Diagnose-Tool in ETS).

Re: Http item mit KNX schalten

Verfasst: 16. Mai 2020 21:28
von udo1toni
Also erstmal: switch-control bedeutet, dass openhAB gegenüber dem knx-System die Rolle eines Aktor übernimmt. Das bedeutet, dass openHAB den Status an knx liefert. knx sendet dafür Befehle an openHAB. Bei den anderen Cahnneln (also ohne -control) ist es genau andersrum.
Für *-control Channel gilt weiterhin die knx-Regel, dass ausschließlich auf der 1. GA gesendet wird.
Das bedeutet für Deine Konfiguration oben:
1. das < wird ignoriert.
2. openHAB empfängt Befehle auf 1/0/80 und 1/0/81
3. openHAB sendet den Status auf 1/0/80

Wenn Du zwei Bindings über ein Item miteinander verlinkst, kann es sein, dass Du das Profil follow setzen musst. Schau Dir dazu bitte die offizielle Doku an, da ist das erklärt.

Wenn es partout nicht über den Item-Link funktionieren will, kannst Du einfach zwei Rules anlegen, die eine reagiert auf received command auf dem knx-control Item, die andere reagiert auf changed für das http Item.
Beide Rules steuern dann jeweils das andere Item, wobei das changed-Ereignis per postUpdate(!!!) an knx weitergeleitet wird, während das received command Ereignis per sendCommand an das http Item geschickt wird.

Re: Http item mit KNX schalten

Verfasst: 17. Mai 2020 08:10
von rhierlmeier
Vielen Dank für den Tipp, das Vertauschen der zwei Gruppenadressen im GA des switch-control hat geholfen.
Hier nochmal die komplette Konfiguration zu Dokumentationszwecken:

Am KNX Bus habe ich folgende Gruppenadressen:

1/0/80 Teichlicht schalten
1/0/81 Teichlicht Status

In der knx.things Datei ein switch-control definieren. Dabei ist wichtig, dass der erste Parameter auf die "Status"-Gruppenadresse zeigt und der zweite Parameter auf die "Schalten"-Gruppenadresse:

Code: Alles auswählen

    Type switch-control : teichLichtSchalten  "Light" [ga="1/0/81+1/0/80"]
In der Items-Datei ein Item definieren, dass in der Bindings-Konfiguration die Http-Parameter und zusätzlich einen Channel auf das KNX-Thing hat:

Code: Alles auswählen

Switch TeichLicht "Tecihlicht [%s]"  <light> (Teich) 
       { http=">[*:GET:http://192.168.10.14:8080/config/toggleLight] <[teichConfig:6000:JS(teichLicht.js)]", 
         channel="knx:device:bridge:generic:teichLichtSchalten"}
Ein Angabe eines "fellow" Profiles in den ga-Parametern war bei mir nicht notwendig.

Re: Http item mit KNX schalten

Verfasst: 17. Mai 2020 14:37
von udo1toni
Das follow Profile würde im Item gesetzt, falls notwendig. :) Ist auch irgendwie logisch, da es ja um die Verbindung zweier Bindings über das Item geht und nichts mit knx im Besonderen zu tun hat.