Im nachfolgenden Artikel möchte ich euch beschreiben, wie sich eure vom Raspberry Pi aus steuerbaren Geräte wie Funksteckdosen über Apples HomeKit steuern lassen. Damit ist dann auch eine bequeme Sprachsteuerung über Siri möglich, was die zusätzliche Installation (kostenpflichtiger) Zusatzapps für diese Dinge überflüssig macht – lediglich eine App zur Konfiguration eures HomeKit-Setups wird benötigt.
Hinweis [17.12.2015]: Die HomeKit-Funktionalität wurde in den neuen Versionen von RaZberry entfernt! Daher funktioniert das Tutorial aktuell nicht. Wer momentan RaZberry mit HomeKit nutzen möchte, muss sich daher entweder eine ältere Version z.B. von GitHub besorgen oder warten, bis das HomeKit-Benutzermodul dafür verfügbar ist.
Hinweis [16.02.2016]: Ich habe einen neuen Artikel zu HomeKit mit HomeBridge verfasst.
Hinweis: Die beschriebene Vorgehensweise funktioniert aktuell mit iOS 9 problemlos, inwieweit Apple in Zukunft diese Selbstbaulösungen aussperrt, kann ich leider nicht vorhersagen (siehe Hinweis oben). Behaltet aber im Hinterkopf, dass euer Setup mit jedem iOS-Update funktionslos werden kann!
1. Grundvoraussetzungen am Raspberry Pi
Um HomeKit-Steuerung zu ermöglichen, muss das zu steuernde Gerät über einen HTTP-Request am Raspberry Pi zu steuern sein. Bei Funksteckdosen geht das ganz einfach über die in diesem Artikel beschriebene Nutzung mit Webinterface. Auch für Infrarot-Geräte habe ich hier einen entsprechenden Artikel verfasst, der auch die Steuerung über HTTP-Requests ermöglicht.
Der Artikel bezieht sich im Folgenden auf die Verwendung von Funksteckdosen, andere Geräte lassen sich natürlich analog hinzufügen.
2. Installation von RaZberry
Als Software am Raspberry Pi habe ich mich für das Projekt „RaZberry“ entschieden, da es sich sehr einfach einrichten und benutzen lässt. Einziger Kritikpunkt, den ich beim Testen feststellen konnte, ist der RAM-„Verbrauch“ von ca. 100MB, welcher bei neueren Raspberry-Modellen aber nicht problematisch sein sollte. Wer allerdings noch ein Modell mit 256MB RAM-Speicher besitzt, sollte sich darüber klar sein, dass im gleichzeitigen Betrieb mit anderen Diensten viel Swap genutzt werden kann.
Die Installation von RaZberry ist dank Installationsscript sehr einfach. Ladet euch dazu erst das Script zur Installation auf euren Raspberry via wget razberry.z-wave.me/install .
Anschließend macht ihr es über sudo chmod +x install ausführbar. Ihr könnt es nun über sudo ./install starten.
Hinweis: Bitte beachtet, dass in dem Installationsscript ein Befehl zum Entfernen der wolfram-engine enthalten ist. Solltet ihr dieses Paket benutzen, solltet ihr RaZberry nicht installieren.
Die Installationsschritte im Script sollten selbsterklärend sein. Die Installation dauert etwas, da zusätzliche Pakete heruntergeladen und installiert werden müssen – dies geschieht aber automatisiert.
3. Konfiguration von RaZberry
Die Konfiguration von RaZberry erfolgt bequem über ein Webinterface. Dazu wurde im Installationsprozess der Webserver Mongoose installiert. Ihr könnt das Webinterface im Browser unter [IP-Raspberry]:8083 ganz einfach von einem anderen PC im Netzwerk aufrufen.
Im Webinterface klickt ihr zunächst rechts oben auf das Zahnrad, worauf hin sich ein kleines Dropdown-Menü öffnet. In diesem klickt ihr auf „Anwendungen“, um eure Funksteckdosen o.ä. Geräte einzurichten.In der angebotenen Liste an Anwendungen wählt ihr bei „HTTP-Gerät“ den Punkt „Neue App“ aus.
Hier könnt ihr ein Gerät (sprich eine Funksteckdose) wie im nachfolgenden Screenshot anlegen:
Die URLs müsst ihr natürlich gemäß eurer Konfiguration anpassen. Ihr könnt sie im Webinterface von Raspberry-Remote für jede Steckdose kopieren.
Speichert die App und kehrt zur App-Übersicht zurück. Dort wählt ihr dieses mal „Apple HomeKit Gateway“ und dann „Neue App“.
Name, Beschreibung und iOS-Name könnt ihr dabei frei wählen, z.B. so:Das war es auch schon mit der Konfiguration im Webinterface. Optional könnt ihr natürlich noch eure anderen Geräte auf die gleiche Weise ergänzen. Die Übersicht sollte nun einen Schalter mit eurem Gerätenamen enthalten:
Bevor es an die Konfiguration auf eurem iOS-Device geht, müsst ihr noch die HomeKit-Pin auslesen, die automatisiert erstellt wurde. Werft dazu auf dem Raspberry Pi einen Blick in die Datei „/var/log/z-way-server.log“, z.B. über
1 | tail -f /var/log/z-way-server.log |
Dort sollte ein Eintrag wie „[I] [core] HomeKit PIN: 123-12-123“ sein. Notiert euch die Pin am Besten irgendwo – diese wird gleich für die HomeKit-App benötigt.
4. Einrichten von HomeKit am iOS-Device
Hierzu wird eine HomeKit-fähige App benötigt. Kostenlos gibt es diese z.B. von Elgato für iPhone und iPad kostenlos. Ladet euch die App auf euer iOS-Gerät.
Die Konfiguration beschreibe ich mit nachfolgender Bilderstrecke:
Nach erfolgreicher Konfiguration lassen sich die Geräte auch bequem über Siri steuern.
Als Antwort bekommt ihr zwar „Lampe“, jedoch werden die richtigen Geräte geschaltet. Ich denke, das hängt mit dem Binär-Switch zusammen, den wir in RaZberry für die Steckdosen erstellt haben – dieser scheint als Lampe erkannt zu werden.
Ihr habt nun erfolgreich eine HomeKit-Bridge auf eurem Raspberry eingerichtet, mit der ihr von iOS-Geräten aus eure Geräte bequem schalten könnt.
Viel Spaß und Erfolg bei der Umsetzung!
Bei Fragen, Problemen, Anregungen etc. könnt ihr natürlich wie immer das Kommentarfeld unten benutzen.
Hallo! Interessant, dass sich HomeKit so leicht einrichten lässt. Kann man damit z.B. Relais über die GPIOs steuern?
Hi,
ich habe es selbst noch nicht umgesetzt – aber das sollte lt. diesem Tutorial auch ganz bequem einzurichten sein.
Moin moin,
kann man schon was zur Kompatibilität mit iOS 9 sagen? Möchte mir das jetzt ungern alles einrichten und dann funktioniert nach dem Update nichts mehr so wie bei SiriProxy ;-)
Danke!
Hi Buddi,
ich zumindest kann dazu noch nichts sagen, da ich die Beta / GM von iOS 9 nicht einsetze, sobald die fertige Version verteilt ist, werde ich aber Rückmeldung geben.
Hat hervorragend geklappt! Vielen Dank für die einfache Anleitung.
Vielen Dank für dieses Tutorial!
Was mich noch abhält ist, die Verwendung von mongose da ich bereits einen anderen Webserver installiert habe. Kann ich die den Teil zu mongose in dem install skript einfach auskommentieren? oder muss ich noch an anderer Stelle irgendwelche Pfadanpassungen machen?
Hi Stefan,
dazu kann ich leider nichts sagen, da ich es selbst noch mit keinem anderen Webserver ausprobiert habe. Mongoose läuft aber auch neben Apache2 bei mir ohne Probleme. Hier ist ein Forenthread zum Thema anderer Server mit Razberry.
Hi,
super Anleitung! Leider erscheint das Http-Gerät nach einiger Zeit in der IOS-App als nicht erreichbar und das Steuern via Siri klappt dann auch nicht mehr (obwohl’s zunächst funktionierte und ich nichts geändert habe). Kennt jemand das Problem?
Hallo Jonas,
ich habe Homekit bisher nur experimentell auf meinem Raspberry betrieben, daher kann ich zur Langzeitstabilität noch nichts sagen. Was mir aber aufgefallen ist, ist, dass man immer eine neue Homekit-Pin bekommt, wenn man den Pi bzw. das Homekit-Zeug auf dem Pi neu startet. Kann es sein, dass bei dir die entsprechende Komponente abgestürzt ist und das Steuern deshalb nicht mehr geht?
Hallo,
mittlerweile habe ich rausgefunden, dass es was mit der App „HTTP-Gerät“ zu tun haben muss.
Wenn das Gerät in der App „Elgato Eve“ als nicht erreichbar angezeigt wird und ich die App „HTTP-Geräte“ über die Homepage (http://IP-Raspberry:8083) kurz deaktiviere und direkt wieder aktiviere, läuft es wieder. Nach einiger Zeit wird das Gerät jedoch wieder als nicht verfügbar angezeigt… Leider habe ich noch keine Lösung für das Problem finden können.
Viele Grüße
Jonas
Hi Jonas,
interessant – leider kann ich dir auch gerade keinen Tipp geben, woran es liegt.
Es gibt allerdings ein Forum zu der Software. Interessant könnte auch noch ein Blick in die Log-Dateien (siehe hier [–> Something is not working. How to report a bug?]) sein – vielleicht finden sich da genauere Angaben zu dem Problem.
Hallo Alexander,
hab dein Tutorial ausprobiert und funktioniert! Danke dafür! Nun war das für mich eher eine Spielerei und ich würde gerne alle wieder deinstallieren. Gibt es wie für den install auch ein deinstall script? Und ja ich weiss hätte ich mir besser vorher Gedanken zu machen sollen :-)
Hi Stefan,
ein entsprechendes Script zum Deinstallieren ist zumindest mir nicht bekannt :(
Ich fürchte, die nicht gewollten Änderungen müssen manuell rückgängig gemacht werden (mongoose + z-way-Server vom Autostart entfernen, evtl. deinstallieren, andere evtl. nachinstallieren Pakete deinstallieren etc.).
Danke für die Anleitung,
Wie genau finde ich die URL zum ein und ausschalten heraus?
Hallo Michael,
wenn du (wie ich hier) raspberry-remote mit dem mitgelieferten Webinterface verwendest, solltest du die Links z.B. beim darüberfahren mit dem Mauscursor im Webinterface von raspberry-remote sehen (im Firefox links unten) bzw. per Rechtsklick auf den Button des jeweiligen Gerätes und „Link-Adresse kopieren“ auswählen.
Hallo,
erst einmal vielen Dank für die klasse Anleitung. Leider habe ich einige Probleme.
Solange ich das iPhone nicht in der iCloud angemeldet habe kann ich über mein Wlan alles machen.
Sobald ich aber iCloud zwecks Siri aktiviere werde ich zum aktivieren des Schlüsselbundes aufgefordert. Ok, aktiviert.
Ab dann kommt nur noch die Meldung: ‚iCloud Synchronisierung wird gerade ausgeführt. Versuchen sie es später noch mal.‘
Das ändert sich auch nach drei Tagen nicht.
Kennt jemand das Problem, habe ich etwas übersehen?
Hallo , Ich finde diese Anleitung sehr praktisch und es hat alles gut funktioniert, bis auf das noch ein paar Stunden , das iPhone das Gate nicht mehr findet. Da steht dann sowas wie : Aktualisiert 08:10
Selbst nach einem Neustart geht es noch immer nicht.
Was kann ich dagegen unternehmen ?
Ich würde mich über jede Hilfe freuen.
MFG
Hallo Philipp,
bei einem Neustart wird wieder ein neuer HomeKit-Pin generiert. Hast du diesen eingetragen?
Warum das Gate bei dir nach einiger Zeit nicht mehr gefunden wird kann ich sir spontan nicht beantworten, da müsste man einen Blick in die Logfiles werfen.
Wenn ich nach einem Neustart tail -f /var/log/z-way-server.log
eingebettet erscheint da keine Pin mehr , zumindest finde ich keine
Ich habe mal den tail-Befehl eingegeben und dann kam das :
Linux Orion 3.18.5+ #748 PREEMPT Wed Feb 4 21:24:41 GMT 2015 armv6l
___
/\_ \ __
__ __ ___\//\ \ __ __ ___ ___ /\_\ ___
/\ \/\ \ / __
\\ \ \ /\ \/\ \ /' __
__\/\ \ / __
\\ \ \_/ |/\ \L\ \\_\ \_\ \ \_\ \/\ \/\ \/\ \ \ \/\ \L\ \
\ \___/ \ \____//\____\\ \____/\ \_\ \_\ \_\ \_\ \____/
\/__/ \/___/ \/____/ \/___/ \/_/\/_/\/_/\/_/\/___/
Free Audiophile Linux Music Player – Version 1.55
C 2013 Michelangelo Guarise – Volumio.org
Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Nov 9 14:48:53 2015
[email protected]:~$ tail -f /var/log/z-way-server.log
[2015-11-09 14:48:48.827] [I] [core] Executing script: /*** ThermostatDevice Z-Way HA module ******************************************* …
[2015-11-09 14:48:48.831] [I] [core] Loading module FosCam9826 from modules/FosCam9826
[2015-11-09 14:48:48.851] [I] [core] Executing script: /*** FosCam9826 Z-Way HA module ******************************************* …
[2015-11-09 14:48:48.859] [I] [core] Loading module MultilineSensor from modules/MultilineSensor
[2015-11-09 14:48:48.872] [I] [core] Executing script: /*** MultilineSensor Z-Way HA module ******************************************* …
[2015-11-09 14:48:48.875] [I] [core] Loading module Notification from modules/Notification
[2015-11-09 14:48:48.889] [I] [core] Executing script: /*** Notification Z-Way HA module ******************************************* …
[2015-11-09 14:48:48.893] [I] [core] Starting automation…
[2015-11-09 14:48:49.030] [I] [core] Starting storage…
[2015-11-09 14:48:49.035] [I] [core] ZWay Automation started
Also ich finde da keine Pin
Hi Philipp,
„tail“ reicht wohl nicht aus, vermutlich steht die Pin weiter oben. Öffne die Datei mal z.B. mit „nano“ (per Strg+w kann gesucht werden).
Danke, habe den Pin gefunden.Kann ich denn verhindern ,dass immer wieder ein neuer Pin generiert wird und wann wird eigentlich ein Pin generiert ?
MFG
Hi Philipp,
das scheint bei razberry so nicht vorgesehen zu sein, hier wird beim Start immer eine neue Pin generiert. Evtl. findest du in deren Forum mehr Informationen und eine Antwort, ob man die Pin auch beibehalten kann – ich habe auf die Schnelle nichts gefunden :(
hi,
ich hab jetzt irgendwie das problem, das alles läuft ich allerdings mit der eve app den homekitserver nicht finde. kann jemand bestätigen das es mit aktuellem iOS nichtmehr funktioniert?
Hi Tobi,
das kann ich so nicht bestätigen. Habe es gerade selbst unter iOS 9.1 und der eve App neu eingerichtet, da wurde der Raspberry gleich gefunden und ließ sich konfigurieren.
hast du ne idee woran es liegen kann, z-wave läuft….. home kit bridge habe ich installiert und auch schon mal gelöscht und wieder reingemacht. Weiß jemand wie die Koppelung zwischen der bridge und dem iOS läuft? muss man da auch noch ports freimachen?
habe es nochmal ausführlich getestete. wird nicht gefunden. kann machen was ich will…
gruß und danke
Hallo,
Ich habe auch die Probleme mit den http-Geräte das sie nach erneuten verbinden mit dem Wlan nicht mehr erreichbar sind. wie Jonas schon gesagt hat wenn man sie kurz über die Homepage deaktiviert und wieder aktiviert sind sie wieder verfügbar für kurze Zeit. Gibt es dazu schon eine Lösung, das sie nach dem erneuten verbinden mit dem Wlan sofort zu Verfügung stehen?
Gibt es eventuell eine Möglichkeit dem „Apple HomeKit Gateway“ eine feste Pin zugeben?
mfg
Hallo, irgendwie bin ich zu blöd, wo finde ich nochmals genau die URL – bei mir zeigt es kein URL an wenn ich mit der Maus über das Gerät gehe.
Hallo Matthias,
du kannst die URL auch einfach selbst zusammenbasteln. Hier der Aufbau (exemplarisch):
http://xxx.xxx.xxx.xxx/remote/?group=11010&switch=01&action=0
Damit würde die Steckdose A (bzw. 1) mit dem Hauscode 11010 ausgeschaltet werden (action=0).
Was genau muss ich aus dem oben verlinkten toturial machen bevor ich dieses mache?
Hi Steffen,
für die Funksteckdosensteuerung muss ein Webinterface eingerichtet werden – also bis zu diesem Schritt.
Mein IOS device findet auch nichts :/ gibt es dazu irgendeine Idee um das Problem zu lösen?
Mfg
Moin David,
hmm….merkwürdig. Welche Version von razberry nutzt du denn?
Habe meine Version seit der Installation nicht upgedatet und hier läuft es noch (nutze es allerdings immer nur testweise).
Gleiche problematik wie bei mir? du findest die Bridge nicht?
Hallo,
vielen Dank für die Anleitung. Vorweg ich kenn mich überhaupt nicht mit programmieren aus. Bin froh das das hier eine schönen Schritt für Schritt Anleitung ist. Ich nutzt den RPi zum ein- und ausschalten von Funksteckdosen (auch mit deiner Anleitung zum laufen gebracht). Auch die Siristeuerung funktioniert eine Zeit lang aber irgendwann findet EVE (iPhone App) das RPi nicht mehr. Ich kann die Steckdosen aber noch mit dem Webinterface (Standart von raspberry-remote) und dem Webinterface vom Razberry ansteuern. Hab für das Projekt einmal Whezzy ohne alles verwendet und einmal Whezzy mit einem Plex Server drauf und bei beiden kommt es zu dem Problem, also scheint Plex nicht das Prob zu sein. Ich hab mal den Log gestartet nach dem EVE das RPIi nicht mehr findet:
[email protected] ~ $ tail -f /var/log/z-way-server.log
[2015-12-02 20:42:33.460] [C] [zway] Get Serial API Capabilities returned zero.
[2015-12-02 20:42:33.460] [I] [zway] Removing job: Get controller info and supported function classes
[2015-12-02 20:42:33.470] [D] [zway] Worker thread exit point
[2015-12-02 20:42:33.470] [D] [zway] Worker thread successfully finished
[2015-12-02 20:42:33.472] [E] [zway] SaveData will not save data since it wasn’t loaded. This is to prevent data loss.
[2015-12-02 20:42:33.486] [I] [core] Notification: critical (z-wave): Cannot start Z-Wave binding: Error: Bad data – communication failed
[2015-12-02 20:45:11.226] [I] [core] — HTTP_Device_switchBinary_11 performCommand processing: {„0″:“on“,“1″:{}}
[2015-12-02 20:45:13.284] [I] [core] — HTTP_Device_switchBinary_11 performCommand processing: {„0″:“off“,“1″:{}}
[2015-12-02 20:45:14.747] [I] [core] — HTTP_Device_switchBinary_10 performCommand processing: {„0″:“on“,“1″:{}}
[2015-12-02 20:45:15.756] [I] [core] — HTTP_Device_switchBinary_10 performCommand processing: {„0″:“off“,“1″:{}}
Kann mir da jemand weiterhelfen, ich verstehe davon leider nicht so viel.
Oder kann es sein, dass ich bei der Installation einen Fehler gemacht habe?
Grüße
Michael
Entschuldigung,
das ist nicht das komplette Log. Leider kann ich nicht alles hier posten.
Alexander, welche Whezzy Version nutzt du?
Danke und Grüße
Michael
Hallo Michael,
da kannst du nichts dafür – da hat vermutlich der Spam-Filter hier zugeschlagen ;) Habe deine Mail erhalten, werde mir den Log mal ansehen, wenn ich die Zeit dazu finde.
Lt. „cat /etc/debian_version“ Version 7.8
Hallo Alexander,
mhm das ist komisch, ich hab auch die Version 7.8.
Das mit dem Durchschauen wäre wirklich cool. Ich denke damit wäre einigen geholfen. Vielleicht liegt das auch an einer abweichenden Version der anderen Programme.
Danke und Grüße
Michael
Könntest du ein Backup von deinem Rasberry veröffentlichen
Hi Steffen,
leider befinden sich auf meinem Pi mit HomeKit-Setup noch diverse andere Sachen, sodass ich nicht auf die Schnelle ein Backup veröffentlichen kann :(
Hallo, hab es gerade installiert und es funktioniert sehr gut bist auf die Tatsache das wenn man ne zeitlang im standby (sperrbildschirm) befindet der server die Verbindung verliert, wie oben schon jemand angesprochen hat. Hat jemand dafür schon ne Lösung gefunden? Danke
Er findet bei mir das Dictionary das ich umlegen muss nicht.
Könntest du nicht deine sd Backup machen ich suche mir dann die wichtigen Ordner/Dateien
Hallo Steffen,
solltest du nur eine einzelne Datei brauchen, kannst du mir natürlich schreiben welche und ich stelle sie dir zur Verfügung (auch wenn ich aus dem Kommentar nicht wirklich verstehe, was du brauchst bzw. was nicht geht ;))
Hi,
Soweit alles gemacht, nur die HomeKit Bridge taucht nicht mehr unter den Apps auf!
Auch das Suchfeld hilft mir nicht weiter…
Mache ich irgendwas falsch?