Aug 032012
 
Article Home Automation

As already mentioned in our previous post  introduction to EIB/KNX, the physical connectivity to the bus can be done in different ways, by means of a serial port, a USB port or else via IP network.

EIBD is a software development that presents the users with a unified interface to access the bus. EIBD implements internally the several KNX protocols used in the different physical media used to access the bus. This is a very useful component in the development of client applications to access and control the home automation network.

In this post we will explain how to install and use this software in a Linux Debian computer.

1. EIBD installation:

As a prerequisite, we install the pthsem package, downloading it from www.auto.tuwien.ac.at:

Next, we perform the installation of eibd downloading the bcusdk package from sourceforge:

When executing  “./configure”, we must specify by means of switches the bus connectivity interfaces we want to be enabled.

Once installed, we can display the available options with the –help switch:

In the output from “eibd –help” we can see that our eibd server can connect to the bus by means of  BCU2/ft1.2, IP multicast, IP tunneling, IP tunneling in NAT mode, and USB.

Executing eibd connected through EIBnet/IP

First, we execute in another window a TCP/IP packet sniffer to dump the packets transmitted to/from the multicast address used by KNX.

Then we start eibd in IP multicast mode:

 

Then, from a third window we execute the demo command “groupswrite” to send a telegram to the bus that writes the value “1” to the group address  “2/3/4”:

and check the trace being written by eibd. In it, the KNX telegram sent to the bus is displayed:

 

The frame starts with a 6-byte header (see the cEMI format description in introduction to EIB/KNX) :

The header is followed by the message code 0x29 (L_Data.ind) and the additional information length (0x00)

Finally comes the KNX command itself :

Executing eibd connected through BCU2/FT1.2

Although our machines is not equipped with serial ports, we can simulate in software a pair of serial ports connected in “piggyback” using the linux command  ‘socat’

socat has created serial ports /dev/pts/5 and /dev/pts/6. Anything written to serial port 5 will appear as input in serial port 6, and viceversa (the actual port numbers can change every time socat is run).

Once we have socat running in a window, we execute eibd in another window, asking it to connect to one of the newly created serial ports:

In the trace dumped by eibd, we see that an initialization message “10 40 40 16” is sent. The message is sent over and over because eibd does not receive the expected ACK response (a single byte 0xE5, as specified in the ft1.2 protocol):

We stop the execution of eibd with ^C. Next, we write an small program that listens for incoming messages in the “/dev/pts/6” serial port, and sends “0xE5” ACK messages in response (socat ensures that anything written to serial port 6 appears as incoming data in serial port 5).

Executing again eibd, the trace dumped this time is:

This time, the reset message “10 40 40 16” gets the expected 0xE5 ACK, and eibd sends a couple more initialization messages, encoded in FT1.2/EMI2.

Now, if we execute the “groupswrite” command in another window:

we can see in the trace being written by eibd a new message, also encoded in FT1.2 format.

 

—-

 Posted by at 5:18 pm

  3 Responses to “EIBD installation and usage”

  1. Can I use this EIBD software on Linux UBUNTU, If yes, please tell me the steps in details and also the source file to be downloaded.

    • Hi Hifzul,
      You should be able to install EIBD on Ubuntu following exactly the same installation procedure explained in this post for Linux Debian.

  2. I have installed the EIBD software in a ubuntu-virtualbox hosted by win7.

    Thanks to your perfect explanation, I needed only one hour to sucesfully install the EIBD.

    Thanks
    Fritz

 Leave a Reply

(required)

(required)