Homebridge und Plugins auf dem Raspberry Pi 3 installieren

Mittels Homebridge kann man nicht HomeKit fähige Geräte in HomeKit einbinden. Beispiele dafür sind eine Synology Diskstation, IFTTT, ein Logitech Harmony Hub, Netatmo Wetterstation und Amazon Dash Button.

Installation von Homebridge

Ich installieren Homebridge auf einem Raspberry Pi 3 mit Jessie. Da ich meine Amazon Dash Buttons mit einbinden will werde ich hier die Installation als root durchführen, bzw. Homebridge mit root laufen lassen.

 curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -  
 apt-get install -y nodejs  
 apt-get install libavahi-compat-libdnssd-dev  
 npm install -g --unsafe-perm homebridge  

Damit habt Node.js, Avahi und Homebridge installiert. Das Konfigurationsfile liegt nun unter /root/.homebridge/config.json bzw. muss dort angepasst werden.

Nun kümmern wir uns um den Autostart.

 vi /etc/default/homebridge  
 # Defaults / Configuration options for homebridge  
 # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)  
 HOMEBRIDGE_OPTS=-U /root/.homebridge  
 # If you uncomment the following line, homebridge will log more  
 # You can display this via systemd's journalctl: journalctl -f -u homebridge  
 # DEBUG=*  

 

 vi /etc/systemd/system/homebridge.service  
 [Unit]  
 Description=Node.js HomeKit Server  
 After=syslog.target network-online.target  
 [Service]  
 Type=simple  
 User=root  
 EnvironmentFile=/etc/default/homebridge  
 # Adapt this to your specific setup (could be /usr/bin/homebridge)  
 # See comments below for more information  
 ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS  
 Restart=on-failure  
 RestartSec=10  
 KillMode=process  
 [Install]  
 WantedBy=multi-user.target  

Damit konfiguriert ihr den Systemd Service für Homebridge
Homebridge läuft danach mit Root Rechten und die Konfiguration wird unter /root/.homebridge/ abgelegt. Den Eintrage EnvironmentFile sollte ihr gleich der Ausgabe folgendes Befehles anpassen:

 which homebridge  

Damit wird der Autostart gesetzt:

 systemctl daemon-reload  
 systemctl enable homebridge  

Nun können wir Plugins installieren. Ich werde auf die von mir installierten kurz eingehen und meine Konfig hier einstellen. Man muss sich penibelst an die Syntax des Json Files halten, ansonsten wird Homebridge nicht laufen. Sehr hilfreich ist dabei der JSON Validator.

Harmony Hub

Ihr sollten nicht die neueste Version des Plugins verwendet, denn dort kommt es regelmäßig zu abstürzen.

 npm install -g homebridge-harmonyhub@0.1.1  

Damit wird die stabilsten Version installiert, die bei mir auch nach Tagen nicht abstürzt.

Solltet ihr bereits die aktuellste Version 0.2.0 installiert haben dann könnte ihr dieses natürlich wieder rückgängig machen:

 npm uninstall -g homebridge-harmonyhub  
 npm install -g homebridge-harmonyhub@0.1.1  

Der Harmony Hub wird unter platforms eingetragen:

 {  
         "platform": "HarmonyHub",  
         "name": "Harmony Hub"  
 }  

Mehr muss nicht gemacht werden.

Netatmo Wetterstation

 npm install -g homebridge-netatmo  

