Du hast deinen Raspberry Pi im ersten Schritt entsprechend vorbereitet, im zweiten Schritt Homebridge installiert und kannst nun endlich die ersten Plugins installieren. Sollte Homebridge bei dir noch nicht laufen, starte am besten bei dem ersten Schritt. Solltest du an einer Stelle mal nicht weiterkommen, kannst du jederzeit in unserer Community dein Problem schildern.
Das Plugin homebridge-config-ui-x installieren und konfigurieren
So. Jetzt wird es ernst. Mit dem nächsten Schritt kannst du deine laufende Homebridge zum Absturz bringen, und das mit den üblichen Folgen: langes Gesicht, Ärger, Frust, Zerstörung des Raspberry Pi an der nächsten Wand. Also aufpassen. Aber keine Angst: alles, was man kaputt macht, kann man auch reparieren.
Zunächst installierst du das Plugin. Dabei kann erstmal nichts passieren.
1 |
sudo npm install -g --unsafe-perm homebridge-config-ui-x |
Der Befehl erzeugt einige Ausgaben auf dem Bildschirm. Ignoriere sie, wichtig sind die letzten zwei Zeilen, die dir den Erfolg deiner Bemühungen anzeigen:
Danach musst du Homebridge so konfigurieren, dass das Plugin geladen wird. Öffne mit dem Editor nano deine Homebridge-Konfiguration:
1 |
sudo nano /var/homebridge/config.json |
Der Editor zeigt dir die Basis-Konfiguration an. Hier wird nun die Konfiguration von homebridge-config-ui-x eingefügt. Suche dazu die Zeile
1 |
"platforms": [], |
und füge zwischen die eckigen Klammern die folgenden Zeilen ein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "platform": "config", "name": "Config", "port": 8080, "auth": "form", "theme": "red", "restart": "sudo -n systemctl restart homebridge", "temp": "/sys/class/thermal/thermal_zone0/temp", "sudo": true, "log": { "method": "custom", "command": "journalctl -o cat -n 500 -f -u homebridge" } } |
Das Ergebnis sieht dann so aus:
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 |
{ "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:31", "port": 51826, "pin": "031-45-154" }, "description": "Home Smart Home", "platforms": [ { "platform": "config", "name": "Config", "port": 8080, "auth": "form", "theme": "red", "restart": "sudo -n systemctl restart homebridge", "temp": "/sys/class/thermal/thermal_zone0/temp", "sudo": true, "log": { "method": "custom", "command": "journalctl -o cat -n 500 -f -u homebridge" } } ], "accessories": [] } |
Du speicherst config.json ab, in dem du ctrl-x drückst, und danach y und dann die Entertaste.
So. Frust oder Freude erfährst du, wenn du die Homebridge neu startest und einen Blick ins Log wirfst. So soll es aussehen:
Aber es kann halt auch so aussehen:
Traurig, aber das ewige Schicksal des Homebridgers: irgendwas in config.json ist nicht richtig formuliert. Anscheinend ging das Gefecht zwischen dir und den eckigen und geschweiften Klammern sowie mit den Kommas verloren. Der Systemdienst systemd versucht die Homebridge alle 10 Sekunden neu zu starten, aber dabei wird er solange scheitern, bis der Fehler behoben ist.
Du kannst deine config.json checken, indem du den Inhalt hier überprüfst. Füge deine Konfiguration in das Textfeld ein und klicke auf Validate JSON.
Oops! Hier fehlt wohl ein Komma zwischen 8080 und „auth“.
Wenn das Log gut aussieht, dann gib in der Adresszeile deines Webbrowsers http://192.168.1.21:8080 ein, wobei du statt 192.168.1.21 die IP-Adresse deines Raspberry Pi verwendest. Und voilà:
Logge dich ein mit dem Benutzernamen admin und dem Passwort admin.
Homebridge zu HomeKit hinzufügen
Nachdem du dich eingeloggt hast, siehst du diesen Bildschirm:
Nimm nun dein iPhone oder iPad und rufe die Home-App auf. Tippe oben rechts auf das Pluszeichen und danach auf Gerät hinzufügen.
Scanne danach den QR-Code auf dem Bildschirm und folge den Anweisungen deines iPhones. Danach kennt HomeKit deine Homebridge und zeigt sie an. Aber noch gibt es keine Schalter, die man antippen könnte oder Auslöser, die irgendwas Bestimmtes tun. Dazu braucht man weitere Homebridge-Plugins.
Ein Homebridge-Plugin mit homebridge-config-ui-x installieren und konfigurieren
Um ein Homebridge-Plugin zu installieren, klickst du in der Menüzeile von homebridge-config-ui-x auf den Menüpunkt Plugins. Die Plugin-Liste erscheint mit genau einem installierten Homebridge-Plugin, nämlich homebridge-config-ui-x selbst.
Tippe oben in der Suchzeile den Namen des Plugins, das du installieren willst. In dieser Anleitung ist das homebridge-fakebulb als Beispiel.
Nachdem dir homebridge-fakebulb angezeigt wird, klickst du auf INSTALL:
Warte ab, bis die Installation beendet ist. Die Pluginliste wird erneut aufgerufen und zeigt nun zwei Plugins.
Um das Plugin homebridge-fakebulb einzubinden, muss config.json bearbeitet werden. Zunächst wirfst einen Blick auf die Anleitung zum Plugin, indem du auf NPM klickst. Die Seite zum Plugin öffnet sich in einem neuen Tab.
Die Installationsanleitung weist dich an, die Homebridge zu installieren (hast du schon), dann das Plugin homebridge-fakebulb (hast du auch schon) und schließlich config.json zu updaten. Das machst du, indem du im Browser den folgenden Teil der Konfiguration kopierst:
1 2 3 4 5 |
{ "accessory": "FakeBulb", "name": "Test lamp", "bulb_name": "Lamp1" } |
Dann wechselst im Browser du zurück zum Tab von homebridge-config-ui-x und klickst oben in der Menüleiste auf Config, um den Config-Editor aufzurufen.
Suche folgende Zeile:
1 |
"accessories": [] |
und platziere den Cursor zwischen die beiden eckigen Klammern. Dort fügst du jetzt die Konfiguration von homebridge-fakebulb ein.
Dann klickst du oben auf SAVE. Deine Konfiguration wird erst abgespeichert, wenn alles korrekt ist. Befindet sich ein Fehler in config.json, kannst du deine Konfiguration nicht sichern.
Hat alles geklappt, dann starte die Homebridge neu, indem du rechts oben in der Menüleiste auf das kreisförmige Symbol klickst. Nachdem der Neustart beendet ist, taucht die Lamp1 in der Home-App auf deinem iPhone auf.
Eine zweite Fakebulb konfigurieren
Öffne den Config-Editor: Markiere die Konfiguration der vorhandenen Fakebulb kopiere sie und füge sie darunter ein.
Achte auf das Komma zwischen der ersten und zweiten Fakebulb! Accessory-Definitionen werden immer durch ein Komma getrennt. Bitte beachte auch, dass die letzte Definition kein abschließendes Komma hat (hinter „Lamp2“ }). Das gilt genauso für Platform-Definitionen. Meist scheitert ein Speichern der Konfiguration genau daran.
Restarte die Homebridge, um die Änderung wirksam zu machen.
Plugins: Accessories und Plattforms
Ein Plugin kann entweder ein accessory sein oder eine platform. Je nachdem, was es ist, muss es in config.json an der richtigen Stelle eingerichtet werden.
Ein accessory ist ein Plugin, das genau eine eine Aktion eines Gerätes steuern kann. Die Fakebulb ist dafür ein gutes Beispiel. Man kann sie nur schalten. Sonst kann sie nichts. Wie ein normaler, nicht-smarter Lichtschalter an der Wand.
Es gibt aber auch Geräte, die mehr können als nur eine Schaltung. Beispielsweise kann ein Ventilator ein- und ausgeschaltet werden und zusätzlich kann man auch verschiedene Umdrehungsgeschwindigkeiten des Propellers einstellen. Oft kann sich der Ventilator auch noch um seine eigene Achse drehen. Für solche Geräte braucht man mehr als einen Schalter, und solche Steuerungen werden dann als platform programmiert.
Es kann dir aber letztendlich egal sein. Wichtig ist nur, dass du weißt, ob es sich um ein accessory oder eine platform handelt, denn davon hängt ab, wie du deine config.json bearbeitest.
Ob ein Plugin ein accessory ist oder eine platform, entnimmst du der Installationsanleitung des Plugins und dem JSON-Code, den du in config.json einsetzt. Bei der Fakebulb kann man deutlich sehen, dass das ein accessory ist. Es steht da nämlich gleich in der ersten Zeile:
1 2 3 4 5 |
{ "accessory": "FakeBulb", "name": "Test lamp", "bulb_name": "Lamp1" } |
Eine platform sieht nahezu genauso aus, aber diesmal findet sich der Begriff platform in der Konfiguration:
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "platform": "WeatherPlus", "name": "WeatherPlus", "service": "darksky", "key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "displayName": "Wetterdaten", "location": [ 50.101384, 8.650123 ], "language": "de" } |
So, nachdem du jetzt weißt, welche Art von Plugin du da vor dir hast, musst du jetzt die Konfiguration an die richtige Stelle setzen. Ein accessory wird immer innerhalb der eckigen Klammern der “accessories”: [ ] in json.config eingesetzt. Eine platform wird immer innerhalb der eckigen Klammern der “platforms”: [ ] eingesetzt. Wenn du das mixt, wird deine Homebridge nicht funktionieren.
Um es mal ganz flach darzustellen: deine config.json besteht aus den Abschnitten “bridge”:{ }, “accessories”: [ ] und “platforms”:[ ]. Etwa so:
1 2 3 |
"bridge":{"name": "Homebridge", "username": "CC:22:3D:E3:CE:30", .... }, "platforms": [{"platform": "Alexa"}, {"platform": "ZP"}, .... ], "accessories": [{"accessory": "FakeBulb"}, {"accessory": "CMD"}, .... ] |
Ich habe jetzt vieles weggelassen, aber es soll dir diese Abschnitte verdeutlichen. An der “bridge”:{ }-Definition wirst du wahrscheinlich nie etwas ändern müssen. Aber aufgepasst mit den anderen beiden. Die Begriffe “platforms”: und “accessories”: tauchen nur je ein einziges in deiner config.json auf!
Klammern und Kommas
Meine config.json ist schon ziemlich lang und ich füge mal Teile davon in diese Anleitung ein. Da kann man ganz gut sehen, wie die Sache aufgebaut ist. Ich habe das Ganze farbig hinterlegt, um die Struktur deutlicher zu machen.
Sieh dir das genau an. Die Begriffe “platforms”: und “accessories”: tauchen nur je ein einziges Mal in der Konfiguration auf. Jeweils dahinter kommen dann die einzelnen Definitionen. Diese Definitionen werden mit einer geschweiften Klammer eröffnet und am Ende mit einer weiteren geschweiften Klammer geschlossen.
Jede dieser Definitionen wird mit einem Komma von der vorhergehenden getrennt.
Nur die allerletzte Definition hat kein Komma. Wenn du dort doch eins setzt, wird deine Homebridge nicht funktionieren.
Exakt genauso wird das mit den accessory-Definitionen gemacht.
Achtung: Die Plugin-Installationsanleitungen geben die Abschnittsbezeichner “accessories”: oder “platforms”: immer mit an. Die kopierst du dann nicht mit! Nochmal: die Begriffe “accessories”: und “platforms”: kommen nur jeweils einmal in der config.json vor, die Begriffe “accessory”: und “platform”: dagegen beliebig oft.
Ich weiß jetzt schon, dass du an den eckigen und geschweiften Klammern und den Kommas noch verzweifeln wirst. Das bleibt nicht aus, und jeder hat damit zu kämpfen. Wenn du strukturiert arbeitest, wird der Frust geringer sein, und wenn es gar nicht gehen will, hilft man dir im Forum. Nach einer Weile wirst du auf den ersten Blick erkennen, wo es klemmt.
Jetzt ist es an dir, deine Homebridge mit dem zu füllen, was du benötigst. Viel Spaß!