diyHue installieren

image_pdfimage_print

diyHue (GitHub) ist eine virtuelle Hue-bridge, die nicht nur eine originale Philips Hue-bridge mit ihren verbundenen Hue-Lampen ansprechen kann, sondern über eigene APIs eine breite Palette von anderen Lampen einbinden kann. Da sie aber netzwerkseitig das originale Hue-API spricht, kann sich die originale Hue-App (und alle Alternativen) an diyHue anmelden, und alle eingebundenen Lampen genau so steuern, wie die original Hue-Lampen. Wie man diyHue installieren kann, zeige ich in dieser Anleitung.

Das Schaubild auf GitHub gibt einen guten Überblick, was alles eingebunden werden kann.

diyHue installieren

Leider ist die Dokumentation des Projekts ziemlich schlecht, sodass es nicht besonders leicht ist, alles richtig hinzukriegen. Deshalb dokumentiere ich hier die Schritte, mit denen ich Erfolg hatte. Natürlich kann man die virtuell Hue-Bridge diyHue auch anders installieren, meine Lösung erhebt weder den Anspruch, die einzig Richtige, noch die Beste zu sein.

Ich habe mich für eine Installation in Docker entschlossen, da somit alles recht sauber gekapselt ist. Wer Docker noch nicht installiert hat, sollte sich erstmal ein bisschen einlesen, das führt jetzt hier zu weit, aber die Installation ist denkbar einfach.

Netzwerk

Dann muss man sich über das Netzwerk kurz Gedanken machen. Der diyHue container muss ja direkt aus dem Netz erreichbar sein. Ich habe mich entschlossen, meine Docker-container über eine macvlan-bridge direkt ins LAN zu hängen, ohne das sonst bei Docker übliche NAT Subnetz.

Mein LAN hat die Adresse 192.168.3.x mit Subnet 255.255.255.0. Die oberen 32 Adressen, von 192.168.3.224 – 192.168.3.255 möchte ich für meine Container reservieren.

Achtung! Diesen Bereich vom DHCP-Server des LAN ausklammern!

Die entsprechende network bridge erzeugt dann dieser Befehl:

docker network create -d macvlan --subnet=192.168.3.0/24 --ip-range=192.168.3.224/27 --aux-address 'host=192.168.3.224' --gateway=192.168.3.1 -o parent=eth0 pub_net

--aux-address 'host=192.168.3.224' Diese Adresse wird vom Docker-DHCP ausgenommen. Sie dient der Verbindung zwischen Host und Docker-Netzwerk.

-o parent=eth0 Das normale network interface des Hosts, bitte entsprechend anpassen.

pub_net Der Name der Bridge an den persönlichen Geschmack anpassen.

Als nächstes müssen wir eine Eigenheit von Docker, bzw. dem macvlan Treiber umgehen. Docker filtert standardmäßig den Traffic zwischen dem Host und den Containern heraus. Umgehen lässt sich das mit einem 2. Netzwerk-interface, welches wir unter /etc/network/interfaces eintragen. Die Befehle gelten alle für Debian/Ubuntu, auf anderen Distributionen könnte es anders sein.

auto docker-bridge
iface docker-bridge inet static
        address 192.168.3.224
        netmask 255.255.255.224
        pre-up ip link add docker-bridge link eth0 type macvlan mode bridge
        post-down ip link del docker-bridge link eth0 type macvlan mode bridge
        up route add -net 192.168.3.224 netmask 255.255.255.224 gw 192.168.3.1
        down route del -net 192.168.3.224 netmask 255.255.255.224 gw 192.168.3.1

Wir verwenden hierfür die oben ausgeklammerte Adresse 192.168.3.224. Der Name “docker-bridge” kann beliebig sein. Das Haupt-Interface “eth0” muss entsprechend angepasst werden. Es wird auch gleich die nötige Route mit angelegt.

Nach dem Speichern einmal service networking restart ausführen (oder analog auf anderen Systemen), um alles zu aktivieren.

Container starten

Damit können wir nun den eigentlichen Container installieren:

docker run --name=diyHue --env="IP=192.168.3.225" --env="DEBUG=true" --env="MAC=dc:fe:07:e1:80:e6" --volume="/mnt/hue-emulator/:/opt/hue-emulator/export/:rw" --network=pub_net -p 1982:1982/udp -p 1900:1900/udp -p 443:443 -p 80:80 -p 2100:2100/udp --restart=always --detach=true diyhue/core:latest

Tipp: Wer sich den Befehl eines bereits laufenden Containers nicht aufgeschrieben hat und wieder anzeigen möchte, findet hier eine Lösung!

--env="IP=192.168.3.225" Sofern man dem Container eine feste IP zuweisen möchte.

--env="DEBUG=true" Aktiviert den Debug-Modus. Details siehe https://diyhue.readthedocs.io/en/latest/AddFuncts/debug.html. Ansehen kann man sich das Logfile mit tail -f /var/lib/docker/containers/(ID)/(ID).log. Die (ID) bekommt man mit docker ps -a. Wenn alles läuft, nicht vergessen den Debug-Mode wieder auszuschalten! …sonst wird das Logfile ziemlich groß…!

--network=pub_net Das oben konfigurierte Netzwerk, ggf. den Namen anpassen.

-p 1982:1982/udp sowie die anderen: Diese Ports müssen freigegeben werden.

diyhue/core:latest Name des Containers, neueste Version.

diyHue konfigurieren

Wenn alles läuft, sollte sich die diyHue unter http://192.168.2.225 (oder die IP, die sie bekommen hat) erreichen lassen.

