Install EIB eibd

From xPL
Revision as of 20:05, 8 December 2014 by Fcorthay (Talk | contribs)

Jump to: navigation, search

The EIB / KNX bus can be accessed via the eibd daemon. The original distribution at TU Wien is no longer maintained. The work has been taken over on SourceForge.

Before all, make sure you have installed an xPL hub and a control user.

Install eibd

Note: to my experience, this works on x86 machines, but not on armhf boards.

Copy the PGP public key to a local file eibPgp.key on your computer. Add it to the list of trusted keys:

su
apt-key add path-to/eibPgp.key

Add the repository to the debian package maintenance system: edit /etc/apt/sources.list and add the lines:

## EIB
deb http://www.auto.tuwien.ac.at/~mkoegler/debian eib main
deb-src http://www.auto.tuwien.ac.at/~mkoegler/debian eib main

Install the package:

apt-get update
apt-get install bcusdk

On the EIB side, the IP Router should be configured as a bus coupler (address nn.nn.0) and be provided a fixed IP address. In the following description, the address is 192.168.1.204 .

Test it: start the daemon in a terminal window:

su control
eibd -S -D -i -d ipt:192.168.1.204

Monitor the traffic:

groupsocketlisten ip:localhost

Pushing on an EIB button should be reported in the last terminal window.

In a 3rd terminal window, light-on a bulb:

su control
groupswrite ip:localhost 1/1/1 1

Stop the daemon:

killall eibd

Install xPL EIB bridge

Under construction icon-blue

Download the eibd write and eibd read scripts.

Move the script to xPL scripts directory:

SCRIPTS_BASE_DIR=/home/control/Documents/Controls
mv xpl-eib-eibdWrite.pl $SCRIPTS_BASE_DIR
mv xpl-eib-eibdRead.pl $SCRIPTS_BASE_DIR
chown control:users $SCRIPTS_BASE_DIR/*.pl
chmod 775 $SCRIPTS_BASE_DIR/*.pl

Test xPL EIB writer

The test is shown here on a Linux machine such as a BeagleBone. It has to be slightly adapted on Mac OS.

Open a first terminal window (on any machine with xPL installed) and monitor the xPL protocol:

SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-monitor.pl -vf

If the eibd daemon isn't running, launch it in a second window:

su control
eibd -S -D -i -d ipt:192.168.1.204

Then launch the eibd monitor:

groupsocketlisten ip:localhost

In another terminal window, start the xPL EIB writer:

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-eib-eibdWrite.pl -v -n home

Open yet another terminal and send a message to the EIB bridge:

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-eib.home -c eib.basic group='1/1/1' data=0x01

This should turn on EIB device 1/1/1. The groupsocketlisten window should show the eibd write command.

Launch the xPL EIB writer at startup

The EIB writer is to be launched after the xPL hub.

Ubuntu

Edit /etc/init/xpl-eibWriter.conf:

################################################################################
# xPL EIB writer, interfaces to an eibd daemon
#
description "xPL EIB writer"
version     "1.0"
author      "Francois Corthay"

#-------------------------------------------------------------------------------
# Configuration variables
#
env SCRIPTS_DIR='/home/control/Documents/Controls'
env SCRIPT_NAME='xpl-eib-eibdWrite.pl'
env PARAMETERS='-n home'

#-------------------------------------------------------------------------------
# Start and stop conditions
#
start on xpl-hub_started          
stop on shutdown
respawn
setuid control
setgid users

#-------------------------------------------------------------------------------
# Start eibd daemon before the writer
#
pre-start script
  /usr/bin/eibd -S -D -i -d ipt:192.168.1.204
end script

#-------------------------------------------------------------------------------
# Start daemon
#
exec $SCRIPTS_DIR/$SCRIPT_NAME $PARAMETERS

Start the device and test it:

su root
killall eibd
service xpl-eibWriter start

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-eib.home -c eib.basic group='1/1/1' data=0x01
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-eib.home -c eib.basic group='1/1/1' data=0x00

Reboot the PC and check for the daemons:

ps ax | grep -i xpl | grep -v grep
initctl list | grep xpl

Mac OS

On Mac OS, the xPL EIB bridge starts-up later than the xPL serial port.

Edit /Library/LaunchDaemons/eib.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>xPL EIB bridge</string>
    <key>OnDemand</key>
    <false/>
    <key>UserName</key>
    <string>control</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/control/Documents/Controls/xpl-eib-Tapko.pl</string>
      <string>-n</string>
      <string>home</string>
      <string>-s</string>
      <string>dspc-serPort.eib</string>
      <string>-w</string>
      <string>30</string>
    </array>
  </dict>
</plist>

Start the device and test it:

su root
launchctl load /Library/LaunchDaemons/xpl-eib.plist

SCRIPTS_BASE_DIR=/Users/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-eib.home -c eib.basic group='1/1/1' data=0x01
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-eib.home -c eib.basic group='1/1/1' data=0x00

Reboot the Mac and check for the daemons:

ps ax | grep -i xpl | grep -v grep
launchctl list | grep xPL