What can we improve?

Documentation

(Edit)

KNX

KNX is a wired and radio-based system. A connection to IP-Symcon is possible via a serial or LAN-IP gateway. Engineering tool software ("ETS" for short) is required to configure the system.

The following devices are supported by IP-Symcon:

Supported components (excerpt)

Introduction

KNX is a network of house and building system technology according to EN 50090 and ISO/IEC 14543. For example, heating, lighting, blinds, ventilation and security technology are controlled across trades. The system usually uses cables (names include JY (St) Y 2x2x0.8 EIB or YCYM 2x2x0.8) with two wire pairs (red-black and white-yellow). The KNX system is powered by a power supply with a nominal voltage of 30 V [direct current]. This voltage supplies the bus coupler, via which each KNX device communicates with the other networked KNX devices. The data exchange between the KNX devices takes place via telegrams.

The participants are programmed and the group addresses are assigned using the engineering tool software (ETS). The ETS is provided by the umbrella organization Konnex and ensures smooth cooperation between components from different manufacturers.

The connection to IP-Symcon takes place via a serial or IP gateway.
As a rule, all serial gateways "PEI type 10" with FT1.2 protocol (interfaces of type PEI 16 do not work), and all KNX/IP gateways that offer the tunneling protocol, are supported. If a KNX gateway meets these requirements and does not work, Symcon Support should be contacted. The problem will be solved as soon as possible.

Setup Video-Tutorial

Setup with XML

Since IP-Symcon 5.3, an XML export from the ETS can be read in via the configurator. This uses the current DPTs.

Setup with OPC

Installation

If all KNX devices are set up and connected correctly, they must be configured with the ETS. The three-stage address allocation is used for this.

Currently only three-level addresses (e.g. 10/2/5) are supported. IP-Symcon currently does not support two-stage or free addresses. Using the conversion , each two-stage address can be controlled via the translated three-stage address.

If the installation was carried out by an electrician, they should supply the OPC/XML export explained below and the associated ESF/XML file.

In order to be able to use KNX in IP-Symcon, either a serial FT1.2 gateway or a compatible KNX/IP gateway is required. The setup of the various gateways differs slightly. A KNX instance can be created directly in IP-Symcon and the gateway can be configured from there. Alternatively, the OPC/XML export from the ETS can be used.

KNX ETS

The use of the OPC or XML export with the help of the IP-Symcon configurator allows a quick integration of all KNX components.

Since IP-Symcon 5.3, the export as XML is recommended because it supports the new KNX DPT instances.

XML Export in ETS

An XML export can be saved within the ETS in the open project by right-clicking on the group addresses.

KNX XML Export

Export video guide:

Since version 6.0.0

Since version 5.6.5

OPC Export in ETS

KNX OPC Export

Export video guide:

Integration IP-Symcon

The KNX interface can be integrated via the Device search. To do this, "KNX Discovery" must be selected as the system. The discovery instance then offers to create a KNX configurator. After the configurator has been created, the individual devices can be added as described below.

KNX configurator

Before starting to import the group addresses, the interface must be correctly selected and configured. To do this, the "cogwheel" in the upper area of the configuration must be clicked on. The following dialog should open.

KNX Gateway

The gateway type must be selected under Mode. The "KNX/IP (UDP)" mode must be selected for all common IP gateways. Changes will be saved with the "Apply" button. In order to be able to enter the address for the interface, the "cogwheel" in the upper area must be clicked on again. Depending on the mode, either the IP address must be entered or the serial port belonging to the interface must be entered. If in doubt, the IP address can also be found using the ETS. Further settings are not necessary. The changes are confirmed with "Apply". In the configuration of the gateway, the parameters of the gateway can now be read out via "Reload information". If these have been read out correctly, the configuration is complete.

IP-Address Video Guide:

Adding devices

After uploading the ESF/XML file in the KNX configurator, all previously configured KNX actuators can be integrated and visualized in IP-Symcon.

To do this, devices must be created by pressing "Create". The devices can now be operated.
The ID that then appears on the right-hand side is the InstanceID assigned by IP-Symcon. This is unique and unchangeable.
After clicking on a selected KNX device and then clicking on "Configure", the functionality of each individual device can be tested.
The devices can be found in the object tree.

The created devices can now be switched via the "WebFront".

Example: Send temperature values to the KNX bus

In order to be able to send values such as the temperature to the KNX bus, an action script is required. This forms the link between the visualization and the actuators. A script with the following content must be created:

EIB_Value(IPS_GetParent($_IPS['VARIABLE']), $_IPS['VALUE']);

For each desired device that should be changeable, the corresponding variable must be linked to this action script. This must be done in the configuration of the respective variable. To do this, the variable must be double-clicked. The selection of the action script is located in the "Profile settings" area. The script just created must be selected here. A suitable profile (e.g. ~Temperature) should also be selected via "Custom Profile".

variable-profile

The last step can be repeated as often as desired. It is only necessary to create the script once with the above content.

KNX Shutter

Due to the many setting options and linked addresses, shutters cannot be added via the configurator.

shutter configuration

Move

The address for the up and down movement of the roller shutter must be entered here. In the "More?" area, further addresses can be entered to which the instance should listen for moving up/down.

Stop

The address for stopping the roller shutter must be entered here. In the "More?" area, further addresses can be entered to which the instance should listen for stopping.

Activate Steps/Slat

This address can be switched on and controls the incremental movement of the roller shutter. This serves to adjust the slats of the roller shutter. In the "More?" area, further addresses can be entered to which the instance should listen for step control.

Enable percentage positioning

These two addresses can be switched on and control either the percentage positioning of the roller shutter or the slats.

Test Center

Basic functions can be tested ad hoc in the Test Center.

Converting from two-level group addresses to three-level group addresses

If a two-level representation of the group addresses was selected in the ETS, the addresses can be converted using this tool. If the OPC export is used, the ETS automatically takes over this process.

     

Conversion of free group addresses to three-level group addresses

If the free representation of the group addresses was selected in the ETS, an OPC export is unfortunately not possible. With the help of this tool, the addresses can be converted.

    

KNX with QNAP, Synology or Docker

If HomeMatic is to be used with QNAP, Synology or Docker, NAT support must be set up to receive responses from the system. This process is explained here.

Tips & Tricks

Script for reading the states from the bus

Since IP-Symcon only recognizes variable changes, it must, after a restart, be queried whether there have been status changes in order to enable a consistent display.
A start script can be added to the Event-Control for this purpose.

$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;
            }
        }
    }
}

Script to output the group addresses

The following script can be used to output the group addresses including ID, name and location.

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;
}

Assignment of the individual functions to the EIS type/DPT

Function EIS type 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