(Screenshot von installierter diyHue

originale Hue-bridge koppeln

Zunächst wird die Anzeige leer sein, denn als erstes muss die echte Hue-bridge gekoppelt werden. Wie das genau geht, steht unter https://diyhue.readthedocs.io/en/latest/configuration.html

In Kurz: Unter “Import from bridge” die IP-Adresse der echten Hue-bridge eintragen, den Hardware-Button auf der echten Bridge drücken, dann OK drücken. Wenn alles klappt, bestätigt eine kurze Meldung, wie viele Hue-Lampen importiert wurden.

Hue-App koppeln

Sehr wahrscheinlich werden jedoch immer noch keine Lampen angezeigt, denn es fehlt noch ein Raum, oder eine Gruppe, in die die Lampen zugeordnet werden. Leider bietet diyHue hier keine Möglichkeit das zu erledigen. Aber über die originale Philips-Hue App kann man diesen Schritt ausführen. Zum koppeln, läßt man die Hue-App nach einer neuen Bridge suchen. Wird sie nicht von alleine gefunden, gibt man über “Hilfe” die IP-Adresse direkt ein. Zum finalen Verbinden, muss man sich auf der diyHue-Seite unter “Link device” mit Benutzer “Hue” und Passwort “Hue” anmelden. Der anschließende Klick auf “Activate” stellt den Hardware-button dar. Jetzt kann man innerhalb 30 Sekunden die Hue-App koppeln. Wenn auch dies geklappt hat, sollten in der Hue-App alle Lampen wie bisher zu sehen sein. Auch die diyHue-Seite sollte jetzt alle Lampen anzeigen.

Wenn jetzt in der diyHue andere (nicht-Hue-)Lampen importiert werden, werden diese sofort auch in der Hue-App angezeigt und können über diese gesteuert werden.

mögliche Probleme

Die Hue-App findet die diyHue nicht

Über “Hilfe” die IP-Adresse von Hand eingeben

Die Hue-App kann nicht Verbunden werden

Es kann eine Hilfe sein, die Hue-App komplett zu löschen (mit allen Daten) und neu zu installieren.

Die diyHue-Seite zeigt keine Lampen an

Eine Möglichkeit ist, dass noch keine Lampen von der originalen Hue-Bridge importiert worden sind.

Eine andere Möglichkeit ist, dass die Hue-App noch nicht gekoppelt ist und somit noch kein einziger Raum oder Gruppe angelegt werden konnte.

[print-me]

Dieser Beitrag hat 7 Kommentare

  1. Jens

    Moin,

    das Problem ist, dass man dem Container ja eigentlich mit der –env Anweisung eine IP vorgibt. Bei mir zum Beispiel die 225 am Ende. Das liegt bei mir außerhalb des DHCP Range, da ich für Infrastruktur, wie PiHole oder eben DiyHue gerne feste IPs vergeben möchte. Nun wird dem Container aber trotzdem eine zweite IP vom DHCP zugewisen. In dem Fall war es die 192 am Ende. Ich weiß inzwischen, dass das ein Problem vom macvlan Treiber ist. Bei jedem Container neustart wird eine neue MAC gewürfelt und auch vom DHCP somit eine neue IP vergeben. Das ist aus zwei gründen blöd. Zum einen sammeln sich so unbenutzte DHCP Einträge, zum anderen hat der Container zwei IPs.

  2. Jens

    Ich bin der Anleitung jetzt soweit gefolgt. Der Bereich über 200 ist in meiner Fritzbox aus dem DHCP Raum ausgenommen. Sollte also kein Problem sein. Allerdings bekommt der Container trotz der –env Anweisung eine andere IP. Ich kann die DiyHue Oberfläche zum Beispiel unter der 192.168.3.192 erreichen. In der DiyHue Oberfläche findet sich für die Bridge IP dann aber die 192.168.3.225. Wiese bekommt der gesamte Container nicht die gewünschte IP, sonder scheinbar was im DHCP Range meiner Fritzbox?

    1. tom

      Das kann ich Dir leider nicht genau sagen. Aber Dein Satz “In der DiyHue Oberfläche findet sich für die Bridge IP dann aber die 192.168.3.225.” klingt für mich entweder nach einem Missverständnis, oder nach einer doppelten IP-Adresse. Also nochmal zum Klarstellen: Die DiyHue (=> der Container) sollte per –env Parameter z.B. die IP x.225 bekommen. In der DiyHue-Oberfläche (Aufzurufen über x.225) muss man dann die IP der echten PhilipsHue-bridge eintragen. Wenn die bei dir die .225 hat, kann es natürlich nicht gehen, da die IP dann ja doppelt vorhanden wäre im Netz. Also, stell sicher, dass die PhilipsHue eine andere IP hat — z.B. die x.10 — dann sollte die DiyHue die x.225 bekommen und in der Oberfläche solltest Du die echte PhilipsHue über die x.10 einbinden können.
      Falls ich Dich falsch verstanden habe, dann schreib bitte nochmal.

  3. Nico

    Ich verstehe die Netzwerkkonfiguration nicht ganz. Zunächst wird alles für die 192.168.3.224 konfiguriert und später installieren wir dann mit der 192.168.3.225.

    Braucht die Bridge eine eigene IP oder für was wird die 224 benötigt?

    1. tom

      Ja genau, die 224 ist für die Bridge selbst. Ist quasi wie bei der Fritzbox (der Router ins “andere” Netz/Internet), die normalerweise die .1 als Adresse hat.

  4. tom

    Edit 19.4.2020: letzte Teile des Koppelns mit der originalen Bridge, sowie der App überarbeitet, sowie Problem-Sektion hinzugefügt.

Schreibe einen Kommentar