How To Import KNX ETS4 Export into OpenRemote
A first version of the KNX Import exist in SVN. This documentation gives some background information about this feature and how to use it.
KNX basic knowledge
KNX is a bus system which is based on sensors and actuators. The sensors send information with a programmed target address onto the bus and the actuators, configured for this target address, will do something depending on the information sent.
The target address is called group address and the information sent is configured as DPT (DatapointType). The DPT determines what kind of information (Bit, Byte, 2 Bytes, ...) is send. The data itself is the work load which depends on the DPT eg. on/off, temperature, dimmer value, ...
OpenRemote needs these information (group address, DPT and work load) to be able to send the correct data onto the KNX bus.
Normally a KNX system is configured in a way that you have group addresses which are sent to the actuator to perform an action and for visualization purposes you have group addresses which are sent from the actuator to inform about the current state (light on/off, dimming level, set temperature, current temperature, ...)
The KNX export includes the configured group addresses, names and maybe (if set within ETS4) the DPT. But we cannot determine if the group address is used to perform an action or to inform about the status.
OpenRemote needs to know the difference because we seperate status commands from action commands. Because of this, we cannot completely automate the import without any user interaction. The user still has to tell us what the group address is used for.
We call this a command type and during the import process the user has to choose this from a dropdown for each group address which should be imported.
The following describes how to import your KNX data and how to create switches or sliders:
Switch to the "Building Modeler" tab and create a new KNX device in your configuration as shown in the screenshot below:
Enter the device details into the dialog. You can use whatever names and model types you like here. See below:
Once done, click on the 'Finish' button in the dialog to save the device.
Execute import wizard
Select the new device and use the menu item "Import ETS4 project" from the "New" menu to open the wizard window:
Within the import wizard first choose the ETS4 project file on your local harddrive using the "Browse..." button and then click "Load" to have the file analyzed:
The ETS project file has to be created from ETS4 using the export project function. Only ETS4 project files are supported.
We also addes support for ETS3 group address exports now. You can create a CSV file by right clicking on the group address tree in ETS3.
A list of all group addresses with names and DPT's (if available), which are configured in your ETS project, will be displayed in the list.
Now, walk through the list and select a "Command type" and check the "Import?" field for each group address that you want to import into OpenRemote. Just click into the "Command type" column of the group address you want to modify and a drop-down with all available command types will show up. If a group address is used for status feedback, use the appropriate command type that has the text "Status" in it's name. This way we can determine if a OpenRemote sensor command or action command will be created (see inconvenience paragraph). If you select a "Scene" command type, you also have to enter a scene number in the message box that will open.
When you are done with your list, select "Ok" and the checked group addresses will be imported. Make sure you have a command type selected for all group addresses which you have "Checked" for import.
For each selected group address a command will be created. For each "Switch" group address two commands are created. One to turn the device "On" and one for "Off". They will have "(ON)" and "(OFF)" in their names and this is how we later select the correct command to create the "Switch" device. For each "Status" group address a command and also a sensor which uses that command will be created.
Create a switch
To create switch objects which later can be used for the UI elements you need to have an "On" command, an "Off" command and a sensor. You can either select "New Switch" from the "New" menu or use the context menu to create a switch object based on your selection in the tree. For this to work, you have to select the "On" command, the "Off" command and the sensor for the switch you want to create, then right-click and select "Create Switch from selection".
The system determines which command is an "On" command and which is an "Off" command by looking at the names of the selected commands. These have to have the string "(ON)" and "(OFF)" in their names for the switch wizard to work. If the wizard cannot find the needed commands and a sensor, an error message will be displayed:
If all needed objects are found, the wizard will ask you for a name for the switch object.
Create a slider
The same way you can create a switch object you can also create a slider object for dimmers which later can be used in the UI. Select a dimmer command and the coresponding sensor, then right-click and select "Create Slider from selection".
Done! You have successfully created a "Switch" and "Slider" object using the new context menu wizards.
Design User Interface
Switch to the 'User Interface Designer' tab and create a new panel interface. For our example we need a Switch and a Slider UI element. You can drag and drop them onto the screen. In my example I uploaded 2 different images for the switch to visualize the "on" and "off" state.
Switch and Slider are two-way components which means the UI elements change state depending on the current status of the underlying sensor. For KNX componentes this means, that the UI is also updated when you use your wall switch (status group addresses).
Once you've placed the Switch and Slider, associate them with the switch and slider objects you created previosly, as shown in the images below.
Here you can see the whole process in a small video and also the final result.