Smarthome-Server mit knxd, SmarthomeNG und SmartVISU

Einen Smarthome-Server, der den Gira- oder Jung-Home-Server ersetzen kann, kann man sich mit den entsprechenden Kenntnissen einfach selbst bauen. Hier ein paar Tipps.

Diese Anleitung wurde als vorlage verwendet: Gira oder Jung Homeserver zu teuer Raspberry Pi als Helfer

Leider liegen mittlerweile alle dort verwendeten Pakete in neueren Versionen vor, so dass das exakte, dort beschriebene Vorgehen nicht mehr zum ERfolg führt. Deshalb hier eine aktualisierte Installations-Anleitung, bei der von jedem benötigten Paket auch die Versionen explizit mit angegeben wurden.

Vorbereitung: Ubuntu Linux Grundinstallation

  • verwendete Hardware: Banana Pi Pro
  • Installiertes Linux-System: Ubuntu Xenial 16.04, End of Life im April 2021
    Welcome to ARMBIAN 5.60 stable Ubuntu 16.04.5 LTS 3.4.113-sun7i
    $ uname -a
    Linux bananapipro 3.4.113-sun7i #16 SMP PREEMPT Wed Jan 24 19:20:59 CET 2018 armv7l armv7l armv7l GNU/Linux
    $ cat /etc/debian-version
    stretch/sid
    
  • zuerst den X-Display-Manager abschalten
    # update-rc.d nodm remove default
    
  • dann das System aktualisieren, und deutsche locales generieren:
    # apt-get update && apt-get upgrade -y
    # locale-gen de_DE.utf8
    # update-locale LANG=de_DE.UTF-8
    

weitere Installationsschritte

  • Benutzer anlegen
    # adduser smarthome
    # usermod -G www-data,sudo -a smarthome
    
  • Build-System installieren
    # apt-get install git-core build-essential cdbs debhelper debsums
    

knxd installieren

  • pthsem installieren (Update: für knxd 0.12 wird dies nicht mehr benötigt, der Vollständigkeit halber wirds jedoch trotzdem erwähnt)
    # wget https://www.auto.tuwien.ac.at/~mkoegler/pth/pthsem_2.0.8.tar.gz
    # tar xzf pthsem_2.0.8.tar.gz
    # cd pthsem-2.0.8
    # dpkg-buildpackage -b -uc
    # cd ..
    # sudo dpkg -i libpthsem*.deb
    
  • Benötigte Bibliotheken für das Kompilieren von knxd installieren
    # apt-get install autoconf libtool libusb-dev pkg-config dh-systemd cmake libsystemd-dev libusb-1.0-0-dev libev-dev
    
  • knxd kompilieren explizit in Version 0.12
    # git clone https://github.com/knxd/knxd.git
    # cd knxd
    # git checkout origin/v0.12
    # dpkg-buildpackage -b -uc
    # cd ..
    # dpkg -i knxd_*.deb knxd-tools_*.deb
    

Installation von SmartHomeNG

  • die Plugins müssen bei dieser Version extra installiert werden
# apt-get -y install dialog python3 python3-dev python3-setuptools

# cd /usr/local
# git clone git://github.com/smarthomeNG/smarthome.git
# chown -R smarthome:smarthome /usr/local/smarthome
# cd smarthome
# git checkout release-1.5.1
Switched to a new branch 'release-1.5.1
# mkdir plugins
# cd plugins
# git clone git://github.com/smarthomeNG/plugins.git .
# cd ..
# python3 tools/build_requirements.py

[...]

# apt-get -y install python3-pip
  • Dass ab jetzt alles funktioniert, muss Python 3 als default sein. Python 2 kann aber nicht entfernt werden
  • Deswegen erstellen wir kurzerhand eine Alternative, mit der man beide Versionen wählen kann, und setzen Python 3 als default
# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
# update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
# update-alternatives --list python
# update-alternatives --config python
 -> set python-3.5

