Jeder der ein iOS Gerät sein Eigen nennt, träumt irgendwann davon seine Geräte über Siri steuern zu können. Apple bietet dazu Homekit als Schnittstelle an. Problem dabei ist jedoch, dass es noch nicht allzu viele Geräte gibt, die diese Schnittstelle nutzen bzw. unterstützen. Hier kommt das Projekt „Homebridge“ zur Hilfe. Homebridge simuliert auf dem Raspberry ein Homekit-Schnittstelle und lässt euch so eure FHEM-Geräte über Siri steuern.
In diesem Beitrag erkläre ich euch, wie ihr auf eurem Raspberry Homebridge installiert, einrichtet und die Verbindung mit FHEM herstellt.
Benötigte Pakete installieren
Für den Betrieb von Homebridge wird die aktuelle Version von NodeJS benötigt. Welche momentan aktuell ist könnt ihr auf dieser Seite rausfinden. Zum diesem Zeitpunkt war es Version 4.3.1. Der Befehl zur Installation ist je nach Version des Raspberrys unterschiedlich.
Raspberry Pi 1:
wget https://nodejs.org/dist/v4.3.1/node-v4.3.1-linux-armv6l.tar.gz tar -xvf node-v4.3.1-linux-armv6l.tar.gz cd node-v4.3.1-linux-armv6l
Raspberry Pi 2 / 3:
wget https://nodejs.org/dist/v4.3.1/node-v4.3.1-linux-armv7l.tar.gz tar -xvf node-v4.3.1-linux-armv7l.tar.gz cd node-v4.3.1-linux-armv7l
Nun wird der Inhalt in ins Verzeichniss „/user/local“ verschoben:
sudo cp -R * /usr/local/
Nun überprüft ihr am besten ob die Installation erfolgreich war. Dies könnt ihr mit folgendem Befehl machen:
node –v
Jetzt solltet ihr die Version von NodeJS als Ausgabe erhalten.
Hat alles geklappt könnt ihr die heruntergeladene Datei und den entpacken Ordner löschen
Raspberry Pi 1:
rm node-v4.3.1-linux-armv6l.tar.gz rm -R node-v4.3.1-linux-armv6l/
Raspberry Pi 2 / 3:
rm node-v4.3.1-linux-armv7l.tar.gz rm -R node-v4.3.1-linux-armv7l/
Damit Homebridge ordnungsgemäß läuft wird noch folgendes Paket benötigt:
sudo apt-get install libavahi-compat-libdnssd-dev
Homebridge installieren
Nachdem alle benötigten Pakete installiert wurden, können ihr mit der Installation von Homebridge beginnen:
sudo npm install -g homebridge
Homebrdge wird nun heruntergeladen und installiert. Dies kann einige Minuten dauern.
Damit Homebridge auch mit den Geräten von FHEM kommuniziert, ist es nötigt das Plugin shim zu installieren:
sudo npm install -g homebridge-fhem
Nach der Installation können ihr damit beginnen Homebridge für den Betrieb mit FHEM zu konfigurieren. Dazu wird ein Verzeichenis mit einer Konfigurataionsdatei erstellt:
mkdir -p ~/.homebridge cd ~/.homebridge/ nano ~/.homebridge/config.json
In dem nun geöffnetet Editor wird die Konfiguration geschrieben:
{ "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:30", "port": 51826, "pin": "031-45-154" }, "platforms": [ { "platform": "homebridge-fhem.FHEM", "name": "FHEM", "server": "127.0.0.1", "port": "8083", "ssl": true, "auth": {"user": "FhemUser", "pass": "XXX"}, "filter": "room=Homekit" } ], "accessories": [] }
Habt ihr eure FHEM-Installation, wie in meinem Artikel beschrieben, mit SSL und einem Passwort abgesichert, müsst ihr den Eintrag „auth“ entsprechend anpassen und an den Eintrag „ssl“ denken. Ansonsten den Eintrag „ssl“ entfernen und die Zeile „auth“ einfach so belassen.
Der Eintrag „server“ muss nur angepasst werden, wenn Homebridge nicht auf dem gleichen System wie die FHEM-Installation läuft.
Mit der obigen Konfigurationsdatei werden alle kompatiblen FHEM-Devices mit Siri steuerbar, welche sich im Raum „Homekit“ befinden. Wollt ihr alle eurer kompatiblen Geräten steuern oder einen anderen Raum verwenden, dann einfach den Eintrag „filter“ anpassen.
Anschließend die Datei speichern und schließen.
Einrichtung unter FHEM
Aufgrund des oben genannten Filters müssen alle Geräte, welche mit Siri gesteuert werden sollen, den Raum „Homekit“ zugeordnet werden. Sind alle gewünschten Geräte in diesem Raum, ist die Einrichtung innerhalb FHEMs auch schon fertig. Die benötigten Attribute werden beim ersten Start von Homebridge automatisch hinzugefügt.
Werden nachträglich neue Geräte zur Homebridge (Raum Homekit) hinzugefügt, muss Homebridge neu gestartet werden (siehe weiter unten).
Homebridge ist nun startbereit und kann über den Befehl
homebridge
gestartet werden.
Ihr sieht nun einen 8stelligen Code für die Konfiguration auf einem iOS-Gerät.
Konfiguration auf einem iOS-Gerät
Für die Konfiguration auf iOS-Geräten hat Apple noch keine eigene App bereitgestellt, sodass wir auf eine Drittanbieter-App ausweichen müssen. Ich benutze dazu „Elgato Eve“ von Elgato Systems.
Beim ersten starten der App muss man zuerst Geräte hinzufügen. Dies geschieht über „Gerät hinzufügen“
Nach der Vergabe eines Namens, beginnt die App auch schon nach kompatiblen Geräten zu suchen. Die eingerichtete Homebridge sollte nun gefunden werden:
Nach auswählen der Homebridge werden wir dazu aufgefordert einen 8-stelligen Einrichtungscode einzugeben. In unserem Fall ist es „031-45-154“.
Da die Homebridge-Installation nicht von Apple verifiziert ist, erhalten man nun eine Warnmeldung, welche einfach mit „Trotzdem hinzufügen“ beantwortet werden kann. Die App beginnt sich nun mit der Homebridge zu koppeln. Nach der erfolgreichen Kopplung kann man bereits erste Räume hinzufügen oder erstmal mit dem Standardraum fortfahren.
Man erhält nun eine Übersicht alle gefundenen Geräten.
Man sollte nun beginnen sich die gewünschten Räume einzurichten. Dazu über der unteren Leiste auf „Räume“ um alle vorhandenen Räume anzuzeigen.
Geht man nun wieder zur Geräteübersicht kann man durch tippen auf ein Gerät dessen Einstellungen bearbeiten.
Hier kann man nun dem Gerät einen Raum zu ordnen. Wichtig ist hier auch, dass jedes Gerät einen eindeutigen Siri-Namen bekommt. Über diesen Namen steuern wir mit Hilfe von Siri unsere Geräte. Man sollte den Geräten also aussprechbare Namen geben. Des Weiteren ist es wichtig darauf zu achten, dass der Eintrag „Verwendet für“ passend gewählt ist. Dadurch ist es auch möglich, allgemeine Befehle über Siri abzusetzen. Zum Beispiel: „Siri, schalte das Licht in der Küche an“ anstatt „Siri, schalte die LEDLeiste in der Küche an“.
Alle Einstellungen die ihr über diese App tätigt werden eurem Homekit-Profil zugeordnet. Ihr könnt also über alle iOS-Geräte die mit eurer Apple-ID verknüpf sind eure Geräte steuern.
Über die App lässt sich noch einiges weiteres Einstellen (Räume, Szenen, Bereiche), aber diese lassen sich am besten selber durch „rumklicken“ innerhalb der App entdecken.
Homekit automatisch starten
Damit man nach einem Neustart des Raspberrys Homebridge nicht immer manuell neustarten muss, erstellen wir uns einen Service, welcher Homebridge automatisch startet.
sudo nano /etc/init.d/homebridge
Wir fügen folgenden Inhalt hinzu:
#!/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 for homebridge # Description: Enable service provided by daemon. ### END INIT INFO export PATH=$PATH:/usr/local/bin export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules PID=`pidof homebridge` case "$1" in start) if ps -p $PID > /dev/null 2>&1; then echo "Homebridge is already running" else su - pi -c "homebridge > /dev/null 2>&1 &" echo "Homebridge starting" $0 status fi ;; stop) if ! ps -p $PID > /dev/null 2>&1; then echo "Homebridge is not running" else kill $PID echo "Homebridge closed" fi ;; restart) if ! ps -p $PID > /dev/null 2>&1; then $0 start else $0 stop $0 start fi ;; status) if ps -p $PID > /dev/null 2>&1; then echo "Homebridge is running PID $PID" else echo "Homebridge is not running" fi ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac exit 0
Soll Homebridge über einen anderen Benutzer gestartet werden, muss am Anfang der Datei folgende Zeile entsprechend geändert werden:
su - pi -c "homebridge > /dev/null 2>&1 &"
Nun noch den Autostart aktivieren
sudo chmod 755 /etc/init.d/homebridge sudo update-rc.d homebridge defaults
und Homebridge wird nach einem Neustart automatisch mit neu gestartet.
Manuell kann man Homebridge mit folgenden Befehlen steuern:
sudo service homebridge start
sudo service homebridge stop
sudo service homebridge restart
Weitere Infos zur Homebridge auf dem offiziellen FHEM-Wiki-Eintrag.
Zunächst Danke für die tolle Anleitung.
Ich habe (Außer dem automatischen Starten) alles installiert, Incl. FHEM Plugin, im Grundsatz läuft es auch, d.h. Ich sehe meine Somfy Rolläden in Elgato, aber leider lässt sich nichts steuern. Ich habe den Rolläden die Attr. generis device blind und Model somfyblind zugewiesen.
In Elgato wird die ganze anzeigt der Zustand ’schließend‘ angegeben, ich habe dort dann Pfeile, um Prozentsätze zu verändern, wenn ich das mache, dann sendet Homebridge auch Signale (Kann ich in der Konsole sehen) aber nichts tut sich
Irgendeine Idee? Welche Info brauchst Du?
Hallo,
danke für das Lob.
Ich habe leider keine Rollladenschalter zuhause. Wenn ich auf dem Wiki-Eintrag zu Homebridge nachschaue werden die Somfy-Geräte ja nicht automatisch unterstützt. Es ist also eine entsprechende Konfiguration nötig. Ich habe mich mal im FHEM-Forum umgeschaut, da gibt es noch andere (z.B. der Nutzer „Mikesn“) die versuchen einen Rollladenschalter richtig zu konfigurieren. Vielleicht findest du dort ja Hilfe.
Gruß Daniel
Danke für den Tipp
Hallo Daniel,
vielen Dank für die super Erklärung! Es hat beim ersten mal auch super funktioniert. Als ich dann nachträglich die SSL Verschlüsselung eingestellt habe bekomme ich keine Verbindung mehr… In der .json Datei hatte ich bei SSL bereits auf „true“ gestellt.
bekomme folgenden fehler angezeigt…
longpoll ended, reconnect in: 200msec
starting longpoll: https://127.0.0.1:8083/fhem.pl?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON×tamp=1472234268720
longpoll error: Error: connect ECONNREFUSED 127.0.0.1:8083, retry in: 10000msec
starting longpoll: https://127.0.0.1:8083/fhem.pl?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON×tamp=1472234278735
Hast du eine Idee woran das liegen kann?
Danke und Grüße
Tim
Hi Daniel,
danke für die Anleitung. Hat gut funktioniert, nur dass ich bei mir noch einen C++11-Compiler installieren musste.
Allerdings scheint nicht alles out-of-the-box zu funktionieren, auch wenn die Grundfunktionen gegeben sind. Ich verwende zum Beispiel das HomeMatic Thermostat HM-CC-RT-DN. Dort funktioniert die Temperatureinstellung und Anzeige, jedoch die Betriebsart (Auto/Manu) nicht. Und beim Fensterkontakt HM-SEC-RHS wird nur zwischen offen und geschlossen unterschieden, obwohl es ja auch gekippt gibt.
Hallo
Kann es sein, dass nur ein iOS Benutzer bzw. eine Apple ID die homebridge nutzen kann?
Ich habe alles eingerichtet und es funktioniert auf meinem iPhone auch wunderbar. Mein Bruder kann die Geräte jedoch nur sehen, wenn ich ihn einlade oder wenn ich das ganze Haus lösche.
Ist das einfach so, oder gibt es dafür eine Lösung?
Danke und Gruß
Philipp
Hallo Phillip,
ich persönlich verwende mit meiner Frau die gleiche Apple-ID (sie hat nur für iMessage eine zusätzliche eigene ID).
Sie kann deswegen die Geräte auch sehen und steuern.
Wenn ich mir die Beschreibung von Elgato ansehe, scheint dies auch so von Apple „gewollt“. Entweder die gleiche Apple-ID oder halt die gewünschte Person einladen:
Quelle: Elgato Systems
„Alle HomeKit-Geräte – also auch Eve-Geräte – lassen sich nur mit einem Master-iOS-Gerät pairen.
Um Eve-Geräte gemeinsam zu nutzen, richten Sie weitere iOS-Geräte mit derselben Apple-ID ein, iCloud synchronisiert Ihr HomeKit-Setup mit allen iOS-Devices – das kann einmalig bis zu 2 Stunden dauern.
Nach der Synchronisation wird Eve an den iOS-Geräten automatisch die Einstellungen des Master-Geräts nutzen. Um die Synchronisation der HomeKit-Daten über iCloud zu ermöglichen, müssen Sie die Funktion „iCloud-Schlüsselbund“ in „Einstellungen > iCloud > Schlüsselbund“ an den iOS-Geräten aktiviert haben.
Um Ihre Eve-Geräte mit anderen Benutzern gemeinsam nutzen zu können, werden Sie mit iOS 9 (und einem Eve-App-Update) Nutzer mit einer anderen Apple-ID einladen können.“
Gruß Daniel
Es tatsächlich so, dass nur einer die Geräte verwalten kann. Das ist dann quasi der Administrator. Man kann dann weitere Personen (weitere Apple-IDs) einladen und auch festlegen, welche Berechtigungen die haben. Viel gibt es da jedoch nicht zur Auswahl.
Verändern kann in jedem Fall nur der „Admin“, auch was die Zuordnung der Geräte zu Räumen betrifft, Siri-Namen der Geräte, usw.
Hallo.
Nachdem ich viel mit Pilight rumprobiert habe und absolut nicht zufrieden war, habe ich mich mit deiner Anleitung endlich an FHEM gewagt.
Deine Anleitung ist echt spitze und mit die beste, die ich gefunden habe. Auch, dass du so rege auf die Kommentare antwortet, finde ich super.
Bei mir funktioniert auch alles: 3 Funksteckdosen aus FHEM werden über Homebridge in der Home App angezeigt und können toll gesteuert werden. Nur leider funktioniert das ganze nicht mit dem Autostart (was mir am wichtigsten wäre). Wenn ich den Raspberry Pi neu hochfahre, findet die Home App die FHEM-Geräte nicht mehr. Homebridge hatte vorher schon einen Autostart, da hab ich eigentlich nix geändert. Nachdem ich Homebridge stoppe und manuell neustarte geht wieder alles. Nur eben der komplette Autostart nicht inkl. FHEM.
Vielen Dank im Voraus.
Gruß, Patrick
Hallo Patrick,

