Raspberry Pi 3 – EIBD – OpenHab

De kogel is door de kerk. Ik heb dan toch niet voor de Pine64 gekozen voor onze domotica te automatiseren via opensource software maar voor de Raspberry Pi 3. Dit nieuwe bordje is dan wel 2x zo duur maar heeft nu ook een 64bit processor en bleutooth en wifi onboard. De voornaamste reden om voor de Raspberry te kiezen was toch de ondersteuning van de community online. Raspbian OS (het besturingsysteem welke op de Pi draait, gebasseerd op debian) lijkt me een goede startkeuze.

Basic install van de RPI3 via Noobs

Noobs is de installer meegeleverd op SD card bij aankoop van de RPI3.

Installatie van Raspbian OS

RPI3 aangesloten via HDMI op de TV


Netwerkkaart configuren

(op de oude debian manier! dus niet via systemd! onder Debian Jessie)

 

cat /etc/network/interfaces
auto eth0iface eth0 inet static
address 192.168.10.15
netmask 255.255.255.0
gateway 192.168.10.1
post-up route add -net 224.0.23.12 netmask 255.255.255.255 eth0
pre-down route del -net 224.0.23.12 netmask 255.255.255.255 eth0

Door gebruik te maken van auto eth0 vertel je debian dat je niet gebruik wil maken van de systemd / dhcpd.service. Dit is belangrijk om later de EIBD service automatisch te kunnen starten wanneer de RPI3 boot. Indien toch gebruik gemaakt wordt van de vernieuwde systemd (systeem om services te starten / stoppen) zal de EIBD niet starten onboot!

Verder heb ik de dhcpd service volledig uitgezet omdat ik anders 2 ip adressen op mijn RPI3 kreeg. 1 statisch en 1 via dhcpd (dynamisch adres)

 

systemctl disable dhcpcd

 

Fysiek verplaatsen RPI3

Eenmaal het netwerk actief is kunnen we de RPI3 loskoppelen en verplaatsen naar de garage.

Koppelen van stroom & UTP kabel.

Koppelen aan de USB KNX Bus.V ia een Hager TH101 BCU (bus coupling unit)

 

Hager_TH101

Globale linux instellingen configureren

Via raspi-config volgende instellingen aanpassen

  • Boot options -> text console, requiring user to login
  • Pi wachtwoord wijzigen
  • Internationalisation -> locale, timezone, keyboard layout NL-BE, Wifi country BE

Installatie EIBD

opgelet! niet meer in actieve ontwikkeling

er is een fork van EIBD -> KNXD maar op dit moment nog niet ver genoeg ontwikkeld om over te schakelen. Ook in de officiële documentatie van OpenHab wordt er verwezen naar EIBD. Vandaar (momenteel) toch nog de voorkeur naar EIBD

https://github.com/knxd/knxd/wiki

Installatie van EIBD liep volledig geautomatiseerd met dank aan volgend script:

http://michlstechblog.info/blog/download/electronic/install_eibd_usb_with_cemi_patches_systemd.sh

Meer info op: 

http://michlstechblog.info/blog/raspberry-pi-eibd-with-a-knx-usb-interface/

 

Na de installatie heb ik voor de zekerheid alle wgets en git clone manueel uitgevoerd in het geval dat ik later dezelfde opstelling nogmaals wil compileren en in het geval dat er 1 of meerdere scripts / bestanden zouden verdwijnen.

Nu hoop ik in de toekomst knxd volwassen wordt en er een eenvoudige installer komt voor connectie met de USB BCU .


Nu rest ons enkel nog systemctl aan te geven dat we graag EIBD starten onboot.

systemctl enable eibd

 Dit commando zal een symbolic link aanmaken in 

/etc/systemd/system/multi-user.target.wants/

naar

eibd.service -> /lib/systemd/system/eibd.service

Hiermee zal systemd de eibd.service starten wanneer de RPI3 boot.

Testen EIBD

Via findknxusb controleren of de BCU gevonden wordt

root@Pi:~# findknxusb
Possible addresses for KNX USB devices:
device: 1:4:1:0:0 (Hager Electro:KNX-USB Data Interface)

Ik heb het eibd.service script een beetje aangepast zodat EIBD een logfile wegschrijft

[Unit]
Description=EIB Daemon
After=network.target

[Service]
EnvironmentFile=/etc/default/eibd
ExecStartPre=/usr/local/bin/eibd-findusb.sh
ExecStart=/usr/local/bin/eibd -p /run/eibd/eibd.pid $EIBD_OPTIONS
Type=forking
PIDFile=/run/eibd/eibd.pid
User=eibd
Group=eibd

[Install]
WantedBy=multi-user.target

 

In deze file zitten de $EIBD_OPTIONS. Hierin heb ik de logging toegevoegd

EIBD_OPTIONS=”–daemon=/var/log/eibd.log -D -T -R -S -i -u -t1023 –eibaddr=1.1.128 usb:1:4:1:0:0″

-t1023 zou voor extra debugging moeten zorgen.

eibd-findusb.sh controleert op welke USB poort de BCU aangesloten zit en zal indien nodig het blauwe gedeelte van de opties updaten.

Logfile aanmaken (moet onder de correcte user draaien!)

  • touch /var/log/eibd.log
  • chown eibd:eibd /var/log/eibd.log

Via journalctl kan je fouten opsporen tijdens het booten / starten van de service.

