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)
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
-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.
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!
Deze is ook wel leuk om als basis te gebruiken, plug & play :-). Vooral met node-red kan je leuke dingen doen! https://openenergymonitor.org/emon/node/12437
LikeLike
[…] 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. […]
LikeLike