Difference between revisions of "Install EIB eibd"
(→Install eibd) |
(→Install knx) |
||
(49 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | The EIB / KNX bus can be accessed via the [https:// | + | The EIB / KNX bus can be accessed via the [https://github.com/knxd/knxd/wiki knxd daemon]. |
− | + | ||
− | + | ||
Before all, make sure you have installed an [[install xpl hub|xPL hub]] and a [[Install_BeagleBone#Control_user|control user]]. | Before all, make sure you have installed an [[install xpl hub|xPL hub]] and a [[Install_BeagleBone#Control_user|control user]]. | ||
− | = Install | + | = Install knx = |
− | + | Install [https://github.com/knxd/knxd knxd]: | |
+ | apt install knxd | ||
+ | apt install knxd-tools | ||
− | + | Start the daemon: | |
− | + | su control | |
− | su | + | 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 <code>busmonitor</code> variants work with filters to be defined | ||
+ | whilst the <code>vbusmonitor</code> variants show all messages. | ||
+ | Also, the <code>groupsocketlisten</code> command allows compatibility with the original <code>eibd</code> daemon. | ||
− | + | Stop the service: | |
− | + | pkill knxd | |
− | + | ps ax | grep knxd | grep -v grep | |
− | + | = Install xPL EIB bridge = | |
− | + | ||
− | + | Download the [http://www.dspc.ch/xPL/Downloads/xpl-knxWrite.pl EIB write] and [http://www.dspc.ch/xPL/Downloads/xpl-knxdRead.pl EIB read] scripts: | |
+ | 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 <code>eibd</code> 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=/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 <code>1/1/1</code>. | |
+ | The <code>groupsocketlisten</code> window should show the <code>knxd</code> 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: | Open a first terminal window (on any machine with xPL installed) and monitor the xPL protocol: | ||
Line 65: | Line 77: | ||
$SCRIPTS_BASE_DIR/xpl-monitor.pl -vf | $SCRIPTS_BASE_DIR/xpl-monitor.pl -vf | ||
− | If the | + | If the <code>eibd</code> daemon isn't running, launch it in a second window: |
su control | su control | ||
− | + | knxd -u /tmp/eib -b ipt:192.168.1.204 | |
− | + | ||
− | + | ||
− | + | ||
− | + | Then start the xPL EIB reader: | |
SCRIPTS_BASE_DIR=/home/control/Documents/Controls | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
− | $SCRIPTS_BASE_DIR/xpl- | + | knxtool groupsocketlisten ip:localhost | $SCRIPTS_BASE_DIR/xpl-knxRead.pl -v -n home |
− | + | Push on an EIB button or send a message to the EIB tunnelling server in a 3rd terminal window: | |
su control | su control | ||
− | + | knxtool groupswrite ip:localhost 1/1/1 1 | |
− | + | knxtool groupswrite ip:localhost 1/1/1 0 | |
− | + | The EIB activity should appear in the <code>xpl-monitor.pl</code> window. | |
− | + | ||
− | + | ||
− | + | Stop the EIB daemon: | |
+ | pkill knxd | ||
+ | ps ax | grep knxd | 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 <code>pre-start script</code>. |
+ | |||
+ | == Debian with SystemD == | ||
+ | |||
+ | On Debian with [https://wiki.debian.org/systemd systemd] (such as [https://www.raspbian.org/ Raspbian] | ||
+ | or [https://www.ubuntu.com/ Ubuntu]), the scripts can be defined as services. | ||
+ | |||
+ | Edit <code>/lib/systemd/system/xpl-knxWrite.service</code>: | ||
+ | [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 <code>/lib/systemd/system/xpl-knxRead.service</code>: | ||
+ | [Unit] | ||
+ | Description=xPL KNX read | ||
+ | After=xpl-hub.service knxd.service | ||
+ | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | User=control | ||
+ | Group=users | ||
+ | ExecStart=/bin/bash -c '/usr/bin/knxtool groupsocketlisten ip:localhost | /home/control/Documents/Controls/xpl-knxRead.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-knxRead.service | ||
+ | service xpl-knxRead 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 -i knx | ||
+ | service xpl-knx* status | ||
− | + | == Ubuntu with Upstart == | |
− | + | ||
Edit <code>/etc/init/xpl-eib.conf</code>: | Edit <code>/etc/init/xpl-eib.conf</code>: | ||
################################################################################ | ################################################################################ | ||
− | # xPL EIB | + | # xPL EIB interface to an eibd daemon |
# | # | ||
− | description "xPL EIB | + | description "xPL EIB interface" |
version "1.0" | version "1.0" | ||
author "Francois Corthay" | author "Francois Corthay" | ||
Line 110: | Line 164: | ||
# | # | ||
env SCRIPTS_DIR='/home/control/Documents/Controls' | env SCRIPTS_DIR='/home/control/Documents/Controls' | ||
− | env SCRIPT_NAME='xpl- | + | env EIBD_DIR='/usr/local/bin' |
− | env PARAMETERS='-n home | + | env SCRIPT_NAME='xpl-knxWrite.pl' |
+ | env PARAMETERS='-n home' | ||
#------------------------------------------------------------------------------- | #------------------------------------------------------------------------------- | ||
# Start and stop conditions | # Start and stop conditions | ||
# | # | ||
− | start on xpl- | + | start on xpl-hub_started |
stop on shutdown | stop on shutdown | ||
respawn | respawn | ||
setuid control | setuid control | ||
setgid users | 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-knxRead.pl $PARAMETERS & | ||
+ | end script | ||
+ | |||
+ | #------------------------------------------------------------------------------- | ||
+ | # Stop eib daemon on shutdown | ||
+ | # | ||
+ | pre-stop script | ||
+ | pkill knxd | ||
+ | end script | ||
#------------------------------------------------------------------------------- | #------------------------------------------------------------------------------- | ||
Line 129: | Line 199: | ||
Start the device and test it: | Start the device and test it: | ||
su root | su root | ||
− | + | killall knxd | |
− | + | service xpl-eib start | |
− | service xpl-eib | + | |
+ | su control | ||
SCRIPTS_BASE_DIR=/home/control/Documents/Controls | 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=0x01 | ||
Line 141: | Line 211: | ||
initctl list | grep xpl | initctl list | grep xpl | ||
− | + | [[Category: all]] [[Category: install]] [[Category: xPL]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | [[Category: install]] [[Category: xPL]] | + |
Latest revision as of 12:48, 8 January 2022
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.
Also, the groupsocketlisten
command allows compatibility with the original eibd
daemon.
Stop the service:
pkill knxd ps ax | grep knxd | grep -v grep
Install xPL EIB bridge
Download the EIB write and EIB read scripts:
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 knxd -u /tmp/eib -b ipt:192.168.1.204
Then start the xPL EIB reader:
SCRIPTS_BASE_DIR=/home/control/Documents/Controls knxtool groupsocketlisten ip:localhost | $SCRIPTS_BASE_DIR/xpl-knxRead.pl -v -n home
Push on an EIB button or send a message to the EIB tunnelling server in a 3rd terminal window:
su control knxtool groupswrite ip:localhost 1/1/1 1 knxtool groupswrite ip:localhost 1/1/1 0
The EIB activity should appear in the xpl-monitor.pl
window.
Stop the EIB daemon:
pkill knxd ps ax | grep knxd | 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-knxRead.service
:
[Unit] Description=xPL KNX read After=xpl-hub.service knxd.service [Service] Type=simple User=control Group=users ExecStart=/bin/bash -c '/usr/bin/knxtool groupsocketlisten ip:localhost | /home/control/Documents/Controls/xpl-knxRead.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-knxRead.service service xpl-knxRead 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 -i 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-knxWrite.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-knxRead.pl $PARAMETERS & end script #------------------------------------------------------------------------------- # Stop eib daemon on shutdown # pre-stop script pkill knxd end script #------------------------------------------------------------------------------- # Start daemon # exec $SCRIPTS_DIR/$SCRIPT_NAME $PARAMETERS
Start the device and test it:
su root killall knxd 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