# python --version
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
  • pip kann jetzt installiert und aktualisiert werden
# pip install --upgrade pip
  • jetzt einen reboot durchführen
  • das aufrufen von pip muss ohne Fehlermeldungen möglich sein
# pip install ephem
# pip install pyyaml

# cd /usr/local/smarthome
# cd requirements
# pip install -r all.txt

[...]
Downloading ... 
(dauert lange)
[...]
  • wenn folgende Fehlermeldung erscheint: ~~~~
  • error: c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory compilation terminate ~~~~
  • kann so abgeholfen werden
    # apt-get install libffi-dev python3-dev
    [...]
    Successfully built cryptography aiohttp
    cheroot 6.5.4 has requirement six>=1.11.0, but you'll have six 1.10.0 which is incompatible.
    telepot 12.7 has requirement aiohttp>=3.0.0, but you'll have aiohttp 2.3.10 which is incompatible.
    [...]
      arm-linux-gnueabihf-g++: error: openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory
      error: command 'arm-linux-gnueabihf-g++' failed with exit status 1
    
  • da es immer noch nicht funktioniert, openzwave in all.txt auskommentieren.
  • jetzt erneut mit pip alles installieren, es muss fehlerfrei durchlaufen
    # pip install -r all.txt
    
  • Dokumentation lesen: SmarthomeNG Die Installation kann durchaus noch an anderen Stellen haken, die hier nicht beschrieben sind.

  • Test von SmarthomeNG
    su - smarthome
    smarthome@bananapipro:~$ /usr/local/smarthome/bin/smarthome.py
    
  • Test von SmarthomeNG mit detaillierter Fehlerausgabe
    smarthome@bananapipro:~$ /usr/local/smarthome/bin/smarthome.py -v
    smarthome@bananapipro:~$ cat /usr/local/smarthome/var/log/smarthome-details.log
    2019-02-01  15:40:34 WARNING  __main__          --------------------   Init SmartHomeNG 1.5.1.aca5f2e.release-1.5.1   --------------------
    2019-02-01  15:40:34 WARNING  __main__          Running in Python interpreter 'v3.5.2 final' on linux platform
    2019-02-01  15:40:34 CRITICAL __main__          No plugins found. Please install plugins.
    2019-02-01  15:40:34 CRITICAL __main__          Aborting
    
  • Diese Fehlermeldung erscheint, wenn man nicht all.txt installiert hat, sondern nur base.txt. Die Plugins muss man dann je nach Plugin extra installieren
    # pip3 install -r plugins/<plugin-name-hier-einsetzen>/requirements.txt
    

Installtion von Smartvisu

# apt-get install php7.0 libawl-php php7.0-curl  php7.0-json
# apt-get install apache2 libapache2-mod-php7.0 php7.0-mbstring
# service apache2 restart
# cd /var/www/html
# git clone https://github.com/Martin-Gleiss/smartvisu.git smartVISU
# chown -R www-data:www-data smartVISU
# chmod -R 775 smartVISU
# cd smartVISU
# git checkout v2.8
Note: checking out 'v2.8'
  • mit dem Web-Broser jetzt testen / bedienen: http://IP-Homeserver/smartVISU

  • wenn man sich das Anhängen von smartVISU an die IP nicht merken kann, kann man schnell folgende Datei erstellen
  • Datei: /var/www/html/index.php
    <?php
    header('Location: smartVISU');
    exit;
    ?>
    
  • Meine Meinung: nur um die Templates von SmartVISU zu ändern, braucht man keinen Samba-Server. Mann kann einfach WinSCP verwenden.
  • weitere TODOs: Alles Logging muss in den Ram geschrieben werden, so dass nicht durch die Schreibzugriffe die SD-Karte kaputtgeht
  • die Smarthomed Config Syntax ist geändert worden - beizeiten beschreiben
  • knxd konnte ich leider nicht testen, weil mir die Hardware dazu fehlt