Install EIB eibd
The EIB / KNX bus can be accessed via the knxd daemon.
Before all, make sure you have installed an xPL hub and a control user.
Contents
Install knx
Install knxd:
apt install knxd apt install knxd-tools
Start the daemon:
su control knxd -b ipt:192.168.1.204
List commands:
knxtool list
Perform a write:
knxtool on ip:localhost 1/1/1 knxtool off ip:localhost 1/1/1
or:
knxtool groupswrite ip:localhost 1/1/1 1 knxtool groupswrite ip:localhost 1/1/1 0
Listen to the KNX telegrams:
knxtool vbusmonitor1time ip:localhost ^C
As to my understanding, the busmonitor
variants work with filters to be defined
whilst the vbusmonitor
variants show all messages.
Stop the service:
pkill knxd ps ax | grep knxd | grep -v grep
Install xPL EIB bridge
Download the EIB write and EIB read scripts:
su control SCRIPTS_BASE_DIR=/home/control/Documents/Controls cd $SCRIPTS_BASE_DIR wget http://www.dspc.ch/xPL/Downloads/xpl-knxWrite.pl wget http://www.dspc.ch/xPL/Downloads/xpl-knxRead.pl chown control:users *.pl chmod 775 *.pl
Test xPL EIB writer
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 knxd -u /tmp/eib -b ipt:192.168.1.204
In another terminal window, start the xPL EIB writer:
su control SCRIPTS_BASE_DIR=/home/control/Documents/Controls $SCRIPTS_BASE_DIR/xpl-knxWrite.pl -v -n home
Open yet another terminal and send a message to the EIB tunnelling server:
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 knxd
write command.
If no more testing is wanted, stop the EIB daemon:
pkill knxd ps ax | grep knxd | grep -v grep
Test xPL EIB reader
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 --daemon=/var/log/eibd.log ipt:192.168.1.204
Then start the xPL EIB reader:
SCRIPTS_BASE_DIR=/home/control/Documents/Controls groupsocketlisten ip:localhost | $SCRIPTS_BASE_DIR/xpl-eib-eibdRead.pl -v -n home
Push on an EIB button or send a message to the EIB tunnelling server:
su control groupswrite ip:localhost 1/1/1 1 groupswrite ip:localhost 1/1/1 0
The EIB activity should appear in the xpl-monitor.pl
window.
Stop the EIB daemon:
pkill eibd ps ax | grep eibd | grep -v grep
Launch the xPL EIB interface at startup
The EIB writer is to be launched after the xPL hub.
The EIB reader is launched as a pre-start script
.
Debian with SystemD
On Debian with systemd (such as Raspbian or Ubuntu), the scripts can be defined as services.
Edit /lib/systemd/system/xpl-knxWrite.service
:
[Unit] Description=xPL KNX write After=xpl-hub.service knxd.service [Service] Type=simple User=control Group=users ExecStart=/home/control/Documents/Controls/xpl-knxWrite.pl -n home -w 2 Restart=always [Install] WantedBy=multi-user.target
Edit /lib/systemd/system/xpl-eib-read.service
:
[Unit] Description=xPL eib read After=xpl-hub.service eib.service [Service] Type=simple User=control Group=users ExecStart=/bin/bash -c '/usr/local/bin/groupsocketlisten ip:localhost | /home/control/Documents/Controls/xpl-eib-eibdRead.pl -n home' Restart=always [Install] WantedBy=multi-user.target
Activate the services:
su systemctl enable xpl-knxWrite.service service xpl-knxWrite start systemctl enable xpl-eib-read.service service xpl-eib-read start
Reboot and check:
ps aux | grep -v grep | grep -i xpl ps ax | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///' systemctl list-units --type=service --state=running | grep knx service xpl-knx* status
Ubuntu with Upstart
Edit /etc/init/xpl-eib.conf
:
################################################################################ # xPL EIB interface to an eibd daemon # description "xPL EIB interface" version "1.0" author "Francois Corthay" #------------------------------------------------------------------------------- # Configuration variables # env SCRIPTS_DIR='/home/control/Documents/Controls' env EIBD_DIR='/usr/local/bin' 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 and reader before the writer # pre-start script $EIBD_DIR/eibd -S -D -i -d ipt:192.168.1.204 $EIBD_DIR/groupsocketlisten ip:localhost | $SCRIPTS_DIR/xpl-eib-eibdRead.pl $PARAMETERS & end script #------------------------------------------------------------------------------- # Stop eib daemon on shutdown # pre-stop script pkill eibd end script #------------------------------------------------------------------------------- # Start daemon # exec $SCRIPTS_DIR/$SCRIPT_NAME $PARAMETERS
Start the device and test it:
su root killall eibd service xpl-eib 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