Mit openHAB 2.3 wurde auch eine neue Version des KNX Bindings vorgestellt. Mit dem KNX 2 Binding wird KNX auch Paper UI fähig. Leider ist es mit der Installation des neuen Bindings nicht getan. Der Aufbau hat sich etwas geändert, so dass einige Anpassungen notwendig sind. Im ersten Moment erscheint alles etwas verwirrend. Wo ursprünglich eine knx.items Datei genügt hat, ist nun eine knx.things UND eine knx.items Datei notwendig.
Vorbereitung
Je nach Größe der KNX Installation bedeutet die Migration auch eine ordentliche Portion Schreibarbeit. Damit die ganze Haustechnik über mehrere Tage offline ist, habe ich die Vorarbeiten für die Migration offline durchgeführt. Hierzu benötigst du aus der laufenden Installation deine knx.items Datei, in der deine KNX Zuordnungen enthalten sind. Lege eine Kopie davon lokal auf deinem Computer ab.
Nun erstellst du lokal auf deinem Computer eine zweite Datei mit dem Namen knx.things. Idealerweise nutzt du für alle weiteren Schritte VS Code.
Öffne beide Dateien in VS Code in jeweils eigenen Fenstern und zeige sie, soweit möglich, nebeneinander an. Ich nutze einen 2. Bildschirm hierfür.
Eine grundsätzliche Entscheidung ist noch zu treffen. Möchtest du alle Du kannst alle deine Channels unter einem Thing/Device anlegen, oder möchtest du deine KNX Hardware (Aktoren, etc.) entsprechend in der Software abbilden. Als Thing kannst du beispielsweise einen Aktor in deinem Schaltschrank betrachten. Auf diese Weise habe ich es gelöst. Hierzu habe ich mir die ETS zur Hilfe genommen, habe mir die Aktoren mit ihren physikalischen Adressen herausgesucht und dann die Channels mit den dazugehörigen Gruppenadressen in openHAB im jeweiligen Device abgebildet.
Die knx.things Datei des KNX 2 Binding
Mit dem KNX 2 Binding verschwindet auch die knx.cfg Datei, in der bisher die Schnittstelle eingetragen wurde. Stattdessen wird alles zentral in der knx.things eingetragen. Die Basiskonfiguration für eine IP Schnittstelle im Tunnel Mode sieht folgendermaßen aus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Bridge knx:ip:bridge [ ipAddress="192.168.1.1", portNumber=3671, type="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=1, localSourceAddr="0.0.0" ] { //AB HIER WERDEN DIE DEVICES ANGELEGT Thing device aktor1[ address="1.0.181", fetch=false, pingInterval=300, readInterval=0 ] { Type switch : demoSwitch "Light" [ ga="3/0/4+<3/0/5" ] //-->Hier weitere Channels einfügen } } |
Nähere Informationen zu den Konfigurationsmöglichkeiten der Schnittstelle findest du in der entsprechenden openHAB Dokumentation
Bennenung bei existierendem KNX 1 Projekt
Es wäre natürlich toll, wenn man alle bestehenden Regeln etc. in openHAB nach der Umstellung auf KNX 2 einfach weiter verwenden könnte. Das ist problemlos möglich. Dazu ist es ratsam die Objekte in der knx.things Datei einfach entsprechend der bisherigen knx.items zu bennenen, bzw. den Channel einfach dem gleichen Item in der knx.items zuzuordnen.
Benennung in der „alten“ knx.items
1 |
Switch Licht_UG_Schlafen_Wand "Schlafen Wand" <light> {knx="1/2/2+<11/2/2"} |
Nun wird in der neuen knx.things Datei am Beispiel des „aktor 1“ ein entsprechender Channel angelegt:
1 |
Type switch : licht_UG_Schlafen_Wand "Schlafen Wand" [ga="1/2/2+<11/2/2"] |
Damit du später die openHAB Installation mit allen Regeln und Einstellungen für KNX ohne Probleme weiterverwenden kannst, wird jetzt in der knx.items Datei einfach der Teil {knx=“1/2/2+<11/2/2″} durch die neue Channel Verlinkung ersetzt. Das sieht dann so aus:
1 |
Switch Licht_UG_Schlafen_Wand "Schlafen Wand" <light> { channel="knx:device:bridge:aktor1:licht_UG_Schlafen_Wand" } |
Wenn du mehrere Diveces in der knx.things anlegst, ist zu beachten, dass sich neben dem Channel selbst (hier: licht_UG_Schlafen_Wand) auch die Angabe davor (hier: aktor1) in der Zuordnung ändern kann.
Auf diese Weise habe ich in der items Datei alle KNX Zuordnungen, durch die neuen Channel Zuordnungen ersetzt. Damit bleiben alle Items erhalten und auch Verknüpfungen in Regeln und der Sitemap sind vom Umstieg auf KNX2 nich betroffen und können wie gewohnt weitergenutzt werden.
Installation des KNX 2 Bindings
Sobald die Vorbereitungen abgeschlossen sind, kann die Umstellung von KNX 1 auf KNX 2 erfolgen. Hierzu wird im ersten Schritt in der Paper UI unter „Add-ons – Bindings“ das KNX 1 Binding deinstalliert und das KNX 2 Binding installiert.
Wenn das KNX 2 Binding installiert ist, müssen noch die neu angelegte knx.things und die geänderte knx.items Datei eingebunden werden. Hierfür öffnest du den VS Code Editor und ziehst die Dateien in die entsprechenden Ordner. Die knx.things kommt in den things Ordner, die knx.items kommt in den items Ordner. Falls hier noch die frühere knx.items liegt muss diese entweder überschrieben oder vorher gelöscht werden.
Fertig 🙂
Jetzt sollte alles funktionieren. Ich habe das System einmal neu gestartet, damit alle Dienste sauber gestartet werden. Der Umstieg hat in meinem Fall super funktioniert. Ein paar Tippfehler haben zwar dazu geführt, dass der ein oder andere Switch erst einmal außer Betrieb war – bei mehr als 100 KNX Channels gehört das aber wohl dazu.
Hallo,
ich richte bei mir gerade openhab 2.4 auf raspi 3b ein, von openhab 1.7 kommend, jetzt wollte ich meine Item und Sitemap Dateien übernehmen werden auch angezeigt in der Basic UI.
Nun die Verbindung zur KNX-Schnittstelle klappt nicht, die KNX.cfg wird nicht angelegt, jetzt lese ich bei dir
„Mit dem KNX 2 Binding verschwindet auch die knx.cfg Datei“ schon mal Danke für den Hinweis.
In Things hab ich die Schnittstelle nun angelegt und diese wird auch als online angezeigt, jedoch läuft die Basic UI mit meinen 1.7 Items immer noch nicht, woran kann das liegen ?
Mfg Jürgen
Guten Morgen Jürgen,
mit dem KNX 2 Binding hat sich auch die Verknüpfung der Items geändert. In der Items Datei wird nicht mehr direkt die KNX GA verknüpft.
Du legst nun alle KNX Geräte in der Things Datei an und diese werden dann in der Items Datei mit beispielsweise
Switch Licht_UG_Schlafen_Wand "Schlafen Wand" { channel="knx:device:bridge:aktor1:licht_UG_Schlafen_Wand" }
verknüpft.Viele Grüße
Patrick
Erstmal vielen Dank für dein Blog, der hat mir schon viel geholfen.
Da durch habe ich auch die Umstellung auf KNX 2 geschafft.
Einzig, wenn ich per openhab APP Items schalte geht das manchmal verzögert und manchmal sofort.
Vor der Umstellung war dies nicht der Fall.
Nutzt du die APP und hattest/Hast das gleiche Problem oder?
Danke.
sorry, habe nicht gesehen dass du schon geantwortet hattest
Hallo, und erst mal vielen Dank.
Dankt deiner Seite habe ich die Umstellung auf KNX 2 geschafft.
Allerdings habe ich seit der Umstellung das Problem, dass wenn ich KNX-Items übers Handy per Openhab APP schalten will, dies nicht immer sofort geht.
Manchmal schaltet es verzögert oder gar nicht, andern mal wieder sofort.
Kennst oder hattest du das Problem auch? Oder nutzt du überhaupt die Openhab APP?
Viele Grüße
Basti
Hallo Basti,
freut mich, dass dir die Anleitung geholfen hat.
Das klingt sehr seltsam. Wie verhalten sich die Items, wenn du über die Weboberfläche schaltest? Funktioniert es dort immer sofort?
Ich habe die App ebenfalls in Benutzung und kann keine Probleme feststellen. Stellst du die Verbindung nur lokal her oder über den Cloud Dienst myopenhab?
Viele Grüße
Patrick
Sporadische Fehler finde ich auch immer super.
Die Verbindung ist immer nur lokal.
Über die Weboberfläche ist es aber das gleiche. Dachte schon, dass es an der Konfiguration liegen könnte. Habe daher alles wie bei dir in der Anleitung angegeben (Hatte erst die meisten sachen nicht mit angegeben, weil es die default werte sind.) außer „localSourceAddr=“0.0.0″“ woran es denke nicht liegen kann,
Daher weiß ich gerade nicht so wirklich woran es liegt?
Hallo Basti, puh – da bin ich echt überfragt. Kannst du den KNX Busverkehr auslesen? Nicht, dass hier irgendetwas die Leitung blockiert oder zumüllt.
Viele Grüße
Patrick
Hallo Patrick
Stöbere immer wieder gerne in deinen Beiträgen. Habe eine kurze Frage. Oben in dem Bild der Knx.things Datei ist nur ein Aktor beschrieben wo füge ich denn einen zweiten oder dritten ein? Habe mal versucht einfach den nächsten unten dran zuhängen was aber immer an einem Syntaxfehler scheitert. Könntest du da ein Beispiel geben?
Vielen Dank Der Berni
Hallo Bernhard,
vielen Dank 🙂 Ich habe dir eine Beispieldatei hochgeladen. Du kannst sie unter folgendem Link herunterladen: Beispiel KNX
Ich hoffe das hilft dir weiter.
Viele Grüße
Patrick
Ich danke Dir vielmals! Irgendwann sieht man den Wald vor lauter Klammern nicht mehr^^
Hat mir sehr geholfen.
Angenehme Woche noch.
Viele Grüße Bernhard
Super, dann kann es ja jetzt weitergehen 😉
Viel Spaß bei der weiteren Integration.
Hallo der Bernhard nochmal,
könntest du die Beispieldatei nochmal linken bitte. und habe noch ne Frage zu meinem Log. bekomme diese Warnung
Log Daten
Es wird auch nur mein KnxIP Router/tunnel als Online angezigt im paperui ist das Normal.
Hat das L-Data etwas mit den Flags in der Ets zu tun?
Vielen Dank für die Zeit und Hilfe
Hallo Bernhard,
klar, habe den Link oben ausgetauscht. Jetzt kann er ohne zeitliche Beschränkung heruntergeladen werden.
Diese Warnung habe ich bei mir noch nie gesehen (ich habe den Code mal in einer Textdatei angehängt, damit die Kommentarspalte lesbar bleibt 🙂 )
Ich hoffe du kommst mit meiner KNX.things weiter. Du kannst mir gerne auch mal deine .things schicken, wenn du möchtest.
Viele Grüße
Patrick
Hallo Patrick,
das Tutorial ist prima geworden und macht Mut als OpenHAB Neuling mit dem neuen Binding zu starten.
Allerdings sitzt das Problem wohl vor dem PC und nicht im PC und mir gelingt es einfach nicht, irgendetwas zu schalten. Immerhin funktioniert die Anlage meines IP Routers schon. :-/
Wäre es möglich Deine things und items Dateien zu bekommen? Würde mich ebenfalls an einer Donation beteiligen. Meine eMail ist joerg(at)asma.koeln
Danke und viele Grüße
Jörg
Hallo Jörg,
klar, ich bereite dir meine Daten vor. Kann allerdings morgen werden. Bin heute leider den ganzen Tag unterwegs.
Viele Grüße
Patrick
Ich will eigentlich nur die aktuellen Wetterdaten und die Werte aus meinem DS18B20-Sensor auf den KNX-Bus schicken, damit ich sie z.B. auf einem MDT Glastaster ausgeben, bzw. damit dann weitere Aktionen wie Heizungssteuerung auslösen kann.
Hast du sowas bei dir schon umgesetzt?
Viele Grüße
Tobias
Das habe ich tatsächlich noch nicht umgesetzt. Eventuell stellst du deine Frage mal im KNX Forum in der openHAB Ecke (https://knx-user-forum.de/forum/supportforen/openhab). Dort hat bestimmt jemand das ganze bereits umgesetzt und kann dir schneller helfen 🙂 Gerne kannst du deine Erfahrungen hier mit mir teilen. Wer weiß wann ich vor dem gleichen Problem stehe 😉
Hallo Patrick. Dank deinem guten Artikel habe ich es jetzt endlich geschafft das sich das erste Licht im Esszimmer schalten lässt. Vorher hatte ich mich gewundert warum nach Installation von KNX2-Binding im Raspberry unter Services keine knx.cfg angelegt wird und bin schier verzweifelt.
Da ich mit meiner Visu per openHABian und VS Code noch ganz am Anfang stehe und lediglich ein kleines Beispiel zum Testen geschrieben hab jetzt die Frage: muss ich das wirklich so aufwändig mit den zwei Dateien (knx.items + knx.things) schreiben? Das sieht mir nach deutlich mehr Schreib-Aufwand als mit dem KNX1-Binding aus, da nun auch die Aktiren mit ihrer phys. Adresse aufgeschrieben werden müssen. Geht das nicht einfacher?
Grüße, Ben
Hallo Patrick. Dank Deinem Beitrag habe ich es endlich geschafft, das unser Raspberry PI 3 das KNX ansteuert. Vorher hatte ich das KNX2-Binding über die PaperUI installiert und mich gewundert, warum dabei keine knx.cfg unter Services angelegt wird – bin schier verzweifelt und die Lampen im Esszimmer blieben dunkel :-(.
Da ich noch ganz am Anfang bin und mit VS Code lediglich mal ein kleines Beispiel zum testen erstellt habe, nun meine Frage: muss ich das wirklich so aufwändig mit den zwei Dateien knx.items und knx.things parallel machen?! Das scheint mir deutlich mehr Schreibaufwand als unter Deinem Beitrag KNX1 beschrieben da ja für KNX2 die ganzen Aktoren separat aufgeführt werden müssen?
Gruß Ben
Hallo Ben,
freut mich sehr, dass dir der Artikel geholfen hat 🙂
Der Aufbau hat sich beim KNX2 Binding komplett geändert. Es ist zwingend erforderlich mit der 2 Dateien zu arbeiten. Das hat den Vorteil, dass du – sofern du in der Things real existierende Aktoren angibst – auch deren Status auslesen kannst. Sobald die Arbeit einmal gemacht ist, funktioniert das Ganze aber tadellos 🙂
Viele Grüße
Patrick
Hallo Patrick,
kannst du mir vielleicht deine 2 Dateien knx.items und knx.things zur Verfügung stellen und an ben.account@gmx.de schicken? Würde mir es erleichtern die Zusammenhänge nachzuvollziehen. Und die Datei knx.Sitemap wäre auch klasse….wie gesagt, bin noch am Anfang und muss noch viel lernen. Wäre mir auch eine kleine Spende wert…
Schon mal Danke! 😀
Viele Grüße,
Ben
Hallo Ben,
klar. Ich mache dir meine Dateien fertig. Bei mir gibt es allerdings keine reine knx.sitemap Datei. Meine Sitemap beinhaltet mein ganzes Haus von KNX, über Hue, bis hin zu selbstgebastelten MQTT Lösungen. Das wäre glaube ich kontraproduktiv. Wühle dich einfach mal durch die .things und .items Datei. Vielleicht bringt dich das schon weiter 🙂
Hallo Patrick,
toller Beitrag. Ich stehe auch noch ganz am Anfang mit KNX und OpenHab. Ich habe es schon geschafft einen Aktor mit OpenHab zu steuern aber Werte vom OneWire oder Yahoo-Weather Binding an den Bus zu schicken klappt irgendwie noch gar nicht. Kannst du mir evtl. auch mal deine Einstellungen schicken? Ich denke ich brauche nur mal eine Grundeinrichtung, damit ich das dann auf meine anderen Geräte übertragen kann.
Vielen Dank schon mal
Tobias
Hallo Tobias,
freut mich, dass du über openHAB deine KNX Installation steuern kannst.
Eine Grundeinstellung von openHAB gibt es in dem Sinne nicht. Kannst du mir schildern was du im Detail vorhast? Eventuell kann ich dir beispielhaft in einem speziellen Fall helfen. In den meisten Fällen brauchst du ja keine Werte von anderen Geräten direkt auf den Bus schicken, da openHAB ja dazwischen hängt und mit Regeln Aktionen auslösen kann.
Viele Grüße
Patrick