apple home homekit iphone7 plus gold 825x510 - Apple Home (HomeKit) - Devolo Geräte mit der Apple App steuern - Homebridge

Apple Home (HomeKit) – Devolo Geräte mit der Apple App steuern – Homebridge

Kennt ihr das? Aus der Not heraus, weil ein Dritter irgendwelchen Mist verzapft, entsteht eine großartige Idee, die dann auch noch gut umgesetzt wird?

In meinen Fall war der Dritte Devolo, Devolo hat vor ein paar Wochen ihre Home Control iOS-App auf 1.1 geupdatet. Diese hatte ein tolles neues Feature: „iPad-Ansicht: optimierte Darstellung für iPads (Querformat)

Geil Freunde, nur leider wird dieses Querformat erzwungen, eine Nutzung am iPad im Hochformat ist nicht mehr möglich. Prima, wenn das iPad mini zur Haussteuerung im Hochformat an der Wand hängt. (Sarkasmus-Schild)

➡ Auch die Version 1.2 die vor ein paar Tagen erschienen ist, hat das „Problem“ nicht behoben – obwohl ich mich mehrfach beschwert habe. UPDATE_20170407: Das ersehnte Update soll voraussichtlich Ende April / Anfang Mai kommen.

devolo homecontrol app ipad querformat 800x510 - Apple Home (HomeKit) - Devolo Geräte mit der Apple App steuern - Homebridge

Naja, jedenfalls war ich ziemlich sauer, bin oft im Kopf durchgegangen:

  • wieder zurück zu Homee?
  • andere Alternativen?
  • gedulden bis das Problem behoben ist?

Zwische durch hat Amazon Echo mit Alexa die Blogs bestimmt – Skills, Devolo Skill, IFTTT, HA Bridge, Homebridge. Und irgendwie im Gespräch mit meinem Arbeitskollegen Kevin, den einige von euch bereits von unserem Projekt bidvoy kennen, kam die Idee, da er auch gerade auf das Devolo HomeControl umgestiegen ist, dass eine Steuerung in Apples Home App (HomeKit) eine wirklich feine Sache wäre.

Stichwort Homebridge: Homebridge ist eine Schnittstelle, die offiziell nicht HomeKit kompatible Geräte, teilweise HomeKit kompatibel werden lässt. Dazu benötigt man, wie sollte es anders sein, im besten Fall einen Linux-Server oder Raspberry Pi.

homebridge 566 packages 800x487 - Apple Home (HomeKit) - Devolo Geräte mit der Apple App steuern - Homebridge

Nun ja, für Homebridge gibt es dann jede Menge Plugins, die oftmals nicht vom Homebridge-Entwickler selber stammen, sondern von der Community rundherum.

Ich persönlich nutze aktuell homebridge-cmdswitch2homebridge-dashhomebridge-devolohomebridge-fritzhomebridge-harmonyhubhomebridge-httphomebridge-huehomebridge-netatmohomebridge-samsungtv-controlhomebridge-serverhomebridge-sonos und homebridge-wunderground.

Nur leider gab es zu diesem Zeitpunkt noch kein Homebridge-Plugin für Devolo Geräte die mit dem Devolo HomeControl verbunden sind – aufgrund der fehlenden offiziellen API auch so gut wie nicht machbar.

Aber nach etlichen Stunden Reverse Engineering der iOS- & Android-Apps hatten wir alles zusammen, was man für ein funktionierendes Plugin benötigt. (… wir kleinen Blackhats!)
Kevin machte sich an die Arbeit und ein paar Tage später, nachdem wir mit Devolo die rechtliche Seite geklärt hatten, haben wir alles auf GitHub hochgeladen, wo es nun jeder SmartHome-Liebhaber mit Homebridge benutzen kann. Nach und nach werden sicher noch ein paar Features dazukommen. mrgreen - Apple Home (HomeKit) - Devolo Geräte mit der Apple App steuern - Homebridge

Homebridge

Vorbereitung

Um Homebridge installieren zu können, benötigt man noch ein paar weitere Debian Pakete, welche wir mit apt-get nachinstallieren.

apt-get install curl git build-essential libssl-dev libavahi-compat-libdnssd-dev

Da Homebridge für Node.js geschrieben ist, müssen wir natürlich auch Node installieren.

#curl -sL https://deb.nodesource.com/setup_8.x | bash -
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install nodejs

Installation

Homebridge installieren

Jetzt sind alle Vorbereitungen abgeschlossen und Homebridge kann installiert werden.

npm install -g --unsafe-perm homebridge

Sollte die Installation von Homebridge mit der Fehlermeldung …

ImportError: No module named compiler.ast

… abbrechen, sollte folgende Befehl helfen – natürlich muss danach Homebridge noch erfolgreich installiert werden.

apt install python-dev
npm install -g --unsafe-perm homebridge