vielen Dank für das Lob 😉 Freut mich, dass im Großen und Ganzen alles bei dir klappt. Mit dem Autostart ist natürlich echt bisschen ärgerlich.
Habe das Skript selber im Einsatz, funktioniert bis perfekt. Vielleicht findest du auf der FHEM-Seite zur Homebridge ein paar mehr Infos, habe auch von dort das Skript.
Was vielleicht sein kann ist, dass du das Skript noch anpassen musst, wenn du nicht mit dem Benutzer „pi“ arbeitest. Ich habe zum Beispiel den Benutzer „pi“ gelöscht und mir einen eigenen erstellt –> „Daniel“. Habe dann das Skript wie folgt angepasst:
Und dann noch wie im Beitrag den Autostart aktivieren.
Ansonsten habe ich hier auf der Homepage noch andere Möglichkeiten gefunden, Homebridge automatisch zu starten. Vielleicht klappt ja von diesen Lösungen eine bei dir.
Gruß Daniel
Hi,
hatte gerade das selbe Problem, Start über „sudo homebridge“ funktioniert, über Reboot oder „sudo start homebridge start“ geht nicht.
Der Service startete, der Port wurde geöffnet, allerdings fand Eve die Homebridge nicht.
Nachdem ich den Benutzername von :30 auf :31 geändert habe funktioniert alles zur vollsten Zufriedenheit.
Gruß
DerHoschi
Guten Abend!
Auch von mir erstmal ein großes Lob für die zahlreichen tollen Anleitungen.
Leider startet das Homebridge Plugin nicht richtig.
Er bleibt immer bei: „Server listening on: http://<ip>:8282″ hängen.
Hat jemand eine Idee woran es liegen könnte? Ich bin ganz genau nach der Anleitung vorgegangen.
Gruß Marcel
Gleiches Problem hier bei mir, zunächst. Welche Version von node und nodejs ist denn bei dir aktiv?
Die manuelle Installation hat bei mir nicht funktioniert. „node -v“ lieferte irgendetwas mit 0. …
Nach „apt-get install node“ und „apt-get update&upgrade“:
bananapi:~# node -v
v6.9.2
bananapi:~# which node
/usr/local/bin/node
bananapi:~# nodejs -v
v0.12.18
bananapi:~# which nodejs
/usr/bin/nodejs
Und nachdem ich die Zeile <„ssl“: true> aus der config.json gelöscht habe und das Kennwort im Klartext (leider) hier eingetragen habe, läuft die „homebridge“.
Hallo Marcel und Manfred,
ich benutze die Version 4.3.1. Habe NodeJS seit der Installation von der Homebridge noch nicht aktualisiert –> „never change a running System“ 😉
Das Problem von die Marcel konnte ich leider nicht rekonstruieren, habe es auf meinem Testsystem nochmal nach meiner Anleitung installiert und es hat alles geklappt. Kann natürlich sein, dass deine Homebridge keine Verbindung zu FHEM aufbauen kann. So wie es aussieht „hört“ er ja auf einen Port aber bekommt irgendwie keine Antwort. Hatte zuerst auch keine Ahnung woran es liegen könnte, mit der Antwort von Manfrend kam mir jedoch eine Idee. Er hat ja den Eintrag „ssl“ aus der Config gelöscht. Da würde es mich ja interessieren, hast du Manfred den keine SSl-Verbindung zu FHEM eingerichtet? Den wenn nicht, dann muss der Eintrag ja gelöscht werden, bzw. auf false gesetzt werden. Der Eintrag mit „auth“ der muss auch nur gesetzt werden, bzw. mit den richtigen Daten (Benutzername und Passwort) eingetragen werden, wenn FHEM auch mit einem Passwort geschützt ist. Es ist natürlich auch möglich ein Passwortschutz zu haben ohne eine SSL-Verbindung. Dann kann der „ssl“ Eintrag gelöscht werden (oder auf false) es muss aber der „auth“-Eintrag gesetzt sein. Dass hier der Benutzername und das Passwort in Klartext steht ist dann leider so.
Vllt solltest du dort mal nach schauen Marcel ob die Einstellungen in der Config mit deiner FHEM-Konfiguration übereinstimmen –> SSL Ja oder Nein?, Passwort (basicAuth) Ja oder Nein? Passwort mit SSL oder Passwort ohne SSL etc.
Gruß Daniel
Hallo Daniel,
ich bin in Sachen Linux unerfahren und kann mir folgender Fehlermeldung nichts richtiges anfangen:
gyp WARN EACCES user „root“ does not have permission to access the dev dir „/root/.node-gyp/4.3.1“
gyp WARN EACCES attempting to reinstall using temporary dev dir „/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/node_modules/mdns/.node-gyp“
make: Entering directory ‚/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/node_modules/mdns/build‘
die Meldung kommt beim Punkt „herunterladen und installieren“ zum Schluss kommt dann noch folgende Meldung:
^Cdns_sd_bindings.target.mk:142: recipe for target ‚Release/obj.target/dns_sd_bindings/src/socket_watcher.o‘ failed
make: *** [Release/obj.target/dns_sd_bindings/src/socket_watcher.o] Interrupt
nach vielen Versuchen schreibe ich Dir in großer Verzweiflung 😉
lg Holger
Hallo Holger,
prüfe mal die gcc Version mit „gcc -v“.
Bei mir war es heute erforderlich gcc 4.8 zu installieren. Ich glaube das war bei mir im selben Zusammenhang mit Deiner Fehlermeldung, die ich auch hatte.
Eine funktionierende Anleitung findest Du unter
https://somewideopenspace.wordpress.com/2014/02/28/gcc-4-8-on-raspberry-pi-wheezy/
Gruß resyncer
Hallo zusammen,
Ich habe eine laufende Homebridge auf meinem RaspberryPi 2.
zusätzlich habe ich jetzt FHEM auf dem selben Raspberry installiert und möchte gerne meine FHEM Geräte in der HomeApp anzeigen. Nach Installation von homebridge-fhem plugin startet die Homebridge neu aber von FHEM wird mir nichts angezeigt. Beim starten der Homebridge sieht man nichts davon, das die FHEM initialisiert wird. Vielleicht hat jemand eine Idee? FHEM Benutzer,Passwort und Room Einträge in der config.json habe ich schon geprüft und sind korrekt. Einzig ist die Sache mit SSL, die true.
Vielen Dank schon mal Gruß Klaus