EIB/KNX

From LinuxMCE
Revision as of 13:05, 2 November 2007 by Avajon (Talk | contribs)

Jump to: navigation, search

KNX (EIB) is a standardised (EN 50090,ISO/IEC 14543), OSI-based network communications protocol for intelligent buildings. KNX is the successor to, and convergence of, three previous standards: the European Home Systems Protocol (EHS), BatiBUS, and the European Installation Bus (EIB).

The KNX standard is administered by the Konnex Association. konnex.org


How to install and use EIB

Connect your Core-Server with a serial cable to the EIB. Your BUS Connector has to have the FT1.2Protocol. (like this). You can use it from any Company (Gira, Berker, Siemens, ... ) but it is very important to have the correct protocol. (I bought the wrong one). When you have connect it you have to add the EIB Interface in the WebAdmin. Go to Devices-->Interface and choose EIB, select the correct COM-Port, do a reload - router and you are ready to use it. You can also go in a console and look into the log file (DeviceID_EIB.log) to see if everything works fine.

How to add devices

In the Webadmin you have on the left side new menu buttons for Lights, Drapes, Sensors and Thermostats. At first you have to add the groupadresses. You have to upload a file with the correct information about your System. The format is:

"LichtARschalt"/"0"/"0"/"1"
"Licht-SZ-schalt"/"0"/"0"/"10"
"Licht-SZ-dimm"/"0"/"0"/"11"
"Licht-SZ-wert"/"0"/"0"/"12"

Lights

Goto EIB Lights on the Webadmin. Give the Name of your Light and choose if it is dimmable or not. Click on the "Pick" Button -> choose the correct groupaddress for on/off and dim. In Webadmin->Lights you can add the room and type of your light. After that you can put the EIB light on the floorplan.

Thermostats

In my house the thermostats have two states (cold and warm). I don't want to change the temperature with LinuxMCE, i only want to turn on and off the heating. When the temperature is reached the EIB turns off the heating by itself. So, what did i do? At first i allowed my thermostat to change the state (on/off) by the bus and gave it a groupaddress (like 2/0/10) I go to the Webadmin->Scenarios->Climate and create for every room two scenarios (on and off). Then go to the Webadmin->Advanced->Configuration->Scenarios-Climate and choose the first Scenario. Add the EIB Device and the Command EIB_Write. Now you have to insert the groupaddress, data string and data type. Insert the groupaddress (2/0/10), the data string (1=on, 2=off) and for the data type put 6 in the field. Press save and you can test it.

This is a lot of work, but so you can write a very small php-page to execute one of the scenarios. That's very comfortable because you can turn on and off the heating from anywhere with the browser of a mobile phone.

Drapes

It's the same as the thermostats. I don't use the EIB-Drapes, I create my own scenarios and send the commands with EIB_Write to the bus. This works very well.

Sensors

I don't really have sensors. I only tried to create a sensor that is a light-switch. Every time I turn on the light the sensor was tripped and the Commands were executed.

Send Time to the bus

I found the solution! The question was the correct format - because LMCE Implementation uses integer values. Here is a short script which you can add to the crontab. Just change the groupadress.

#!/usr/bin/perl
$ENV{'PATH'}="/usr/bin";

($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek) = localtime(time);
$dayOfWeek = 7 if ($dayOfWeek==0);
$time2 = sprintf '%s\n', ($second << 16) | ( $minute << 8) | ($hour) | ($dayOfWeek << 5);
@args = ("/usr/pluto/bin/MessageSend localhost -r 0 40 1 273 108 \"3/0/50\" 109 \"$time2\" 110 \"3\"");
system(@args);

Problems

How to send the Time on the bus?

solved. see above.

Can't read from the bus

I want to read data from the bus. Like how warm is it in the rooms or is a light on or off. I think this function isn't implemented yet... I will try to implement it, but i don't know how to build a working development system.