Homebridge Dienste erstellen

Damit Homebridge ordentlich, wie es auf Linux-Systemen üblich ist, als Dienst (systemd) laufen kann, werden zwei Dateien benötigt. Eine zur Konfiguration …

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 /var/lib/homebridge

# If you uncomment the following line, homebridge will log more
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*

… und eine für den Dienst selber.

vi /etc/systemd/system/homebridge.service
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
#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/sudo /usr/local/bin/homebridge $HOMEBRIDGE_OPTS
ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Im Verzeichnis /var/lib/homebridge wird die config.json angelegt, die für die gesamte Konfiguration für Homebridge zuständig ist – diese Datei ist für Homebridge das Herzstück! Erstmal muss allerdings das Verzeichnis angelegt werden.

mkdir /var/lib/homebridge

Des Weiteren soll der Dienst nicht unter „root“ laufen, sondern unter dem neuen, unprivilegierten User „homebridge“ – daher muss dieser angelegt werden.

useradd --system homebridge -m -s /bin/bash
mkdir /home/homebridge/.homebridge/
chown -R homebridge:homebridge /home/homebridge
chown -R homebridge:homebridge /var/lib/homebridge

Um Die Installation abzuschließen, sollten noch die Dienste neugeladen werden und der Homebridge-Dienst aktiviert werden, damit dieser beim (Neu)Start des Betriebsystems automatisch gestartet wird.

systemctl daemon-reload
systemctl enable homebridge

Konfiguration

Kommen wir nun zur Konfiguration des, vor ein paar Zeilen erwähnten, Herzstückes von Homebridge. In der nachfolgenden Standardkonfiguration des „nackten“ Homebridges könnt ihr ggf. den Pin anpassen, welchen ihr erst am Ende des Artikels benötigt.

vi /var/lib/homebridge/config.json
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "133-77-331"
    },

    "platforms": [
     ],

    "accessories": [
     ]
}

Jetzt starten wir den Dienst „Homebridge“ und prüfen ob dieser erfolgreich war.

service homebridge start
# ein paar Sekunden warten
journalctl -u homebridge --no-pager

Wichtig wäre, dass am Ende der Logdatei „Homebridge is running on port 51826“ erscheint.

systemd[1]: Starting Node.js HomeKit Server...
systemd[1]: Started Node.js HomeKit Server.
homebridge[]: No plugins found. See the README for information on installing plugins.
homebridge[]: Loaded config.json with 0 accessories and 0 platforms.
homebridge[]: ---
homebridge[]: Loading 0 platforms...
homebridge[]: Loading 0 accessories...
homebridge[]: Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
homebridge[]: ┌────────────┐
homebridge[]: │ 133-77-331 │
homebridge[]: └────────────┘
homebridge[]: Homebridge is running on port 51826.

Die Warnmeldungen von „Apple Bonjour“ und „Avahi“ können ignoriert werden – laut Homebridge Entwickler wäre es ein großer Aufwand diese zu unterdrücken, dieser steht aber in keiner Relation zum Nutzen.

homebridge apple bonjour avahi 800x353 - Apple Home (HomeKit) - Devolo Geräte mit der Apple App steuern - Homebridge

Homebridge-Devolo

Nachdem wir die Basis für das Devolo Plugin geschaffen haben, kommen wir nun zum Eingemachten.

Installation

Mit der Paketverwaltung für Node.js (npm) installieren wir nun das Devolo Plugin.

npm install -g homebridge-devolo

Konfiguration

In unserem „Herzstück“ müssen nun im Bereich „platforms“ Anpassungen vorgenommen werden – siehe unten. Achtet hierbei ganz besonders auf die richtige Kommasetzung und die geschweiften Klammern {}, um die Fehlermeldung „There was a problem reading your config.json file“ zu vermeiden.

vi /var/lib/homebridge/config.json
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "133-77-331"
    },

    "platforms": [
      {
        "platform" : "Devolo",
        "name" : "Devolo",
        "host" : "192.168.XXX.XXX",
        "email" : "mail@domain.com",
        "password" : "password"
      }
     ],

    "accessories": [
     ]
}
  • host = lokale IP von eurer Devolo Zentrale (HomeControl)
    • die Kommunikation zwischen Homebridge und der Zentrale findet im lokalen Netzwerk statt, es wird keine aktive Internetverbindung zur Steuerung der Geräte benötigt
  • email = Benutzername mit dem ihr euch bei mydevolo.de anmelden könnt
  • password = das dazugehörige Passwort

Um zu prüfen, ob alles funktioniert hat, muss Homebridge neugestartet werden. Sollte die Fehlermeldung „There was a problem reading your config.json file“ erscheinen, ist mit großer Wahrscheinlichkeit ein Komma zu viel oder eine Klammer zu wenig – da kann ich euch JSONLint empfehlen, hier könnt ihr den Inhalt eurer config.json rein kopieren und prüfen lassen.

