Difference between revisions of "Install EIB eibd"
(→Install eibd) |
(→Install knx) |
||
(14 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]]. | ||
Line 14: | Line 12: | ||
su control | su control | ||
knxd -b ipt:192.168.1.204 | knxd -b ipt:192.168.1.204 | ||
+ | |||
+ | List commands: | ||
+ | knxtool list | ||
Perform a write: | Perform a write: | ||
knxtool on ip:localhost 1/1/1 | knxtool on ip:localhost 1/1/1 | ||
− | knxtool | + | 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: | Listen to the KNX telegrams: | ||
knxtool vbusmonitor1time ip:localhost | knxtool vbusmonitor1time ip:localhost | ||
^C | ^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: | Stop the service: | ||
− | pkill | + | pkill knxd |
− | ps ax | grep | + | ps ax | grep knxd | grep -v grep |
= Install xPL EIB bridge = | = Install xPL EIB bridge = | ||
− | Download the [http://www.dspc.ch/xPL/Downloads/xpl- | + | 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 | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
− | + | cd $SCRIPTS_BASE_DIR | |
− | + | wget http://www.dspc.ch/xPL/Downloads/xpl-knxWrite.pl | |
− | chown control:users | + | wget http://www.dspc.ch/xPL/Downloads/xpl-knxRead.pl |
− | chmod 775 | + | chown control:users *.pl |
+ | chmod 775 *.pl | ||
= Test xPL EIB writer = | = Test xPL EIB writer = | ||
− | |||
− | |||
− | |||
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 49: | Line 52: | ||
If the <code>eibd</code> daemon isn't running, launch it in a second window: | 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 | |
− | + | ||
− | + | ||
− | + | ||
In another terminal window, start the xPL EIB writer: | In another terminal window, start the xPL EIB writer: | ||
su control | su control | ||
SCRIPTS_BASE_DIR=/home/control/Documents/Controls | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
− | $SCRIPTS_BASE_DIR/xpl- | + | $SCRIPTS_BASE_DIR/xpl-knxWrite.pl -v -n home |
Open yet another terminal and send a message to the EIB tunnelling server: | Open yet another terminal and send a message to the EIB tunnelling server: | ||
Line 65: | Line 65: | ||
This should turn on EIB device <code>1/1/1</code>. | This should turn on EIB device <code>1/1/1</code>. | ||
− | The <code>groupsocketlisten</code> window should show the <code> | + | The <code>groupsocketlisten</code> window should show the <code>knxd</code> write command. |
If no more testing is wanted, stop the EIB daemon: | If no more testing is wanted, stop the EIB daemon: | ||
− | pkill | + | pkill knxd |
− | ps ax | grep | + | ps ax | grep knxd | grep -v grep |
= Test xPL EIB reader = | = Test xPL EIB reader = | ||
Line 79: | Line 79: | ||
If the <code>eibd</code> daemon isn't running, launch it in a second window: | 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: | Then start the xPL EIB reader: | ||
SCRIPTS_BASE_DIR=/home/control/Documents/Controls | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
− | groupsocketlisten ip:localhost | $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: | + | Push on an EIB button or send a message to the EIB tunnelling server in a 3rd terminal window: |
su control | su control | ||
− | groupswrite ip:localhost 1/1/1 1 | + | knxtool groupswrite ip:localhost 1/1/1 1 |
− | groupswrite ip:localhost 1/1/1 0 | + | knxtool groupswrite ip:localhost 1/1/1 0 |
The EIB activity should appear in the <code>xpl-monitor.pl</code> window. | The EIB activity should appear in the <code>xpl-monitor.pl</code> window. | ||
Stop the EIB daemon: | Stop the EIB daemon: | ||
− | pkill | + | pkill knxd |
− | ps ax | grep | + | ps ax | grep knxd | grep -v grep |
= Launch the xPL EIB interface at startup = | = Launch the xPL EIB interface at startup = | ||
Line 106: | Line 106: | ||
or [https://www.ubuntu.com/ Ubuntu]), the scripts can be defined as services. | or [https://www.ubuntu.com/ Ubuntu]), the scripts can be defined as services. | ||
− | + | Edit <code>/lib/systemd/system/xpl-knxWrite.service</code>: | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Edit <code>/lib/systemd/system/xpl- | + | |
[Unit] | [Unit] | ||
− | Description=xPL | + | Description=xPL KNX write |
− | After=xpl-hub.service | + | After=xpl-hub.service knxd.service |
[Service] | [Service] | ||
Line 132: | Line 115: | ||
User=control | User=control | ||
Group=users | Group=users | ||
− | ExecStart=/home/control/Documents/Controls/xpl- | + | ExecStart=/home/control/Documents/Controls/xpl-knxWrite.pl -n home -w 2 |
Restart=always | Restart=always | ||
Line 139: | Line 122: | ||
− | Edit <code>/lib/systemd/system/xpl- | + | Edit <code>/lib/systemd/system/xpl-knxRead.service</code>: |
[Unit] | [Unit] | ||
− | Description=xPL | + | Description=xPL KNX read |
− | After=xpl-hub.service | + | After=xpl-hub.service knxd.service |
[Service] | [Service] | ||
Line 148: | Line 131: | ||
User=control | User=control | ||
Group=users | Group=users | ||
− | ExecStart=/bin/bash -c '/usr | + | ExecStart=/bin/bash -c '/usr/bin/knxtool groupsocketlisten ip:localhost | /home/control/Documents/Controls/xpl-knxRead.pl -n home' |
Restart=always | Restart=always | ||
Line 156: | Line 139: | ||
Activate the services: | Activate the services: | ||
su | su | ||
− | + | systemctl enable xpl-knxWrite.service | |
− | + | service xpl-knxWrite start | |
− | systemctl enable xpl- | + | systemctl enable xpl-knxRead.service |
− | service xpl- | + | service xpl-knxRead start |
− | systemctl enable xpl- | + | |
− | service xpl- | + | |
Reboot and check: | Reboot and check: | ||
ps aux | grep -v grep | grep -i xpl | ps aux | grep -v grep | grep -i xpl | ||
ps ax | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///' | ps ax | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///' | ||
− | systemctl list-units --type=service --state=running | grep | + | systemctl list-units --type=service --state=running | grep -i knx |
− | service xpl- | + | service xpl-knx* status |
== Ubuntu with Upstart == | == Ubuntu with Upstart == | ||
Line 184: | Line 165: | ||
env SCRIPTS_DIR='/home/control/Documents/Controls' | env SCRIPTS_DIR='/home/control/Documents/Controls' | ||
env EIBD_DIR='/usr/local/bin' | env EIBD_DIR='/usr/local/bin' | ||
− | env SCRIPT_NAME='xpl- | + | env SCRIPT_NAME='xpl-knxWrite.pl' |
env PARAMETERS='-n home' | env PARAMETERS='-n home' | ||
Line 201: | Line 182: | ||
pre-start script | pre-start script | ||
$EIBD_DIR/eibd -S -D -i -d ipt:192.168.1.204 | $EIBD_DIR/eibd -S -D -i -d ipt:192.168.1.204 | ||
− | $EIBD_DIR/groupsocketlisten ip:localhost | $SCRIPTS_DIR/xpl- | + | $EIBD_DIR/groupsocketlisten ip:localhost | $SCRIPTS_DIR/xpl-knxRead.pl $PARAMETERS & |
end script | end script | ||
Line 208: | Line 189: | ||
# | # | ||
pre-stop script | pre-stop script | ||
− | pkill | + | pkill knxd |
end script | end script | ||
Line 218: | Line 199: | ||
Start the device and test it: | Start the device and test it: | ||
su root | su root | ||
− | killall | + | killall knxd |
service xpl-eib start | service xpl-eib start | ||
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