Via systemctl status eibd kan je eveneens de laatste status opvragen van de service
root@Pi:~# systemctl status eibd
● eibd.service - EIB Daemon
        Loaded: loaded (/lib/systemd/system/eibd.service; enabled)
        Active: active (running) since vr 2016-03-18 13:39:06 CET; 1h 55min ago
        Process: 694 ExecStart=/usr/local/bin/eibd -p /run/eibd/eibd.pid $EIBD_OPTIONS (code=exited, status=0/SUCCESS)
        Process: 525 ExecStartPre=/usr/local/bin/eibd-findusb.sh (code=exited, status=0/SUCCESS)
        Main PID: 695 (eibd)
        CGroup: /system.slice/eibd.service
        └─695 /usr/local/bin/eibd -p /run/eibd/eibd.pid --daemon=/var/log/eibd.log -D -T -R -S -i -u -t1023 --eibaddr=1.1.128 usb:1:4:1:0:0

mrt 18 13:39:06 SennePi systemd[1]: Started EIB Daemon.

Controleren van de log file
pi@Pi:~ $ tail -f /var/log/eibd.log

Layer 0(01F9FF98,56EC140C) RecvComplete 64
Layer 0(01F9FF98,56EC140C) RecvUSB(064): 01 13 15 00 08 00 0D 01 01 00 00 49 BC 11 09 26 06 E5 00 80 00 1D 78 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Layer 0(01F9FF98,56EC140C) StartRecv
Layer 1(01F9FF98,56EC140C) Recv(064): 01 13 15 00 08 00 0D 01 01 00 00 49 BC 11 09 26 06 E5 00 80 00 1D 78 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Layer 0(01FA00E8,56EC140C) RecvEMI(013): 49 BC 11 09 26 06 E5 00 80 00 1D 78 24
Layer 2(01FA1190,56EC140C) Recv L_Data low from 1.1.9 to 4/6/6 hops: 06 T_DATA_XXX_REQ A_GroupValue_Write 00 1D 78 24
Layer 2(01FA1190,56EC140C) Recv L_Data low from 1.1.9 to 4/6/6 hops: 06 T_DATA_XXX_REQ A_GroupValue_Write 00 1D 78 24
Layer 3(01FA16D0,56EC140C) Recv L_Data low from 1.1.9 to 4/6/6 hops: 06 T_DATA_XXX_REQ A_GroupValue_Write 00 1D 78 24
Layer 8(01FA0818,56EC140C) Send_Route L_Data low from 1.1.9 to 4/6/6 hops: 05 T_DATA_XXX_REQ A_GroupValue_Write 00 1D 78 24
Layer 1(01FA10D0,56EC140C) Send(015): 29 00 BC D0 11 09 26 06 05 00 80 00 1D 78 24
Layer 0(01FA10D0,56EC140C) Send(021): 06 10 05 30 00 15 29 00 BC D0 11 09 26 06 05 00 80 00 1D 78 24
Layer 0(01F9FF98,56EC140C) RecvComplete 64

 

1.1.9 is mijn Hager TE360 welke zijn energiewaarden elke 3 min op de bus wegschrijft.

Hoera! de buskoppeling werkt. 

Hierna heb ik de logging naar het bestand terug uitgeschakeld!



Test met groupswrite commando
2/1/0 = een klassiek licht (aan/uit)
Inschakelen van licht

pi@Pi:~ $ groupswrite ip:localhost 2/1/0 1

Uitschakelen van licht

pi@Pi:~ $ groupswrite ip:localhost 2/1/0 0

Leuk om te zien dat mijn RPI3 het licht in de keuken kan schakelen 🙂
Test met busmonitor

pi@Pi:~ $ vbusmonitor1 ip:localhost

 

Installatie OpenHab

Todo!

Hopelijk krijg ik geen spijt van het feit dat OpenHab gebasseerd is op java technologie. Voor de rest kan ik vooraf geen minpuntjes aanhalen voor mijn keuze naar visualisatie toe.

Connectie ETS5 -> EIBD

Todo!

Aangezien ik maar 1 BCU heb en aangezien de investering heel groot is om een KNX IP Router te kopen zou ik graag gelijktijdig gebruik maken van EIBD voor ETS te programmeren en OpenHab te gebruiken.

 

MySQL database aanvullen met data van telegrammen

Todo!

2 gedachtes over “Raspberry Pi 3 – EIBD – OpenHab

  1. […] I’ve been using my own version of Leibnix on a Linksys WRT54GS with OpenWrt v0.9 since 2006.  When the Raspberry Pi 3 came out earlier this year I replaced the Linksys with the Raspberry Pi 3.  Ever since I had the problem that Leibnix stopped working after some time.  I’ve looked into the source code today and noticed that the serial port handling was not properly protecting shared variables with mutexes or so.  Probably this is the cause of the problem I have.  In 2006 I received the source code for my version of Leibnix from the original author before it was put up on sourceforge.  Probably the problem was fixed a long time ago, but I always wanted to start using eibd since it allowed me reconfigure my EIB devices without disconnecting the Linksys.  Now that I discovered that the leibnix source code I use needs some work I thought that the time has come to put leibnix to rest and use something else.  I googled around for installation instructions for eibd on the Raspberry Pi and found that someone has more or less properly documented the whole process. […]

    Like

Plaats een reactie