Dokumentation
KNX
KNX ist ein kabelgebundenes sowie funkbasierendes System. Eine Verbindung mit IP-Symcon ist über ein serielles oder LAN-IP Gateway möglich. Zur Konfiguration des Systems wird eine Engineering-Tool-Software (kurz "ETS") benötigt.
Folgende Geräte werden von IP-Symcon unterstützt:
Einleitung
KNX ist eine Vernetzung von Haus- und Gebäudesystemtechnik gemäß EN 50090 und ISO/IEC 14543. Es werden gewerkeübergreifend zum Beispiel Heizung, Beleuchtung, Jalousien, Belüftung und Sicherheitstechnik gesteuert. Das System nutzt in der Regel Leitungen (Bezeichnung u.a. J-Y (St) Y 2x2x0,8 EIB bzw. YCYM 2x2x0,8) mit zwei Aderpaaren (rot-schwarz und weiß-gelb). Die KNX-Anlage wird von einer Spannungsversorgung mit 30 V Nennspannung [Gleichspannung] versorgt. Diese Spannung versorgt die Busankoppler, über die jedes KNX-Gerät mit den anderen vernetzten KNX-Geräten kommuniziert. Der Datenaustausch zwischen den KNX-Geräten erfolgt über Telegramme.
Die Programmierung der Teilnehmer und das Zuweisen der Gruppenadressen erfolgt mit der Engineering-Tool-Software (ETS). Die ETS wird von der Dachorganisation Konnex bereitgestellt und sichert die problemlose Zusammenarbeit von Komponenten verschiedener Hersteller.
Die Anbindung an IP-Symcon erfolgt über ein serielles oder IP-Gateway.
Als Regel gilt, dass alle seriellen Gateways “PEI Typ 10″ mit FT1.2 Protokoll (Interfaces des Typs PEI 16 funktionieren nicht) unterstützt werden und alle KNX/IP Gateways, die das Tunneling Protokoll anbieten. Sollte ein KNX Gateway diese Voraussetzungen erfüllen und nicht funktionieren, ist der Symcon Support zu kontaktieren. Das Problem wird so schnell wie möglich gelöst.
Video-Tutorial zur Einrichtung
Einrichten mit XML
Ab IP-Symcon 5.3 kann über den Konfigurator ein XML Export aus der ETS eingelesen werden. Dieser nutzt die aktuellen DPTs.
Einrichten mit OPC
Installation
Wenn alle KNX-Geräte korrekt aufgestellt und angeschlossen sind, müssen diese mit der ETS konfiguriert werden. Dazu wird die dreistufige Adressvergabe genutzt.
Zur Zeit werden nur dreistufige Adressen (z.B. 10/2/5) unterstützt. Zweistufige oder freie Adressen unterstützt IP-Symcon zur Zeit nicht. Über die Umrechnung kann jede zweistufige Adresse über die übersetzte dreistufige Adresse Angesteuert werden.
Falls die Installation durch einen Elektriker vorgenommen wurde, so sollte dieser den nachfolgend erklärten OPC/XML Export und die damit verbundene Datei vom Typ ESF/XML mitliefern.
Um KNX in IP-Symcon nutzen zu können, ist entweder ein serielles FT1.2 Gateway oder ein kompatibles KNX/IP Gateway notwendig. Die Einrichtung der verschiedenen Gateways unterscheidet sich geringfügig. Es kann direkt eine KNX Instanz in IP-Symcon erstellt und von dieser aus das Gateway konfiguriert werden. Alternativ kann der OPC/XML Export aus der ETS genutzt werden.

Die Nutzung des OPC oder XML Exports mit Hilfe des IP-Symcon Konfigurators erlaubt eine schnelle Einbindung aller KNX Komponenten.
Ab IP-Symcon 5.3 wird der Export als XML empfohlen, da dieser die neuen KNX DPT-Instanzen unterstützt.
XML Export in ETS
Ein XML-Export kann innerhalb der ETS im geöffneten Projekt via Rechtsklick auf die Gruppenadressen gespeichert werden.

