Skip to content

Installation auf dem Raspberry Pi

Raoul edited this page Nov 14, 2016 · 5 revisions

Da ich selbst der Empfehlung des Homebridge-Autors Nick Farina nicht gefolgt bin und homebridge und die Plug-ins als nicht Root "global" installiert habe, sondern als user "pi" eine komplette nicht-root-Umgebung für Homebridge verwende - und das mit Erfolg! - stelle ich mal kurz die Schritte dar, die gebraucht werden, um Homebridge auf dem Raspi als Service laufen zu lassen - dass heißt, er startet nach einen Reboot automatisch wieder.

Also los!

Was brauchen wir?

  • Raspberry (ich verwende Modell 2B)
  • SD-Karte (ich verwende günstige 16GB micro-SDs)
  • Netzwerkkabel, Netzteil
  • SSH-Client auf dem zur Konfiguration verwendeten Rechner (bei mir: puTTY unter Windows)

Vorbereitung

  1. Ein aktuelles Raspbian Jessie (ich verwende Lite, weil sonst nichts auf der Machine läuft, das mehr Software benötigen würde, insbesondere kein X) auf die micro-SD-Karte schreiben (Wie? So: https://developer-blog.net/raspberry-pi-image-auf-sd-karte-kopieren/ )
  2. Den Raspberry auf eine IP fixieren: Ich verwende einen dhcp-Server, der bei mir im Netz die Adressen vergibt. Ich starte den Raspberry einmal und schaue, welcher Client im dhcp neu dazugekommen ist, und fixiere seine Adresse. Das geht zum Beispiel mit Fritzboxen ("Diesem Computer immer die selbe IP zuteilen") und mit dem dhcp-Server der Synology ("Client-Reservierungen"), und wahrscheinlich mit ganz vielen anderen Methoden auch. Verwendet ihr im Heimnetz statische IPs, empfehle ich Google...

Raspbian konfigurieren

Wir wollen das Raspbian für einen headless-Server (also ohne einen eigenen Monitor etc.) konfigurieren.

  • Dazu starten wir den Raspberry Pi und verbinden uns mit puTTY. Dazu müsst Ihr natürlich die IP oder den Namen des neuen Raspberrys wissen! Siehe Vorbereitung 2.

  • Benutzer "pi" und Passwort "raspberry" ist Werkseinstellung bei Raspbian

  • Passwort ändern: passwd Passwort merken/aufschreiben! keepass?

  • Grundlegende Raspi-Konfiguration: sudo raspi-config

    • 3 boot options: B1 console
    • 4 Wait: Slow Wait for network
    • 5 Internationalization:
      • I1: add de_DE.UTF-8
      • I2: Timezone: Europe, Berlin
      • I4: WiFi: de
    • 9 Advanced
      • A2 hostname
      • A3 Memory Split: 16M (minimum)
      • A6 SPI: disable
      • A7 I2C: enable
      • A8 Serial: disable
    • 1 expand file system
    • Finish --> REBOOT
  • Nach dem Reboot aktualisieren wir mal alles was so neu sein könnte:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

nodeJS und Homebridge installieren

Ein paar grundlegende Pakete installieren:
sudo apt-get install libavahi-compat-libdnssd-dev git

Node installieren:

  • Paketquelle hinzufügen:
    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
  • und installieren:
    sudo apt-get install nodejs

homebridge und homebridge-knx:

npm install homebridge
npm install homebridge-knx
(Hier weichen wir von der Homebridge-Anleitung ab, da diese empfiehlt homebridge global zu installieren, was aber wieder andere Probleme verursacht. Wir installieren homebridge und homebridge-Knx als User pi im home-Verzeichnis des Nutzers pi.)

An dieser Stelle kann die eigene config.json eingerichtet werden

Homebridge als Service einrichten

Seit systemd das alte SysVInit abgelöst hat, gehen manche Dinge doch etwas einfacher - wenn Dr. Google einem die richtigen Seiten zeigt! Danke an Johann Richard!

Wir erzeugen also eine Service-Definition und kopieren den Inhalt von unten da rein:
sudo nano /etc/systemd/system/homebridge.service

[Unit]
Description=Homebridge Automation Service
Documentation=https://github.com/nfarina/homebridge

[Service]
ExecStart=/usr/bin/node /home/pi/node_modules/homebridge/bin/homebridge -D
User=pi
Group=pi
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=homebridge.service
Restart=always

[Install]
WantedBy=multi-user.target

Dann müssen wir dem user "pi" noch erlauben das Syslog zu nutzen:
sudo usermod -a -G systemd-journal pi

Service aktivieren: sudo systemctl enable homebridge
und starten: sudo systemctl start homebridge

ACHTUNG Wenn noch keine gültige config.json für homebridge existiert, startet der Service jetzt alle paar Sekunden und beendet sich wieder
In diesem Fall einmal sudo systemctl disable homebridge eingeben damit die Endlosschleife beendet wird, und dann eine gültige config.json erstellen.

Log ansehen

Da das Log vom Service daemon nun direkt in das Syslog geschrieben wird, könnt ihr euch das Ergebnis mit
journalctl -u homebridge.service ansehen.