Für alle, die eine KNX Installation zu Hause verbaut haben, wissen: KNX ist eine feine Sache. Zusammen mit openHAB wird das ganze noch viel besser. Die Anbindung des KNX Bus an openHAB ist einfacher als man sich das vielleicht vorstellt.
Zuerst stellt sich die Frage: Was benötige ich, damit mein openHAB mit dem KNX Bus kommunizieren kann? Das ganze funktioniert über einen KNX IP Gateway. Falls ein solches Bauteil schon im Haus in Betrieb ist muss hier nichts weiter getan werden, ansonsten sollte man sich dieses Bauteil anschaffen. Da ich ungern mit Stromkabeln hantiere habe ich mich für ein IP Gateway mit PoE Stromversorgung (Power over Ethernet) entschieden. Hierbei wird der Gateway über das Netzwerkkabel mit Strom versorgt. Im Idealfall passiert das über einen PoE Switch, der bei mir direkt neben dem Verteilerkasten steht. Ansonsten gibt es auch Adapter, die das ganze erledigen. Alternativ findest du in der Liste ein IP Gateway mit Spannungsversorgung über den KNX Bus.
KNX IP Schnittstelle anschließen
Der Anschluss des KNX IP Gateway ist recht simpel. In meinem Fall habe ich die alte serielle BUS Schnittstelle entfernt und die Anschlussklemme mit meinem neuen IP Gateway verbunden. Aktuell ist das ganze noch eher fliegend gelöst – aber was nicht ist kann ja noch werden. Danach das Netzwerkkabel (mit PoE) anstöpseln – fertig. Idealerweise ist im Netzwerk DHCP aktiviert, damit die Schnittstelle automatisch eine IP zugewiesen bekommt. Die IP Adresse findest du am leichtesten in der Netzwerkübersicht des Routers (z.B. FritzBox) heraus.
Binding installieren und konfigurieren
Im nächsten Schritt muss openHAB KNX beigebracht werden. Das geht über die Paper UI Ansicht recht einfach. Hierzu wird im Browser die Paper UI unter openhabianpi:8080/paperui aufgerufen. Über die Menüleiste wird der Punkt „Add-ons“ angewählt -> oben das Tab „Bindings“ anwählen und bis zu „KNX Binding“ herunterscrollen und rechts auf „Install“ klicken. Das Binding ist (leider) noch kein 2.1 Bindung. Das ist aber nicht weiter tragisch.
Nun geht es ans Eingemachte. Um das Binding zu konfigurieren müssen wir auf die Config Datei zugreifen. Dafür musst du dich mit dem Raspberry als Server verbinden, um an die Dateien zu gelangen. Das geht auf dem Mac mit dem Finder oder über ein FTP Programm wie z.B. Filezilla.
Wenn du mit dem Server verbunden bist, ist das richtige Verzeichnis /openHAB-Conf/services. Hier sollte die Datei knx.cfg zu finden sein. Diese Datei öffnest du mit einem Texteditor. Ich habe mich für Visual Studio Code von Microsoft (mehr zu Visual Studio Code) entschieden. Hier gibt es extra openHAB Addon, welches die Arbeit enorm erleichtert. Aber auch andere Editoren wie Sublime Text sind wunderbar geeignet. Der Inhalt sieht in etwa so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# KNX gateway IP address # (optional, if serialPort or connection type 'ROUTER' is specified) ip=192.168.178.41 # Local KNX Binding bus address. # Use it, when two or more openHAB Instances are connected to the same KNX bus. # (optional, defaults to 0.0.0) #busaddr= # Ignore local KNX Events, prevents internal events coming from # 'openHAB event bus' a second time to be sent back to the 'openHAB event bus'. # Note: To send back events second time is a Bug, but for backward compatibility, the behavior is not changed. # For new installations, its recommend to set "ignorelocalevents=true" # (optional, defaults to false) #ignorelocalevents= # KNX IP connection type. Could be either TUNNEL or ROUTER (optional, defaults to TUNNEL) # Note: If you cannot get the ROUTER mode working (even if it claims it is connected), # use TUNNEL mode instead with setting both the ip of the KNX gateway and the localIp. type=TUNNEL # KNX gateway port (optional, defaults to 3671) # Note: If you use eibd, setting to 6720 #port= # Local endpoint to specify the multicast interface, no port is used (optional) localIp=192.168.178.36 # Serial port of FT1.2 KNX interface (ignored, if ip is specified) # Valid values are e.g. COM1 for Windows and /dev/ttyS0 or /dev/ttyUSB0 for Linux #serialPort= # Pause in milliseconds between two read requests on the KNX bus during # initialization (optional, defaults to 50) #pause= # Timeout in milliseconds to wait for a response from the KNX bus (optional, # defaults to 10000) #timeout # Number of read retries while initialization items from the KNX bus (optional, # defaults to 3) #readRetries # Seconds between connect retries when KNX link has been lost # 0 means never retry, it will only reconnect on next write or read request # Note: without periodic retries all events will be lost up to the next read/write # request # (optional, default is 0) #autoReconnectPeriod=30 ### Auto refresh feature # Number of entries permissible in the item refresher queue. # (optional, defaults to 10000) #maxRefreshQueueEntries= # Number of parallel threads for refreshing items. (optional, defaults to 5) #numberOfThreads= # Seconds to wait for an orderly shutdown of the auto refresher's # ScheduledExecutorService. (optional, defaults to 5) #scheduledExecutorServiceShutdownTimeoutString= # Use NAT (Network Address Translation) # (optional; defaults to false) #useNAT=true |
Zu Beginn ist alles mit # auskommentiert. Die zu konfigurierenden Zeilen werden durch einfaches entfernen der # aktiviert. In unserem Fall sind das 3 Zeilen
1 |
ip=192.168.178.41 |
Bei ip ist die IP Adresse der KNX IP Schnittstelle einzutragen.
1 |
type=TUNNEL |
Bei type ist TUNNEL einzutragen.
1 |
localIp=192.168.178.36 |
Bei localIP ist die IP Adresse des Raspberry Pi einzutragen.
Das ist schon die ganze Konfiguration des KNX Bindings. Ab jetzt kann es an die Erstellung von Items gehen. Hierfür solltest du eine Übersicht über die Gruppenadressen deiner KNX Geräte im Haus haben.
Items anlegen
Das Grundprinzip der KNX Items wird anhand eines einfachen Schalters, auch Switch genannt, veranschaulicht. Auf Dimmer, Rolläden, Thermostate, Wetterstation, etc. werde ich in einem weiteren Artikel eingehen.
Zuerst muss eine Items Datei angelegt werden. hierzu öffnen wir das Verzeichnis /openHAB-conf/items und legen eine Datei mit dem Namen knx.items an. In dieser Datei landen alle KNX Items, in unserem Fall der Schalter.
Als Beispiel wählen wir eine Deckenleuchte im Esszimmer. Dieser besitzt eine Gruppenadresse um den Befehl zu empfangen und eine Listening Adresse, über die der aktuelle Status des Akors (An / Aus ) abgefragt wird. In unserem Beispiel lautet die folgendermaßen
Gruppenadresse: 1/1/8
Listeningaddress: 11/1/8
und der Code für das Item sieht so aus:
1 |
Switch Licht_EG_Essen_Tisch "Esstisch" (Essen, Licht) {knx="1/1/8+<11/1/8"} |
Switch: Die Art des Items. In unserem Fall ein Schalter mit An / Aus
Licht_EG_Essen_Tisch: Der „Ruf“Name des Items. Mit diesem Namen kann das Item später in der Visualisierung oder in Regeln angesrprochen werden. Ich habe mich für Worte mit _ als Trennung entschieden.
„Esstisch“: Die Beschriftung des Items. So würde das Item später in der Visualisierung benannt werden. Wähle eine kurze und selbsterklärende Bezeichnung, damit du sofort weißt um welches Licht oder Gerät es sich handelt. Wichtig ist auch das Wort in “ “ zu setzen.
(Essen, Licht): Hier kannst du deine Items gruppieren, um sie später gemeinsam anzuzeigen oder zu schalten. In meinem Fall habe ich eine Gruppe für das Esszimmer und eine Gruppe für alle Lichter im Haus gewählt – jeweils durch Kommas getrennt. Wichtig: die Gruppen in ( ) setzen.
{knx=“1/1/8+<11/1/8″}: Jetzt kommt die eigentliche Geräteansteuerung. hier ist definiert welche Gruppenadresse angesteuert wird. Die erste Adresse 1/1/8 ist die Adresse, über die der Aktor seinen Schaltbefehl erhält. Die zweite Adresse ist die Listening Address 11/1/8 über die der Status des Aktors abgefragt wird. Das + verbindet Gruppenadresse die dazugehörige Listening Addess. Das < sorgt dafür, dass der Status regelmäßig abgefragt wird, damit auch immer der Richtige Status (An / Aus) in der Visualisierung angezeigt wird. Der Befehl wird in { } gesetzt.
Item in Sitemap einfügen
Damit das Item auch betätigt werden kann, muss es noch in die Sitemap eingefügt werden. Falls du noch keine Sitemap angelegt hast, schaue dir den Artikel zum Aufbau der Sitemap an (Coming soon).
1 |
Switch item=Licht_EG_Essen_Tisch icon="light" |
In der Sitemap wird die Art der Steuerung definiert. In unserem Fall ist das Item ein Switch.
Das Item mit dem Rufnamen angesprochen werden, also item=Licht_EG_Essen_Tisch.
Wenn wir dem Schalter in der Visualisierung ein individuelles Icon zuordnen möchten, ist das natürlich möglich. In unserem Fall ist es eine Glühlampe über den Code icon=“light“. Die Liste der möglichen Icons findest du hier.
Geschafft! IP Schnittstelle angeschlossen und in Betrieb genommen, KNX Binding konfiguriert und unsere erste Lampe zum Leuchten gebracht. Viel Spaß beim Anlegen weiterer KNX Items.
Hallo Patrick,
Ich habe versucht der Anleitung zu folgen jedoch scheitert es bei mir ab den Punkt „ Wenn du mit dem Server verbunden bist, ist das richtige Verzeichnis /openHAB-Conf/services. Hier sollte die Datei knx.cfg zu finden sein.“
Was mache ich ab da falsch?
Über eine Antwort würde ich mich sehr freuen.
Viele Grüße,
Fritz
Hallo Fritz,
arbeitest du mit Windows oder Mac? Ab wo kommst du genau nicht weiter. Konntest du dich mit dem openHABian Server verbinden oder hängst du an der Stelle bereits?
Viele Grüße
Patrick
Ich arbeite mit Windows. Und habe vorher noch nichts mit Open HAB zu tun gehabt. Bin also noch ein Anfänger.
Ich habe bereits die Verbindung vom PC zum Open HAB via Putty herstellen können wenn du das meinst.
Viele Grüße,
Fritz
Das ist schonmal gut. Damit du aber über Visual Studio Code arbeiten kannst, braucht du Zugriff auf die entsprechenden Ordner. Taucht dein Raspberry mit openHAB in deinen Netzwerkgeräten unter Windows auf? Falls nicht musst du die SMB 1.0 Unterstützung unter Windows 10 aktivieren. https://www.asus.com/support/FAQ/1037477/
Viele Grüße
Patrick
Also die SMB 1.0 war schon aktiviert. Jedoch finde ich den Raspberry nicht im Netzwerk, dafür aber im Netzwerk der Fritz Box. Ich kann aber dennoch auf die OpenHAB-conf zugreifen. Das installierte KNX Binding taucht jedoch nicht in dem Verzeichnis Services nicht auf.
Hast du das KNX2 Binding installiert? Dann gibt es keine knx.cfg mehr. Hier findest du die Anleitung für das KNX2 Binding: https://zukunftathome.de/knx-2-binding-openhab-migration-von-knx-1/
Hallo,
nachdem deine Webseite mich nun schon öfter inspiriert hat, habe ich nun eine Frage an dich.
Ich sehe das du ein KNX Interface benutzt.
Nun liest man häufig in Foren man sollte einen KNX IP Router kaufen. Da ich für unser Haus noch ein bisschen Planungszeit habe, würde ich gern mal von dir wissen was der Router mehr kann und ob er nötig ist.
Geplant ist Licht, Rolladen und Heizung über KNX zu steuern.
Vielen Dank.
Hallo Ralf,
freut mich, dass dir die Anleitungen gefallen.
Zum Thema Interface gibt es scheinbar sehr viele Philosophien. Ich habe nur ein normales Interface im Einsatz und kann damit sowohl Geräte auf dem Bus über die ETS programmieren, als auch über openHAB Befehle auf den Bus senden. Das ist für meine Bedürfnisse völlig ausreichend. Du kannst mit einem Gateway einige Dinger mehr umsetzen, wie Filtertabellen, um den Zugriff auf bestimmte Linien einzuschränken oder du kannst ihn als Linienkoppler verwenden, wenn du die Linien über IP verbindest. Wenn du lediglich ab und an Geräte programmieren möchtest und ansonsten eine Verbindung von openHAB zum KNX Bus benötigst, genügt ein Interface völlig aus.
Kurze Frage zu dem Projekt…
Wie kann ich die KNX-Aktoren im genauen benennen ?
Also brauche ich dafür eine spezielle Software oder wie läuft das ab ?
Hallo Ludwig,
wenn du KNX mit openHAB nutzen möchtest, dann solltest du direkt auf das KNX2 Binding setzen. Dort kannst du auch jeden Aktor mit anlegen und einen Namen vergeben: https://zukunftathome.de/knx-2-binding-openhab-migration-von-knx-1/
Viele Grüße
Patrick
Hallo, ich weiß es ist ein älterer Artikel, jedoch hat er mir gerade sehr geholfen. Ich bin Neuling was das ganze angeht. Eine Frage habe ich dennoch. Ich habe jetzt die knx.item geschrieben. Habe aber bisher nur das Licht einbauen können. Wie mache ich das mit mit den Rollladen?
Gleichzeit weiß ich nicht genau wie ich das von der item in die Sitemap übertrage. Hintergrund ist der:
Die Sitemap ist aufgegliedert in EG, KG und DG!
Jetzt habe ich in manchen Räumen mehrere Lampen. Somit habe ich die Räume als Gruppe angelegt. (Group item=Bedroom)!
Wie bekomme ich jetzt die Lampen vom Schlafzimmer (3verschiedene Kreise) dem Bad zugeordnet? Vielleicht stehe ich auch nur auf dem Schlauch! 🤦🏻♂️😄
Hallo Rico,
es freut mich, dass dir der Beitrag weitergeholfen hat. Bezüglich Rollladen kannst du hier einmal schauen: https://zukunftathome.de/rollladen-automatisch-schalten-mit-openhab/ Allerdings bezieht sich das noch auf das KNX 1 Binding. Wie du nach KNX 2 migrierst habe ich hier beschrieben: https://zukunftathome.de/knx-2-binding-openhab-migration-von-knx-1/
Zur Sitemap schreibe ich dir die Tage eine extra Antwort, damit es nicht zu verwirrend wird 🙂
Viele Grüße
Patrick
Super, vielen Dank. Das schau ich mir mal an.👍🏻🙋🏻♂️
Hallo
Super Seite!
Gefällt mir sehr gut, weiter so!!!
Hab nur mal wieder eine Frage.
Wie muss ich die Sitemap aufbauen wenn ich mehrer Ebenen haben möchte.
z.B. erste Unterteilung Nach den Geschossen, Obergeschoss, Erdgeschoss usw.
dann auf die Räume unterteilt und dort halt wieder nach Funktion.
Alle Versuche enden bei mir das openHAB nicht mehr arbeitet.
Gruss
Hallo Oliver,
hier ein Auszug aus meiner Sitemap:
sitemap Hirschwald label="Haus"
{
Frame label="Haus"
{
Text label="Erdgeschoss" icon="groundfloor"
{
Frame label="Räume"
{
Text label="Essen" icon="party"
{
Frame label="Licht"
{
Switch item=Licht_EG_Essen_Tisch icon="light"
Switch item=Licht_EG_Essen_Bild icon="light"
Slider item=Dimmer_EG_Essen_Wand icon="light"
Slider item=Dimmer_EG_Treppe_Aufgang icon="light"
Switch item=Licht_EG_Balkon icon="light"
}
}
}
}
}
}
Ich hoffe das hilft. Text Führt dich in ein Untermenü und Frame macht einen Kasten um deine Items. Das sorgt innerhalb eines Screens für mehr Übersicht.
Hier im Kommentar sieht das leider etwas bescheiden aus. Wichtig ist, dass du darauf achtest, dass die geschweiften Klammern auch am ende eines Frame oder Text Elements wieder geschlossen werden. Ansonsten zeigt zeigt openHAB deine Sitemap nicht mehr an.
Nutzt du bereits VS Code mit der openHAB Erweiterung?
Viele Grüße
Patrick