Videoanleitung zum Export:
Ab Version 6.0.0
Ab Version 5.6.5
OPC Export in ETS

Videoanleitung zum Export:
Einbindung IP-Symcon
Die KNX Schnittstelle kann über die Gerätesuche eingebunden werden. Hierfür muss als System "KNX Discovery" gewählt werden. Die Discovery-Instanz bietet dann die Erstellung eines KNX Konfigurators an. Nachdem der Konfigurator erstellt wurde, können über diesen die einzelnen Geräte wie unten beschrieben hinzugefügt werden.

Bevor mit dem Import der Gruppenadressen begonnen werden kann, muss die Schnittstelle korrekt ausgwählt und konfiguriert werden. Dazu muss im oberen Bereich der Konfiguration auf das "Zahnrad" geklickt werden. Es sollte sich nachfolgender Dialog öffnen.

Unter Modus muss der Typ des Gateways ausgewählt werden. Für alle gängigen IP-Gateways muss der Modus "KNX/IP (UDP)" ausgewählt werden. Änderungen werden mit dem Button "Übernehmen" gespeichert werden. Um für die Schnittstelle die Adresse eintragen zu können, muss erneut auf das "Zahnrad" im oberen Bereich geklickt werden. Je nach Modus muss entweder die IP-Adresse eingetragen oder der serielle Port der zu der Schnittstelle gehört eingetragen werden. Im Zweifelsfall kann die IP-Adresse auch mit Hilfe der ETS herausgefunden werden. Weitere Einstellungen sind nicht notwendig. Die Änderungen werden mit "Übernehmen" bestätigt. In der Konfiguration des Gateways können nun über "Informationen neu laden" die Parameter des Gateways ausgelesen werden. Wenn diese korrekt Ausgelesen wurden, ist die Konfiguration vollständig.
Videoanleitung zur IP-Adresse:
Hinzufügen der Geräte
Im KNX Konfigurator können nach dem Hochladen der ESF/XML-Datei alle zuvor konfigurierten KNX-Aktoren in IP-Symcon eingebunden und visualisiert werden.
Dazu müssen Geräte durch drücken von "Erstellen" erstellt werden. Die Geräte sind jetzt bedienbar.
Bei der danach erscheinenden ID auf der rechten Seite handelt es sich um die von IP-Symcon zugeordnete InstanzID. Diese ist einmalig und unveränderbar.
Nach einem Klick auf ein ausgewähltes KNX-Gerät und dann einen Klick auf “Konfigurieren” kann die Funktionalität jedes einzelnen Gerätes getestet werden.
Die Geräte sind im Objektbaum wieder zu finden.
Über das "WebFront" können nun die erstellten Geräte geschaltet werden.
Beispiel: Temperaturwerte auf den KNX-Bus senden
Um Werte wie z.B. die Temperatur auf den KNX-Bus senden zu können, ist ein Aktionsskript erforderlich. Dieses bildet die Verknüpfung zwischen der Visualisierung und den Aktoren. Es muss ein Skript mit folgendem Inhalt erstellt werden:
EIB_Value(IPS_GetParent($_IPS['VARIABLE']), $_IPS['VALUE']);
Für jedes gewünschte Gerät, dass veränderbar sein soll, muss die entsprechende Variable mit diesem Aktionsskript verknüpft werden. Dies muss in der Konfiguration der jeweiligen Variable geschehen. Dazu muss die Variable doppelt angeklickt werden. Im Bereich "Profileinstellungen" befindet sich die Auswahl des Aktionsskripts. Hier muss das eben erstelle Skript ausgewählt werden. Über "Eigenes Profil" sollte zusätzlich ein passendes Profil (z.B. ~Temperature) ausgewählt werden.

Der letzte Schritt ist beliebig oft wiederholbar. Es ist nur erforderlich, das Skript einmalig mit den o.g. Inhalt anzulegen.
KNX Shutter
Aufgrund der vielen Einstellungsmöglichkeiten und verknüpften Adressen können Shutter nicht über den Konfigurator hinzugefügt werden.

