Da RaZberry mittlerweile seine HomeKit-Funktionalität entfernt hat, habe ich mich nach einer geeigneten Alternative für einen HomeKit-Server auf meinem Raspberry Pi umgesehen und bin dabei bei dem Projekt „HomeBridge“ gelandet. Dieser Server basiert auf NodeJS und lässt sich dank zahlreich vorhandener Plugins einfach erweitern, sodass man damit bequem über die HomeKit API seine Sensoren und Aktoren ansteuern kann.
In diesem Artikel geht es um die Grundinstallation von HomeBridge auf einem Raspberry Pi. Wie man diese Installation für sein eigenes vorhandenes Setup (z.B. Funksteckdosen, Temperatur- / Luftfeuchtigkeitssensoren, Infrarot-Geräte etc.) mit Hilfe bereits existierender Plugins erweitern kann, folgt in einem separaten Artikel.
Bevor ihr mit der weiteren Installation beginnt, solltet ihr über
1 2 | sudo apt-get update sudo apt-get upgrade |
eure Paketquellen und Pakete auf den aktuellsten Stand bringen, um etwaige Probleme mit Abhängigkeiten von Paketen zu umgehen.
1. Update des C++-Compilers
Hinweis: Dieser Schritt ist nur notwendig für Nutzer, die noch Raspbian Wheezy einsetzen. Unter Jessie solltet ihr die aktuelle Version des Compilers bereits installiert haben. Ihr könnt das überprüfen mit g++-4.9 -v. Erhaltet ihr in der letzten Zeile gcc version 4.9.x,so könnt ihr diesen Schritt überspringen. Das gilt natürlich auch für Wheezy-Installationen, bei denen ihr den Compiler schon aktualisiert habt.
Um die neueste Version des Compilers für Raspbian zu installieren, müsst ihr zunächst eure Paketquellen (temporär) ändern. Bearbeitet dazu die Paketquellen, z.B. via sudo nano /etc/apt/sources.list und ersetzt „wheezy“ jeweils mit „jessie“. Speichert die Änderungen und führt ein sudo apt-get update aus, um die Änderungen an den Paketquellen durchzuführen. Anschließend könnt ihr mit sudo apt-get install gcc-4.9 g++-4.9 die benötigte Version des Compilers installieren. Ihr könnt (und solltet) dann die Änderungen an den Paketquellen wieder rückgängig machen, indem ihr diese wieder bearbeitet via sudo nano /etc/apt/sources.list und „jessie“ wieder durch „wheezy“ ersetzt. Ein anschließendes sudo apt-get update bringt eure Quellen wieder auf den Ursprungszustand.
Um die Standardcompilerversion noch der neu installierten Version anzupassen, reichen diese beiden Befehle, die ihr einfach nacheinander aufrufen könnt:
1 2 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 |
Gebt ihr nun g++ -v ein, sollte in der letzten ausgegebenen Zeile
1 | gcc version 4.9.x |
stehen.
2. Installation von NodeJS
Hinweis: Bei der Installation wird zwischen Raspberry 1 (Raspberry A, Raspberry B, Raspberry B+, Raspberry Zero) und Raspberry 2 (Raspberry Pi B2) unterschieden. Bitte achtet darauf, die richtige Version zu installieren! Falls ihr nicht wisst, welche Version ihr habt, könnt ihr dies an den technischen Daten erkennen. Handelt es sich um ein Modell mit 1GB RAM, so ist es ein Raspberry 2, hat euer Raspberry 512MB oder weniger, so ist es ein Raspberry 1.
Update 03.03.2016: Mittlerweile gibt es einen neuen Raspberry Pi – den Raspberry Pi 3. Auch auf diesem lässt sich HomeBridge installieren. Bei der NodeJS-Version sollte auch hier die ARMv7-Version wie beim Raspberry Pi 2 laufen.
Wechselt zur Installation am Besten über „cd“ erst einmal in euer Home-Verzeichnis. Anschließend schaut ihr auf dieser Seite, welche Version von NodeJS in der LTS-Version aktuell „stable“ ist. Zur Zeit der Artikelerstellung war das 4.3.0.
Ladet euch die Version auf euren Raspberry Pi herunter, entpackt sie und wechselt in das erstellte Verzeichnis:
- Raspberry 1:123wget https://nodejs.org/dist/v4.3.0/node-v4.3.0-linux-armv6l.tar.gztar -xvf node-v4.3.0-linux-armv6l.tar.gzcd node-v4.3.0-linux-armv6l
- Raspberry 2:123wget https://nodejs.org/dist/v4.3.0/node-v4.3.0-linux-armv7l.tar.gztar -xvf node-v4.3.0-linux-armv7l.tar.gzcd node-v4.3.0-linux-armv7l
Anschließend kopiert ihr den Inhalt des Verzeichnisses nach „/usr/local“:
1 | sudo cp -R * /usr/local/ |
Um die erfolgreiche Installation zu prüfen, führt ihr ein node -vaus, bei dem ihr als Ausgabe nun „v4.3.0“ erhalten solltet (bzw. aktueller).
Hat das soweit geklappt, könnt ihr die heruntergeladene Datei sowie den entpackten Ordner löschen:
- Raspberry 1:12rm node-v4.3.0-linux-armv6l.tar.gzrm -R node-v4.3.0-linux-armv6l/
- Raspberry 2:12rm node-v4.3.0-linux-armv7l.tar.gzrm -R node-v4.3.0-linux-armv7l/
3. Installation weiterer Pakete
Ein paar weitere Pakete werden für Avahi noch benötigt. Diese können einfach über apt installiert werden:
1 | sudo apt-get install libavahi-compat-libdnssd-dev |
4. Installation von HomeBridge
Die Installation von HomeBridge selbst ist nun denkbar einfach. Ein einfaches
1 | sudo npm install -g --unsafe-perm homebridge |
sollte euch HomeBridge in der aktuellsten Version über npm laden und installieren lassen. Das dauert etwas, sollte aber in einigen Minuten (zumindest beim Raspberry 1) abgeschlossen sein.
Ihr könnt anschließend eure Installation prüfen, indem ihr HomeBridge ganz einfach über homebridge im Terminal startet. Es kommen jetzt noch Meldungen, dass keine Plugins und keine Konfigurationsdatei gefunden wurden, das ist in der Grundinstallation normal. Wie ihr eure Geräte einbindet über die Plugins und passende Konfigurationsdateien erstellt, werde ich im nachfolgenden Blogbeitrag beschreiben.
5. Autostart von HomeBridge
Der Autostart von HomeBridge ist natürlich nur dann sinnvoll, wenn ihr den Service soweit samt Plugins und Konfiguration auf eurem Raspberry Pi eingerichtet habt. Der Vollständigkeit halber, beschreibe ich diesen Schritt aber auch noch in diesem Artikel.
Hier wird unterschieden, zwischen 2 Möglichkeiten: Einmal via init.d (Wheezy und älter) und über systemd (Jessie und neuer). Da ich selbst auf meinem Raspberry Pi noch Wheezy nutze, gehe ich hier nur auf die Methode via init.d ein. Wer systemd nutzen möchte, findet hier eine ausführliche Beschreibung dazu.
5.1 Autostart über init.d
Erstellt zunächst eine neue Datei unter „/etc/init.d/“ über sudo nano /etc/init.d/homebridge, welche ihr mit folgendem Inhalt füllt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #!/bin/sh ### BEGIN INIT INFO # Provides: homebridge # Required-Start: $network $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO dir="/home/pi" cmd="DEBUG=* /usr/local/bin/homebridge" user="pi" name=`basename $0` pid_file="/var/run/$name.pid" stdout_log="/var/log/$name.log" stderr_log="/var/log/$name.err" get_pid() { cat "$pid_file" } is_running() { [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1 } case "$1" in start) if is_running; then echo "Already started" else echo "Starting $name" cd "$dir" if [ -z "$user" ]; then sudo $cmd >> "$stdout_log" 2>> "$stderr_log" & else sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" & fi echo $! > "$pid_file" if ! is_running; then echo "Unable to start, see $stdout_log and $stderr_log" exit 1 fi fi ;; stop) if is_running; then echo -n "Stopping $name.." kill `get_pid` for i in {1..10} do if ! is_running; then break fi echo -n "." sleep 1 done echo if is_running; then echo "Not stopped; may still be shutting down or shutdown may have failed" exit 1 else echo "Stopped" if [ -f "$pid_file" ]; then rm "$pid_file" fi fi else echo "Not running" fi ;; restart) $0 stop if is_running; then echo "Unable to stop, will not attempt to start" exit 1 fi $0 start ;; status) if is_running; then echo "Running" else echo "Stopped" exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit 0 |
Anschließend ändert ihr noch die Benutzerrechte und installiert das erstellte Script:
1 2 | sudo chmod 755 /etc/init.d/homebridge sudo update-rc.d homebridge defaults |
Ihr könnt nun HomeBridge ganz einfach über sudo /etc/init.d/homebridge start starten. Beim Systemstart sollte HomeBridge zudem nun automatisch gestartet werden. Die Ausgaben von HomeBridge findet ihr nun übrigens unter „/var/log/homebridge.log“ bzw. “/var/log/homebridge.err“.
Damit ist die Grundinstallation vom HomeKit abgeschlossen. Im nächsten Artikel geht es dann um die Konfiguration und Erweiterung der Installation. Dabei werde ich insbesondere auf das Steuern von Funksteckdosen über Raspberry-Remote eingehen und zeigen, wie sich Sensoren einbinden lassen.
Tipp: Ihr könnt die Push-Benachrichtigung eures Browsers verwenden, um über neue Artikel benachrichtigt zu werden. Akzeptiert dazu einfach die Meldung eures Browsers beim Aufruf dieser Seite und ihr werdet automatisch benachrichtigt. Das Abo könnt ihr natürlich jederzeit beenden.
Ich bekomme die Fehlermeldung..ist das schlimm oder kann das ignoriert werden?
ARN engine [email protected]: wanted: {„node“:“>=4.3.2″} (current: {„node“:“4.3.0″,“npm“:“2.14.12″})
WARN engine [email protected]: wanted: {„node“:“>=4.3.2″} (current: {„node“:“4.3.0″,“npm“:“2.14.12″})
Hi Tom,
nimm doch eine neuere Version von node.js wie im Beitrag beschrieben. Dann sollte die Meldung nicht mehr auftauchen.
Ok danke euch! Jetzt funktioniert es …allerdings mit dem Austostart klappte nicht ganz.
Starte ich Homebridge manuell läuft das ganze auf Port:
Homebridge is running on port 51826.
Hier habe ich dann auch Verbindung mit der App.
Starte ich so
sudo /etc/init.d/homebridge start
läuft Homebridge immer auf einem anderen Port und ich habe keine Verbindung.
Ich hoffe, ihr wisst was ich meine..
Hallo Tom,
hast du mal die Methode mit systemd getestet? Bei neuren Versionen von Raspian sollte das problemlos funktionieren.
Hallo Alex, vielen Dank für dein Tutorial. Du hast mir einen Wunsch erfüllt, endlich kann ich morgens aus dem Bett per STIMME Kaffee kochen =)=)=)=)=)
Ein Sache wär da aber noch, auch wenn du vielleicht keine Antwort drauf hast, vielleicht die Community. Und zwar bekomme ich unter Jessie den Autostart irgendwie nicht ans laufen. Vermutlich reichen meine Kenntnisse um das Tutorial ,von der verlinkten Seite, zu meistern einfach nicht aus. Google konnte mir leider auch nicht mit einer Alternativen helfen.
Hat jemand eine Idee oder eine Alternative parat. Wäre echt toll. Nervt halt, wenn ich morgens dann doch erst an den RPI muss um die Kaffeemaschine zu starten ;-)
Achtung Anfänger!
Vielen Dank Basti
Hallo
Hier funktioniert alles Prima, allerdings bekomme ich es nicht hin das Homebridge beim Start geladen wird.
Auf ist Homebridge nach kurzer Zeit inaktiv.
Homekit/Siri geht erst nach einen erneuten Start von Homebridge wieder!
Hallo Alex,
erstmal einen herzlichen Dank für die ganze Arbeit die Du in diese Anleitung investiert hast. Ich habe trotz recht geringer Erfahrungen in der IT alles soweit hinbekommen. Holprig wurde der Punkt 5 mit dem Autostart über systemd, da (sofern ich das richtig gesehen habe) die Inhalte der „homebride“ und „homebridge.service“ noch angepasst werden müssen. Da scheinen die Pfade nicht mir deiner Installation überinezustimmen.
Nun zu meiner Frage: Hast du bereits Variablen der CCU2 in der Home-App verfügbar machen können? Habe sie in die config.json eingebunden, kann sie aber keiner Szene in der Home-App hinzufügen, und sehe sie dort auch nicht.
Vielen Dank,
Matthias
Vielleicht kann mir jemand helfen bei mir läuft alles nur solange ich über ssh die homebridge starte Eve feindete die Geräte und sie sind bedienbar sobald ich aber Putty schließe verliert eve die Verbindung
Hallo Quaschi,
um HomeBridge permanent laufen zu lassen, am besten über init.d/systemd wie beschrieben in den Autostart packen.
Hallo Quaschi,
das liegt daran das homebridge unter dem angemeldeten User Account läuft welcher abgemeldet wird wenn du putty schliesst. Lass homebridge automatisch starten dann klappt es..
Hallo liebe Bastler,
ich habe, wie der eine andere Kommentator, auch Probleme mit der Autostart-Geschichte für Homebridge. Ich bekomme es nicht hin nach der GitHub-Anleitung den Autostart einzurichten. Ich bekomme diesen User „homebridge“ nicht eingerichtet (warum auch immer ich den brauche). Kann ich das nicht einfach in dem eigentlichen pi-User machen? Es kommt aber so oder so immer die Meldung, dass ich nicht genug Berechtigung habe.
Ein HowTo dafür wäre echt toll!
Grüße
Mike
Die Installation von Homebridge hat nach dieser Anleitung soweit funktioniert und meine Hue-Testlampe die ich via FHEM ansteuere wurde auch in Apple’s Home App gefunden (nachdem das Homebridge „Gerät“ in der App gefunden und freigeschaltet war). Sofort konnte ich auch die Lampe mit Sprache steuern. Ein Erlebnis! :-) Nach einem Neustart des Pi (und Restart von Homebridge via „homebridge“ im Terminal) wird allerding in der Home App nichts mehr erkannt. Leider lies sich dieser eine Erfolg nicht reproduzieren. Was könnte das schieflaufen?
Hallo Stefan,
lässt sich denn HomeBridge neu koppeln? Oder gibt homebridge beim Start irgendwelche Fehlermeldungen aus?
An und für sich sollte das System sehr stabil laufen, auch nach Neustarts. Nutze es seit mehreren Monaten ohne irgendwelche Probleme.
Vielen Dank für diese super Anleitung! Einrichtung war super easy und hat sofort geklappt, jedoch wollte ich fragen ob es möglich ist die log-Datei, bzw die err-Datei live sehen zu können, ohne den normalen Start durch „homebridge“ durchzuführen.
Zweite Frage: Ist es möglich node.js zu updaten ohne Homebridge erneut zu installieren?
Viele Grüße
Moritz
Zur ersten Frage:
cat /var/log/homebridge.log
cat /var/log/homebridge.err
Oder für zeilenweise Ausgabe:
more /var/log/homebridge.log
more /var/log/homebridge.err
… auf dem Pi ausführen.
Kann ich mit dem raspberry pi + homebridge dann auf ein apple tv verzichten?
Ist ein Fernzugriff per App auf meine Geräte dann möglich?
Vielen Dank
Hi Fabian,
nach meinem Wissensstand aktuell leider nein. Um von extern auf die Geräte zugreifen zu können wird weiterhin ein Apple TV oder iPad im Hausnetz benötigt.
Hallo, vielleicht hat wer eine Idee.
Wenn ich hombridge von der konsole starte funktioniert alles einwandfrei.
Nach einem Neustart oder mit sudo /etc/init.d/homebridge start, startet hombridge auch ich kann aber keine Verbindung herstellen.
[email protected]:~ $ sudo /etc/init.d/homebridge start
Homebridge starting
Homebridge is running PID 1683
Was mache ich falsch? Habe schon mehrmals alles neu installiert leider ohne Erfolg
LG Erwin
Hallo, konnte das Problem lösen:-))
Habe im config.json den String „username“ von 30 auf 31 gesetzt. Den Hinweis habe ich auf https://wiki.fhem.de/wiki/Homebridge_einrichten gefunden. Das wars.
SG Erwin
Hallo.
Ich habe auch mal eine Frage:
Ich habe 3 plugins installiert. Das Fritz box Plug in wird in HomeKit auf dem iPhone angezeigt. Die anderen beiden leider nicht. Was habe ich falsch gemacht?
Loaded plugin: homebridge-fritz
[3/21/2017, 6:51:02 PM] Registering platform ‚homebridge-fritz.Fritz!Box‘
[3/21/2017, 6:51:02 PM] —
[3/21/2017, 6:51:03 PM] Loaded plugin: homebridge-fritzbox
[3/21/2017, 6:51:03 PM] Registering platform ‚homebridge-fritzbox.FRITZ!Box‘
[3/21/2017, 6:51:03 PM] —
[3/21/2017, 6:51:04 PM] Loaded plugin: homebridge-hue
[3/21/2017, 6:51:04 PM] Registering platform ‚homebridge-hue.Hue‘
[3/21/2017, 6:51:04 PM] —
[3/21/2017, 6:51:04 PM] Loaded plugin: homebridge-tado
[3/21/2017, 6:51:04 PM] Registering accessory ‚homebridge-tado.TADO‘
[3/21/2017, 6:51:04 PM] —
[3/21/2017, 6:51:04 PM] Loaded config.json with 1 accessories and 2 platforms.
[3/21/2017, 6:51:04 PM] —
[3/21/2017, 6:51:04 PM] Loading 2 platforms…
[3/21/2017, 6:51:04 PM] [My FritzBox] Initializing Fritz!Box platform…
[3/21/2017, 6:51:04 PM] [Hue] Initializing Hue platform…
[3/21/2017, 6:51:04 PM] [Hue] homebridge-hue v0.3.11, node v4.3.2, homebridge api v2.1
[3/21/2017, 6:51:04 PM] Loading 1 accessories…
[3/21/2017, 6:51:04 PM] [Tado] Initializing TADO accessory…
[3/21/2017, 6:51:04 PM] [Hue] Wohnung Coburg: BSB002 bridge, api v1.17.0
[3/21/2017, 6:51:04 PM] [Hue] Wohnung Coburg: 1 accessories
[3/21/2017, 6:51:04 PM] [Hue] Initializing platform accessory ‚Wohnung Coburg’…
[3/21/2017, 6:51:04 PM] [Hue] Wohnung Coburg: 2 services
[3/21/2017, 6:51:09 PM] [My FritzBox] Fritz!Box platform login successful
[3/21/2017, 6:51:09 PM] [My FritzBox] Discovering accessories
[3/21/2017, 6:51:10 PM] [My FritzBox] Outlets found:
[3/21/2017, 6:51:11 PM] [My FritzBox] Thermostats found:
[3/21/2017, 6:51:11 PM] [My FritzBox] Sensors found:
[3/21/2017, 6:51:11 PM] [My FritzBox] Initializing platform accessory ‚Guest WLAN’…
Guten Morgen!
Kurze Fragen, ggf. kann mir wer recht schnell helfen. Ich habe im Inet zwar viel gesucht, aber nichts eindeutiges gefunden und zwar:
– Kann HomeBridge auf einem Raspberry Pi 1 B laufen?
– Und einen Raspberry Pi 2 habe ich zum RaspberryMatic umfunktioniert; kann ich diese beiden Raspi’s zusammen laufen lassen, also kombiniert? Oder brauche ich für HomeBridge zwingend die Originale CCU?
Wäre Euch sehr verbunden, eine positive Antwort zu bekommen, dann steht dem langen Wochenende fürs Raspi basteln nix mehr im Wege :-)
VG Jens
Hallo Jens,
HomeBridge läuft auf dem Raspberry 1 wunderbar – habe es selbst darauf laufen.
Zu RaspberryMatic kann ich leider nichts sagen, da ich das selbst nicht in Betrieb habe.
Läuft auch mit Raspberrymatic
Hallo
Ich möchte dieses System mit diesen (http://m.ebay.ch/itm/Intertechno-Funk-Empfanger-ITL-230-max-230-Watt-Weltpatent-in-2-Drahttechnik-/360877991719?hash=item5406012727%3Ag%3AmRIAAOSwax5Yn6GO&_trkparms=pageci%253A6f13eca9-5ef3-11e7-84bc-74dbd180b5e7%257Cparentrq%253A02152f7615d0a991f2ecf9c2fff60c64%257Ciid%253A5) Funkempfängern, welche man hinter Lichtschaltern installieren kann, nutzen. Gibt es eine Möglichkeit, dass das System erkennen kann wenn man das Licht manuell Umschaltet?
Hey !! Coole Sache. Danke für die ausführliche Anleitung. Ein Problemchen hätte ich: Alles läuft, mein einziges Gerät (ESP-8266) lässt sich schalten, der Zustand wird auch angezeigt, sogar auf mehreren iPhones, nach einer gewissen Zeit lese ich: Deine Geräte antworten nicht. `homebridge´über SSH eingegeben und es funktioniert wieder. Das ganze wiederholt sich…. Pi 1 am LAN. Ob hb als Dienst oder nicht als Dienst läuft kann ich leider (noch) nicht beantworten. Jemand eine Idee? Danke Grüße, Karsten
Die Anleotung hat super geklappt und jetzt möchte ich dasGerät hinzufügen. Apple Home fordert mich allerdings auf, einen Code einzugeben. Welchen Cde soll ich da verwenden?