Nunja, der nachfolgende Neustart von Homebridge ist für die abschließende Konfiguration sehr wichtig, da wir dann in der Logdatei 3 noch benötigte Zeilen finden werden – UUID, GATEWAY und PASSKEY.

service homebridge restart
sleep 5
journalctl -n 50 -u homebridge --no-pager
homebridge[]: Loading 1 platforms...
homebridge[]: [Devolo] Initializing Devolo platform...
homebridge[]: [Devolo] HBDevoloPlatform > Searching for Devolo Central Unit.
homebridge[]: Loading 0 accessories...
homebridge[]: [Devolo] HBDevoloPlatform > Central Unit found.
homebridge[]: [Devolo] HBDevoloPlatform > Please edit config.json and restart homebridge.
homebridge[]: "platforms": [
homebridge[]: {
homebridge[]: "platform": "Devolo",
homebridge[]: "name": "Devolo",
homebridge[]: "host": "192.168.XXX.XXX",
homebridge[]: "email": "mail@domain.com",
homebridge[]: "password": "password",
homebridge[]: "uuid": "ABCDE123-1337-3333-7331-FEDCBA987",
homebridge[]: "gateway": "1234567890123456",
homebridge[]: "passkey": "ABEAC07D3C28C1BEF9E730002C753ED4"
homebridge[]: }
homebridge[]: ]

Diese 3 Zeilen mit der UUID, dem GATEWAY und PASSKEY müssen nun noch in die config.json, …

vi /var/lib/homebridge/config.json

… wenn dies erledigt ist, muss Homebridge ein letztes Mal neugestartet werden.

service homebridge restart

Wenn wir nun in die Logdatei schauen, werden wir endlich für unsere Mühen belohnt, denn wir sehen, dass jede Menge Devolo Geräte gefunden wurden und diese voraussichtlich auch in der Apple Home App angezeigt werden.

journalctl -n 50 -u homebridge --no-pager
homebridge[]: [Devolo] HBDevoloPlatform > Central Unit found.
homebridge[]: [Devolo] HBDevoloCentralUnit > Device "devolo.model.Siren" is not supported (yet). Open an issue on github and ask for adding it.
homebridge[]: [Devolo] Initializing platform accessory 'Devolo Central Unit'...
homebridge[]: [Devolo] Initializing platform accessory 'Entertainment'...
homebridge[]: [Devolo] Initializing platform accessory 'Bewegungsmelder'...
homebridge[]: [Devolo] Initializing platform accessory 'Handtuchheizkörper'...
homebridge[]: [Devolo] Initializing platform accessory 'Fenster'...
homebridge[]: [Devolo] Initializing platform accessory 'Haustür'...
homebridge[]: [Devolo] Initializing platform accessory 'Bewegungsmelder'...
homebridge[]: [Devolo] Initializing platform accessory 'Wassermelder'...
homebridge[]: [Devolo] Initializing platform accessory 'Luftfeuchtemelder'...
homebridge[]: [Devolo] Initializing platform accessory 'Server'...

Tipp: Ich starte über /etc/crontab jede Nacht Homebridge einmal neu – sicher ist sicher.

Apple Home (HomeKit)

Zum Abschluss muss nun nur noch unser iOS-Gerät mit der Homebridge verbunden werden – hierzu benötigen wir nun den Pin, den wir am Anfang in der config.json festgelegt haben.

Verbinden

apple home homekit mit homebridge verbinden 800x703 - Apple Home (HomeKit) - Devolo Geräte mit der Apple App steuern - Homebridge

Ein Tipp am Rande: Aktuell werden von der Apple Home App nicht alle Funktionen unterstützt die HomeKit im Stande wäre umzusetzen – dies wird zwar von iOS Release zu iOS Release besser, aber dennoch lohnt es sich in andere Apps zu schauen die HomeKit unterstützen, beispielsweise Hesperus.

Viel Spaß mit euren Devolo Geräten in Apple Home.

Was habt ihr so für SmartHome-Spielereien in eueren vier Wänden? Was begeistert euch?

Veröffentlicht von

_nico

Mac-User aus Leidenschaft, Blogger seit Oktober 2009, 88er Baujahr, technikaffin. Ich fühle mich aber nicht nur auf Apple'schen Betriebssystemen zu Hause, alles was eine Shell hat, interessiert mich besonders! Ihr findet mich auch auf Twitter und Google+.