Bewegen
Hier muss die Adresse für die Auf- und Abbewegung des Rollladen eingetragen werden. Im Bereich "Mehr?" können weitere Adressen eingetragen werden, auf welche die Instanz zum Auf-/Abbewegen hören soll.
Stop
Hier muss die Adresse für das Stoppen des Rollladen eingetragen werden. Im Bereich "Mehr?" können weitere Adressen eingetragen werden, auf welche die Instanz zum Stoppen hören soll.
Aktiviere Schritte/Lamelle
Diese Adresse kann zugeschaltet werden und steuert das Schrittweise bewegen des Rollladen. Dies dient dazu, die Lamellen des Rollladen zu verstellen. Im Bereich "Mehr?" können weitere Adressen eingetragen werden, auf welche die Instanz zur Schrittsteuerung hören soll.
Aktiviere prozentuale Positionierung
Diese zwei Adressen können zugeschaltet werden und steuern entweder das prozentuale Positionieren des Rollladen oder der Lamellen.
Test Center
Im Test Center können grundlegende Funktionen adhoc getestet werden.
Umrechnen von zweistufigen Gruppenadressen zu dreistufigen Gruppenadressen
Falls in der ETS eine zweistufige Darstellung der Gruppenadressen gewählt wurde, können die Adressen mit Hilfe dieses Tools umgerechnet werden. Wenn der OPC-Export genutzt wird, übernimmt die ETS diesen Prozess automatisch.
Umrechnen von freien Gruppenadressen zu dreistufigen Gruppenadressen
Falls Sie in der ETS die freie Darstellung der Gruppenadressen gewählt wurde, so ist leider ein OPC-Export nicht möglich. Mit Hilfe dieses Tools können die Adressen umgerechnet werden.
KNX mit QNAP, Synology oder Docker
Soll KNX mit QNAP, Synology oder Docker verwendet werden, so muss der NATSupport eingerichtet werden um Antworten des Systems zu erhalten. Dieser Vorgang ist hier erklärt.
Tipps & Tricks
Skript zum Auslesen der Zustände vom Bus
Da nur Variablenänderungen von IP-Symcon wahrgenommen werden ist beim Neustart von von IP-Symcon abzufragen ob es Statusänderungen gab, um eine konsistente Darstellung zu ermöglichen.
Hierzu kann ein Startskript im Event-Control hinzugefügt werden.
$gatewayIDs = IPS_GetInstanceListByModuleID("{1C902193-B044-43B8-9433-419F09C641B8}"); $instanceIDs = IPS_GetInstanceList(); foreach($gatewayIDs as $gatewayID) { foreach($instanceIDs as $instanceID) { $i = IPS_GetInstance($instanceID); if($i['ConnectionID'] == $gatewayID) { switch($i['ModuleInfo']['ModuleID']) { case "{24A9D68D-7B98-4D74-9BAE-3645D435A9EF}": //Shutter case "81F54858-72B1-4C2C-8CE3-7E00A3168378": //RGB (Legacy until IP-Symcon 5.0) case "{81F54858-72B1-4C2C-8CE3-7E00A3168378}": //RGB (IP-Symcon 5.1+) case "4D7F7548-0979-4ABD-9BB3-81F9477C0903": //RGBW (Legacy until IP-Symcon 5.0) case "{4D7F7548-0979-4ABD-9BB3-81F9477C0903}": //RGBW (IP-Symcon 5.1+) EIB_RequestStatus($instanceID); break; case "{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}": //Group if(IPS_GetProperty($instanceID, "GroupCapabilityRead")) { EIB_RequestStatus($instanceID); } break; default: //DPTs if(strpos($i['ModuleInfo']['ModuleName'], "DPT") !== false) { if(IPS_GetProperty($instanceID, "CapabilityRead")) { KNX_RequestStatus($instanceID); } } break; } } } }
Skript zur Ausgabe der Gruppenadressen
Das folgende Skript kann dazu genutzt werden die Gruppenadressen samt Id, Name und Location auszugeben.
echo "ID,Name,Location,GA,MoreGA" . PHP_EOL; $gatewayIDs = IPS_GetInstanceListByModuleID("{1C902193-B044-43B8-9433-419F09C641B8}"); $instanceIDs = IPS_GetInstanceList(); foreach($gatewayIDs as $gatewayID) { foreach($instanceIDs as $instanceID) { $i = IPS_GetInstance($instanceID); if($i['ConnectionID'] == $gatewayID) { switch($i['ModuleInfo']['ModuleID']) { case "{24A9D68D-7B98-4D74-9BAE-3645D435A9EF}": //Shutter printGA($instanceID, "GroupMove"); if (IPS_GetProperty($instanceID, "EnableStep")) { printGA($instanceID, "GroupStep"); } printGA($instanceID, "GroupStop"); if (IPS_GetProperty($instanceID, "EnablePosition")) { printGA($instanceID, "GroupPosition"); } if (IPS_GetProperty($instanceID, "EnableBladePosition")) { printGA($instanceID, "GroupBladePosition"); } break; case "81F54858-72B1-4C2C-8CE3-7E00A3168378": //RGB (Legacy until IP-Symcon 5.0) case "{81F54858-72B1-4C2C-8CE3-7E00A3168378}": //RGB (IP-Symcon 5.1+) case "4D7F7548-0979-4ABD-9BB3-81F9477C0903": //RGBW (Legacy until IP-Symcon 5.0) case "{4D7F7548-0979-4ABD-9BB3-81F9477C0903}": //RGBW (IP-Symcon 5.1+) case "{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}": //Group printGA($instanceID, "Group"); break; default: //DPTs if(strpos($i['ModuleInfo']['ModuleName'], "DPT") !== false) { printGA($instanceID, ""); } break; } } } } function printGA($id, $prefix) { $c = json_decode(IPS_GetConfiguration($id), true); echo sprintf("%d,%s,%s,", $id, IPS_GetName($id), IPS_GetLocation($id)); echo sprintf("%d/%d/%d", $c[$prefix . "Address1"], $c[$prefix . "Address2"], $c[$prefix . "Address3"]); foreach (json_decode($c[$prefix . "Mapping"], true) as $a) { echo "," . sprintf("%d/%d/%d", $a[$prefix . "Address1"], $a[$prefix . "Address2"], $a[$prefix . "Address3"]); } echo PHP_EOL; }
Zuordnung der einzelnen Funktionen zum EIS-Typ/DPT
Funktion | EIS-Typ | DPT |
---|---|---|
EIB_Char | EIS13 | DPT4 |
EIB_Counter8bit | EIS14 | DPT5, DPT6 |
EIB_Counter16bit | EIS10 | DPT7, DPT8 |
EIB_Counter32bit | EIS11 | DPT12, DPT13 |
EIB_Date | EIS4 | DPT11 |
EIB_DimControl | EIS2 | DPT3 |
EIB_DimValue | EIS6 | DPT5 |
EIB_DriveBladeValue | EIS6 | DPT5 |
EIB_DriveMove | EIS7 | DPT1 |
EIB_DriveShutterValue | EIS6 | DPT5 |
EIB_DriveStep | EIS7 | DPT1 |
EIB_FloatValue | EIS9 | DPT14 |
EIB_Move | EIS7 | DPT1 |
EIB_Position | EIS6 | DPT5 |
EIB_PriorityControl | EIS8 | DPT2 |
EIB_PriorityPosition | EIS1 | DPT1 |
EIB_Scale | EIS6 | DPT5 |
EIB_Str | EIS15 | DPT16 |
EIB_Switch | EIS1 | DPT1 |
EIB_Time | EIS3 | DPT10 |
EIB_Value | EIS5 | DPT9 |
N/A | EIS12 | DPT15 |