Damit habt ihr dann auch schon das Plugin installiert.

 {  
         "platform": "netatmo",  
         "name": "netatmo platform",  
         "ttl": 5,  
         "auth": {  
             "client_id": "eureid",  
             "client_secret": "euersecret",  
             "username": "username",  
             "password": "password"  
 }  

Die Client ID und das Client Secret erhaltet ihr bei Netatmo. Dort müsst ihr euch mit euren Daten einloggen und eine neue App anlegen. Username und Password sind eure normalen Zugangsdaten.

IFTTT

 npm install -g homebridge-ifttt  

 

 {  
             "platform": "IFTTT",  
             "name": "IFTTT",  
             "makerkey": "euermakerkey",  
             "accessories": [{  
                 "name": "Name",  
                 "buttons": [{  
                     "caption": "Name des Buttons",  
                     "triggerOn": "triggername",  
                     "triggerOff": "triggername2"  
                 }]  
             }]  
         }  

Euren Makerkey erhaltet ihr wenn ihr euch bei den IFTTT Maker Webhooks anmeldet. Caption bezeichnet den Schalternamen, wie er in Homemkit angezeigt wird. Wenn ihr nur einen trigger verwendet, habt ihr einen Schalter der kurz an geht und wieder auf aus springt.
Ihr erzeugt ein neues Applet mit dem If Maker Webhook und euerem Trigger-Name. Damit steuert ihr dann das Applet an.

FRITZ!Box

 npm install -g homebridge-fritz  

Das sollte bereits bekannt sein

 {  
         "platform": "Fritz!Box",  
         "name": "My FritzBox",  
         "username": "euerusername",  
         "password": "euerpasswort",  
         "url": "http://fritz.box",  
         "interval": 60,  
         "options": {  
             "strictSSL": false  
         }  
     }  

Hier muss nur noch der Username und das Passwort angepasst werden. Danach habt ihr Zugriff auf eure Dect 200 Steckdosen.

Synology Diskstation

 npm install -g homebridge-synology  

 

 {  
         "accessory": "Synology",  
         "name": "Diskstation",  
         "ip": "eureipderdiskstation",  
         "mac": "euremac",  
         "port": "5000",  
         "secure": false,  
         "account": "username",  
         "password": "password",  
         "version": 6,  
         "timeout": 5000,  
         "disabled": []  
     }  

Dieses Plugin wird als Accessorie eingebunden und ermöglich es die Diskstastion per Wake On Lan zu starten, die Temperatur auszulesen und den aktuellen Status zu sehen,

Amazon Dash Button

Es gibt zwei Varianten um die Dash Buttons in Homebridge einzubeinden. Mit homebridge-amazondash hatte ich weniger Erfolg, da jedes Mal zwei Tastendrucke erkannt wurden. Daher verwende ich homebridge-dash. Ein weiterer Vorteil ist das hier die Buttons als Schalter eingebunden werden.

Die Button richtet ihr erst mal so ein, wie in der Anleitung beschrieben. Ihr fügt jedoch kein Produkt hinzu, sondern schließt die App, bzw. ich habe sie gekilled.

Damit wir den Button danach erst mal finden, müssen wir node-dash-button installieren:

 apt-get install libpcap-dev  
 npm install node-dash-button  

Libcap muss als Root laufen, daher läuft auch mein Homebridge als Root.
Nun können wir uns auf der Suche nach der MAC begeben:

 node node_modules/node-dash-button/bin/findbutton  

Drückt nun euren Dash button und ihr sollten die MAC des Buttons finden. Diese tragt ihr in die config ein

 {  
           "accessory": "Dash",  
           "name": "Dash 1",  
           "protocol": "udp",  
               "mac": "11:22:33:44:55:66"  
         },  
           {  
           "accessory": "Dash",  
           "name": "Dash 2",  
           "protocol": "udp",  
               "mac": "11:22:33:44:55:88"  
         },  
           {  
           "accessory": "Dash",  
           "name": "Dash 3",  
           "protocol": "udp",  
               "mac": "11:22:33:44:55:77"  
         }  

 

Meine Konfiguration

 {  
      "bridge": {  
           "name": "Homebridge",  
           "username": "CC:22:3D:E3:CE:31",  
           "port": 51826,  
           "pin": "031-45-154"  
      },  
      "accessories": [{  
                "accessory": "Synology",  
                "name": "Diskstation",  
                "ip": "x.x.x.x",  
                "mac": "11:22:33:44:55:66",  
                "port": "5000",  
                "secure": false,  
                "account": "user",  
                "password": "password",  
                "version": 6,  
                "timeout": 5000,  
                "disabled": []  
           },  
           {  
                "accessory": "Dash",  
                "name": "Dash 1",  
                "protocol": "udp",  
                "mac": "11:22:33:44:55:66"  
           },  
           {  
                "accessory": "Dash",  
                "name": "Dash 2",  
                "protocol": "udp",  
                "mac": "11:22:33:44:55:66"  
           },  
           {  
                "accessory": "Dash",  
                "name": "Dash 3",  
                "protocol": "udp",  
                "mac": "11:22:33:44:55:66"  
           }  
      ],  
      "platforms": [{  
                "platform": "HarmonyHub",  
                "name": "Harmony Hub"  
           }, {  
                "platform": "netatmo",  
                "name": "netatmo platform",  
                "ttl": 5,  
                "auth": {  
                     "client_id": "clientid",  
                     "client_secret": "clientsecret",  
                     "username": "username",  
                     "password": "password"  
                }  
           }, {  
                "platform": "Fritz!Box",  
                "name": "My FritzBox",  
                "username": "username",  
                "password": "password",  
                "url": "http://fritz.box",  
                "interval": 60,  
                "options": {  
                     "strictSSL": false  
                }  
           },  
           {  
                "platform": "IFTTT",  
                "name": "IFTTT",  
                "makerkey": "makerkey",  
                "accessories": [{  
                     "name": "Name",  
                     "buttons": [{  
                          "caption": "Button Name",  
                          "triggerOn": "trigger on",  
                          "triggerOff": "trigger off"  
                     }]  
                }]  
           }  
      ]  
 }  

 

Einbinden in iOS

Ihr startet die iOS Home App und fügt über + ein Gerät hinzu. Homebridge wird in eurem Netzwerk automatisch erkannt und die darüber angebundene Hardware. Den Code den ihr eingeben müsst, findet ihr in der config.json. Vergesst aber nicht den Dienst zu starten.

 systemctl start homebridge  

 

Tips und Tricks

  1. Erstellt euch immer eine Kopie eurer config.json bevor ihr etwas ändert
  2. Installiert möglichst immer nur ein Plugin gleichzeitig und testet es dann. Das erleichtert die Fehlersuche ungemein.
  3. Mittels homebridge -D lasst ihr Homebridge im Debugmodus laufen und seht alle Meldungen.
  4. Ein Logfile direkt wird nicht geschrieben. Ihr könnt mittels systemctl status homebridge -l euch die letzten Ereignisse des Dienstes anzeigen lassen oder das Journal mit journalctl -u homebridge öffnen. Ebenfalls möglich ist es mit sudo tail -f /var/log/syslog | grep homebridge euch das laufende Log in der Konsole ausgeben zu lassen.
  5. Es kann auch helfen die Daten von Homebridge zurückzusetzen. Dazu entkoppelt ihr Homebridge aus iOS, stopt den Dienst und löscht folgende Verzeichnisse. Anschließend könnt ihr die Homebridge wieder neu koppeln. Ihr müsst zwar die Geräte neu verteilen, aber das geht relativ fix.
 rm -rf /root/.homebridge/accessories/  
 rm -rf /root/.homebridge/persist/  

 

12 Gedanken zu „Homebridge und Plugins auf dem Raspberry Pi 3 installieren“

    • Du machst nichts verkehrt, es wird kein direktes log erzeugt. Du kannst mittels systemctl status homebridge -l dir die letzten Ereignisse des Dienstes anzeigen lassen oder das Journal mit journalctl -u homebridge öffnen.

      Antworten
  1. Hab leider noch eine kleines Problem, wenn ich den Amazon Dash Button über „Amazon Dash Button“ installieren möchte, kommt die Meldung: Hast jemand noch einen Tip?

    npm ERR! code 128
    npm ERR! Command failed: /usr/bin/git clone –depth=1 -q -b master https://github.com/mranney/node_pcap.git /root/.npm/_cacache/tmp/git-clone-83113
    npm ERR! fatal: Konnte führende Verzeichnisse von ‚/root/.npm/_cacache/tmp/git-clone-83113‘ nicht erstellen.: Keine Berechtigung
    npm ERR!
    npm ERR! A complete log of this run can be found in:
    npm ERR! /root/.npm/_logs/xxx_892Z-debug.log

    Antworten
  2. Hi,

    meine Homebridge bricht immer ab nach dem sie startet. Ich habe das config.json file händisch anlegen müssen. Dies kann Aber nicht der Fehler sein.

    root@homebridge:~# homebridge -D
    *** WARNING *** The program ’nodejs‘ uses the Apple Bonjour compatibility layer of Avahi.
    *** WARNING *** Please fix your application to use the native API of Avahi!
    *** WARNING *** For more information see
    *** WARNING *** The program ’nodejs‘ called ‚DNSServiceRegister()‘ which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
    *** WARNING *** Please fix your application to use the native API of Avahi!
    *** WARNING *** For more information see

    [2017-11-18 09:46:29] No plugins found. See the README for information on installing plugins.
    [2017-11-18 09:46:29] Loaded config.json with 1 accessories and 0 platforms.
    [2017-11-18 09:46:29] —
    [2017-11-18 09:46:29] Loading 0 platforms…
    [2017-11-18 09:46:29] Loading 1 accessories…
    /usr/lib/node_modules/homebridge/lib/api.js:50
    if (name.indexOf(‚.‘) == -1) {
    ^

    TypeError: Cannot read property ‚indexOf‘ of undefined
    at API.accessory (/usr/lib/node_modules/homebridge/lib/api.js:50:11)
    at Server._loadAccessories (/usr/lib/node_modules/homebridge/lib/server.js:264:42)
    at Server.run (/usr/lib/node_modules/homebridge/lib/server.js:86:38)
    at module.exports (/usr/lib/node_modules/homebridge/lib/cli.js:40:10)
    at Object. (/usr/lib/node_modules/homebridge/bin/homebridge:17:22)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    root@homebridge:~#

    das der Auszug.

    Antworten

Schreibe einen Kommentar