12 Gedanken zu „Apple Home (HomeKit) – Devolo Geräte mit der Apple App steuern – Homebridge“

  1. Hi,

    weisst Du zufälig, ob zukünftig auch noch Szenen und Regeln aus der DHC ausgelesen und im Devolo Plugin verwendet werden können?

    1. Hi Tim,

      ja, das wird zukünftig gehen. Ich nutze auch schon ein Testbuild davon. 🙂

      Allerdings können Regeln nicht aktiviert oder deaktiviert werden – das geht auf dem lokalen DHC nicht (das Plugin geht nicht über die Cloud, sondern bleibt lokal). Die Regeln wären dann also nur eine „Statusanzeige“. Die Szenen können aber „abgespielt“ werden und so auch ggf. die Regeln geschaltet werden. :mrgreen:

      Gruß Nico

  2. Hi Nico,

    vielen Dank für die Info. Das hört sich super an. 🙂

    Aktualisiert sich das Plugin von selber oder muss ich die Github Seite im Auge behalten? Und wie funktioniert ein Update des Plugins?

    1. Hi Tim,

      das Plugin muss händisch aktualisiert werden.

      Du kannst die GitHub-Seite im Auge behalten, aber nicht jeder Commit ist eine neue Version. Besser wäre du schaust hier (published X days/months ago).

      Auf der Konsole kannst du mit …

      npm -g outdated

      prüfen, ob es neue Version gibt und dann mit …

      npm -g update PACKAGENAME

      … updaten.

      Gruß Nico

  3. Hi,
    I tried to get homebridge devolo running. I’ve tried in a synology docker image, and on a raspberry pi3 with raspbian jessie lite. Whatever I do, whatever nodejs version (4/5/6/7/8!!!) etc, homebridge is always running fine, reachable on my iphone. But as soon as I put devolo plugin in config.js, it crash.
    Here are more details:
    https://github.com/kdietrich/homebridge-devolo/issues/12

    Would really test that!

  4. Hallo und zunächst mal Danke für die aus führliche Anleitung.

    Ich habe folgende Fehlermeldung und ab da geht dann nichts mehr richtig weiter. Hast Du eine Idee?

    —————-
    root@raspberrypi:/# systemctl daemon-reload
    root@raspberrypi:/# systemctl enable homebridge
    Synchronizing state of homebridge.service with SysV service script with /lib/systemd/systemd-sysv-install.
    Executing: /lib/systemd/systemd-sysv-install enable homebridge
    Failed to enable unit: File homebridge.service: Invalid argument
    —————–
    Die Installation von Homebridge habe ich entsprechend Deiner Anleitung gestartet und die lief durch….

    Vielen Dank!

    1. Hi Olli,

      irgendetwas gefällt deinem System nicht an der /etc/systemd/system/homebridge.service. Ist eventuell ein ungültiges Zeichen drin oder hast du dich beim Kopieren vertan?

      UDAPTE
      Welches Betriebsystem hast du? Welche Version?
      Ich glaube dein System hat einen der Dienste „syslog.target“ oder „network-online.target“ (After Variable in der Service-Datei homebridge.service) nicht nicht?

      Gruß Nico

      1. Hi Nico,

        jetzt läuft es, nach vielem Probieren habe ich dann versucht den avahi dns dienst zu aktivieren und dann war plätzlich alles ok…

        Danke für Deine Rückmeldung!!!

        Anderes Problem:
        Ich versuche jetzt noch die Netatmo Wetterstation einzubinden mit
        dem Homebridge-Netatmo plugin.
        Die config.json ist angepasst und ok.
        Beim Sart von Hombridge gibt es eine Meldung
        Error: Cannot add a bridged Accessory with the same UUID as another bridged Accessory: 402b260e-3ed6-45bf-a177-62e739520140
        at Bridge.Accessory.addBridgedAccessory (/usr/local/lib/node_modules/hap-nodejs/lib/Accessory.js:264:13)……

        Das bezieht sich wohl auf die UUID von Devolo in der config.

        Hast Du dazu eine Idee?

        Danke und viele Grüße
        Olli

        1. Hi Olli,

          er erkennt aus irgendwelchen Gründen zweimal das gleiche Gerät – hatte ich auch schonmal. Stoppe mal Homebridge, löschen die zwischengespeicherten Geräte und starte Homebridge.

          service homebridge stop
          rm /var/lib/homebridge/accessories/cachedAccessories
          service homebridge start

          Viel Glück.

  5. Hallo,

    Danke Euch für dieses tolle Plugin! Eine Frage habe ich: Was ist zutun, wenn ein neues Gerät ins Z-Wave Netz im DHC inkludiert wird damit es auch im HomeKit erscheint?

    Viele Geüße,
    Andreas

    BTW: Eine Unterstützung des Danfoss LC-13 wäre super!

    1. Hi Andreas,

      du musst dazu nur Homebridge neustarten.
      service homebridge restart

      Für die Unterstützung des Danfoss LC-13 machst du am Besten ein Issue in GitHub auf – theoretisch sollte es genauso wie das Devolo Heizkörperthermostat ticken.

      Gruß Nico

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert