Synology: ioBroker dank Node-RED mit Alexa steuern


ioBroker auf Synology mit Alexa-Unterstützung

Achtung: Diese Anleitung ist veraltet. Das geht mittlerweile sehr viel einfacher mit dem iot-Adapter vom ioBroker.

Wenn man selber die Kontrolle über sein Smarthome bekommen möchte, dann kommt man an den offenen Tools wie home assistant, openHab oder ioBroker nicht vorbei. Mit ioBroker habe ich nach 10 Minuten, die erste Philips Hue-Lampe über Alexa steuern können. Dazu habe ich Docker und Node-RED verwendet. Außerdem habe ich auf zusätzliche Tools wie Portainer und macvlan verzichtet. Wie das geht, erkläre ich in diesem Tutorial.

Geht das auch mit einem DS216j oder Pi Zero?

Nur Synology NAS mit einem „+“ am Ende unterstützen das Docker Paket. Dazu gehören im Einsteigerbereich das DS218+ (kaufen) für wenig Geld. Der Pi Zero hat leider mit 512 MB RAM zu wenig Arbeitsspeicher für den ioBroker. Außerdem ist die Installation nicht trivial, weil man Node.js manuell installieren muss. Beim Versuch erscheint dann folgende Meldung:

You appear to be running on ARMv6 hardware. Unfortunately this is not currently supported by the NodeSource Linux distributions.

Wieso kein Raspberry Pi 4?

Tatsächlich hatte den ioBroker zuerst auf einem Raspberry Pi 4 installiert. Das lief auch sehr gut. Allerdings hatte das auch einige Nachteile:

  1. Ein Raspberry Pi 4 ist recht teuer (kaufen).
  2. Automatische Neustarts bei Fehlern sind schwer zu realisieren.
  3. Der ioBroker Docker Container verbraucht mit 1 % CPU auf einem DS1019 (kaufen) nur wenig Ressourcen.
  4. Backup, Aktualisierungen und Konfiguration sind unsicher und aufwendig.

Aus diesem Grund ziehe ich Docker jeder Installation auf eigenständiger Hardware vor.

ioBroker arbeitet primär mit Adaptern, Instanzen und Objekten
ioBroker arbeitet mit Adaptern, Instanzen und Objekten

Kurze Einführung in ioBroker für Neulinge

Die altbackene Oberfläche der Open Source Lösung ioBroker schreckt sofort ab. Dabei ist das Prinzip ganz einfach: Es gibt Adapter, Instanzen und Objekte. Adapter installiert man für bestimmte Systeme wie Philips Hue oder Meross. Als Instanz bezeichnet man einen installierte und konfigurierten Adapter. Dieser Adapter erzeugt dann Objekte wie „Hue Licht Tisch vorne“. Diese Objekte haben dann schreibbare Attribute wie „on“ welches den Zustand „true“ oder „false“ annehmen kann. Die Attribute werden über Pfade angesprochen wie z.B. hue.0.Tisch_vorne.on. Die Poollampe am Gästehaus mit einer zweiten Hue-Bridge würde man so steuern: hue.1.pool_fluter.on.

Installation des Docker Paketes im Synology Betriebssystem DSM

Schritte zur Umsetzung

Schritt 1: Erstellen eines Shared Folders

Der Server braucht einen Speicherort auf der DiskStation, in dem die Konfigurationsdateien vom ioBroker liegen. Deswegen ist dieser Schritt wichtig, weil sonst Aktualisierungen des Containers zum Verlust der gesamten Konfiguration führen. Damit dies nicht passiert, legt man im Control Panel ein dediziertes Shared Folder namens „ioBroker“ an. Weiter geht es mit der Installation des Docker Applikation.

Tatsächlich ist das Image von buanet am Besten.

Schritt 2: Installation des Docker Containers auf Synology NAS

  1. Zuerst installieren wir im Paketmanager das Docker Paket. Wenn das nicht möglich ist, fehlt dir ein Synology NAS der „Plus“-Reihe wie das DS218+ (kaufen)
  2. Nun suchen wir unter der „Registry“ nach „ioBroker“ und entscheiden uns für buanet/iobroker.
  3. Ein Doppelklick darauf stellt uns die Frage nach dem „tag“ des Images. Es ergibt keinen Sinnlatest“ zu nehmen und den Container später mit Watchtower aktuell zu halten. Stattdessen nehmen wir die höchste verfügbare Versionsnummer. Für diese Anleitung war das 5.0.0
Konfiguration des Docker Containers
Konfiguration des Docker Containers

Schritt 3: Konfiguration des Volumes

Nun müssen wir den in Schritt 1 angelegten Order (bei mir in SSD/iobroker) als Volume noch auf das interne Folder des Containers /opt/iobroker mounten.

Konfiguration der lokalen und internen Ports des Containers

Schritt 4: Konfiguration der Ports und Network

Damit der Docker Container nachher Daten senden und empfangen kann, müssen wir ihm unter „Ports“ folgende freigeben:

Port LokalPort ContainerWofür?
18801880Node-RED Oberfläche
80818081Oberfläche ioBroker
80828082Webserver ioBroker für VIS
Die Ports die der ioBroker Container braucht

Alternativ kann man auch beim Anlegen des Containers unter „Network“ den Haken bei „Use the same Network as Docker Host“. Dann spart man sich die Portfreigaben. Die Implikationen habe ich allerdings noch nicht ganz verstanden.

Nun kann man den Docker-Container auch schon Starten.

Mein ioBroker Docker Container verbraucht auf dem Synology nur wenige Ressourcen.

Schritt 5: Starten des Docker Containers

Nun drücken wir auf „Start“ um den Container zu starten. Man kann auch den Haken bei der Konfiguration setzen, dass der Container direkt gestartet wird. Unter „log“ sieht man, was beim Hochfahren alles passiert ist. Nun gibt man die IP seines NAS im lokalen Netzwerk oben in die Browserzeile ein und hängt den Port dahinter. Bei mir ist das 192.168.178.100:8081. Ihr solltet euch auf der ioBroker Oberfläche befinden. Wenn nicht, schau im Log des Containers nach eventuellen Fehlern.

Wenn du diese altbackene Oberfläche siehst, liegt das Schlimmste hinter dir.

Schritt 6: Installation des Hue Adapters

Links im Menü wählt man „Adapter“ aus und sucht oben nach „Hue“. Nun werden mehrere Hue-Adapter gelistet. Ich habe mich für den Adapter „Philips Hue Bridge“ entschieden. Nach einem Klick auf das „+“ rechts daneben wird der Adapter installiert.

Beim ersten Mal schwer zu finden: Die Installation startet man mit dem „Plus“-Symbol.

Nun koppeln wir die Hue Bridge im lokalen Netzwerk mit dem ioBroker. Dazu geben wir die IP-Adresse ein. Nun drücken wir den physikalischen Knopf an der Hue-Bridge kurz aber kräftig, um einen Benutzer zu erzeugen.

Ja, man muss wirklich aufstehen und zur Hue Bridge laufen um den Knopf zu drücken.

Sobald man „Sichern und schließen“ auswählt, werden die Zigbee-Lampen und Steckdosen aus dem Hue-System ausgelesen und als Objekte zur Verfügung gestellt. Man kann nun testweise im Menü unter „Objekte“ eine Lampe unter hue.0 auswählen und dort das Attribut „on“ verändern. Die Lampe wird nun an- oder angeschaltet. Wenn nicht, dann schaut man im „Log“ nach was schiefgelaufen ist.

Das Zielbild. So werden wir Alexa mit der Hue-Lampe verbinden.
Zielbild: Mit Node-RED werden die Nodes in Flows organisiert

Schritt 7: Node-RED mit dem ioBroker nutzen

Node-RED ist eigentlich selber ein System wie ioBroker. Leider ist dies nach meiner Recherche die einfachste Art und Weise aktuell Alexa an den ioBroker anzubinden. Man könnte sogar nur Node-RED nutzen. Allerdings hat der ioBroker eine große Unterstützung und community für „deutsche“ Systeme wie eNet von Gira oder Jung. Das bietet Node-RED nicht.

Node-RED wird einfach als weiterer Adapter installiert und steht dann links im Menü bereit. In Node-RED stehen „Flows“ im Vordergrund. Das sind Flussdiagramme welche den jeweiligen Status an „Nodes“. Node-RED verfügt über ioBroker Nodes, bei denen man die Pfade der Objekte angeben kann. Nun fehlt aber noch Alexa.

Diese Palette namens node-red-contrib-alexa-home-skill muss installiert werden.

Schritt 8: Alexa-Home Palette in Node-RED installieren

In Node-RED kann man oben rechts über das „Hamburger-Menü“ den Punkt „Palette verwalten“ auswählen. Hier kann man die „Paletten“, also die „Adapter“ für Node-RED, installieren. Nun installieren wir die Palette „node-red-contrib-alexa-home-skill“. Diese Palette stellt zwei „Nodes“ bereit: Alexa Home und Alexa Home Response. Wir brauchen nur den ersten Node.

Ein Fuchs muss tun, was ein Fuchs tun muss. In diesem Fall „Ein“ und „Aus“ verstehen.

Schritt 9: Registrierung des Cloud Accounts mit Alexa Geräten

Ich habe mich gegen eine lokale Lösung bei der Kommunikation mit Alexa und für die Cloud-Variante entscheiden. Dafür muss ein Account bei hardill.me.uk registriert und dort Geräte angelegt werden. Dort legt man sich unter „Device“ ein Testgerät an. Mein Gerät heißt „Fuchs“ und kann nur Ein und Aus weitergeben.

Schritt 10: Installation des Alexa Skills Node-RED

Die Überschrift sagt alles: In der Alexa-App wird der Skill „Node-RED“ (aufrufen) gesucht und installiert. Dort authentifiziert man sich mit dem oben in Schritt 9 registrierten Account und aktiviert den Skill. Nun sucht man nach neuen Smarthome-Geräten über die Gerätesuche und findet hoffentlich den Fuchs.

Die Konfiguration der Node-RED Knoten.
Die Konfiguration der Node-RED Knoten.

Schritt 11: Konfiguration des Flows in Node-RED

Wir ziehen nun aus der Sidebar links den Node „Alexa Home“ auf die Arbeitsfläche in Node-RED. Dann ziehen wir den Node „ioBroker out“ ebenfalls auf die Fläche. Nun verbinden wir beide Nodes so wie oben in der Abbildung „Zielbild“ über Schritt 7. Ich habe den Node „Debug“ benutzt um zu wissen, welcher Status nachher wirklich weitergegeben wird. Zu Guter Letzt werden die beiden Nodes konfiguriert.

Node: Alexa Home Node

  • Account: Hier die Zugangsdaten von weiter oben aus Schritt 9.
  • Device: Das Gerät, welches man in Schritt 9 im Account angelegt hat.

Node: ioBroker Out

  • Topic: Der Pfad zu dem „on“-Attribut einer Hue-Lampe.
  • Type: command

Oben rechts in der Ecke muss nun mit „deploy“ der Flow aktiviert werden. Nach ein paar Sekunden sollte an jedem Node „connected“ stehen. Wenn nicht, wie immer ins „Log“ schauen.

Schritt 12: Alexa, Fuchs einschalten

Nun kann man mit „Alexa, Fuchs einschalten.“ die Hue-Lampe ein- und ausschalten. Aber das ist natürlich erst der Anfang.

„Alexa, Lockdown einschalten!“

Das Beispiel mit einer Hue-Lampe soll den einfachsten Anwendungsfall erklären. Nun kann man jeden beliebigen Adapter des ioBrokers installieren und mit Node-RED kontrollieren. Auch ein Mix ist machbar. Meine Motivation war es die Jalousien der Anlage von GIRA über Alexa zu steuern. Diese alte Anlage hat leider keine Cloud-Anbindung. Mit dem ioBroker ist allerdings nun folgendes möglich:

Sobald der „Lockdown“ eingeschaltet wird, werden die Hue Color Lampen rot und die Rollläden fahren runter. Der Flow dafür ist etwas komplizierter. Die Verzögerung umgeht die Limitierung, dass nicht alle Rollos gleichzeitig gesenkt werden können. Die „F-Nodes“ sind Javascript-Funktionen.

Mein Rolladen-Flow aus dem Video oben.

Optional: Zugriff über das Handy per VIS

Die Sprachsteuerung über Alexa sollte meiner Ansicht nach für alles ausreichen. Ich finde diese Tablets an den Wohnzimmerwänden mancher Leute weder ästhetisch, noch ist es meiner Meinung nach sinnvoll. Die wenigen Fälle, wo man sein Zuhause nicht per Alexa, sondern per Tastendruck steuern will, reicht dann das Mobiltelefon. Dafür hat der ioBroker einen Adapter namens „Visualisation“ oder kurz „Vis“. Damit kann man dann eine Webseite auf seinem Handy im lokalen Netz zur Steuerung verwenden. Das klappt dann über den VPN der Fritz!Box auch bequem außerhalb des LAN.

Im 3. Schritt haben wir bereits die Ports für Vis freigegeben. Nachdem man den Adapter „Visualisation“ installiert hat, findet man in der Sidebar-Navigation ganz oben den Punkt „Overview“ und dort auch die Live-Ansicht und den Editor. Das hässliche Standard-Dashboard löscht man am besten sofort und fängt neu an.

In der Editoransicht zieht man die „Widgets“ von links auf das Dashboard. Nun gibt man unter Object ID den ioBroker Pfad an, den man schalten möchte. An bzw. Aus werden dann Bool-Schalter und Prozentangaben werden zu Slidern. Zu Guter Letzt habe ich mein Vis-Board auf Mobiltelefone optimiert. Das bedeutet alle Elemente sind untereinander angeordnet und passen so scrollbar auf das Handy.

Der Vis Editor ist kinderleicht zu bedienen.
Der Vis Editor ist kinderleicht zu bedienen.

Steuerung von eNet, Garagentoren und Plex

Durch diese Lösung kann nun das Garagentor ebenfalls per Stimme gesteuert werden. Oder das Heimkino durch den Plex-Adapter. Letzterer erlaubt das Einschalten der Lampen, wenn der Film gerade pausiert wird. Ebenso können nun auch Hersteller wie Gira, Jung, Loxone so wie alles, was auf KNX beruht gesteuert werden. Die Möglichkeiten sind nun grenzenlos. Viel Spaß damit.


Beitrag veröffentlicht

in

,

von

Kommentare

12 Antworten zu „Synology: ioBroker dank Node-RED mit Alexa steuern“

  1. Avatar von vepman
    vepman

    Leider hat die Cloud-Variante von Ben Hardill den Nachteil, dass alexa heute morgen nicht funktioniert, da sein Server down ist.
    Ideal wäre es, wenn man seinen Server auf der Synology laufen lassen könnte. Dann wäre man ganz unabhängig.

    1. Avatar von Marc
      Marc

      Das ist echt blöd. Aber ich habe keine Alternative gefunden, die tatsächlich so gut funktioniert. :/

    2. Avatar von vepman
      vepman

      Ich leider auch nicht.
      Die iot-Lösung von ioBroker ist mir ein wenig zu teuer.
      Ich hoffe, Ben Hardill merkt heute, dass sein Server down ist und startet ihn neu.
      Vor einigen Monaten war das schon mal und er hat dann ihn neu gestartet.

    3. Avatar von Marc
      Marc

      Nach meinem Tweet ging es wieder aber selber hosten will er wohl nicht.

    4. Avatar von vepman
      vepman

      Ja, du hast recht, geht wieder.
      Seine Antwort war aber extrem knapp. :-)

    5. Avatar von Marc
      Marc

      Ja, leider. Gibt es noch eine Option außer dem bezahlten Dienst? Das mit den lokalen Befehlen hat bei mir überhaupt nicht geklappt. Auch nicht auf dem Pi.

    6. Avatar von vepman
      vepman

      Vor der Version von Ben Hardill hatte ich eine andere Node-red Version. Diese funktionierte irgendwann nicht mehr. Bis jetzt habe noch nichts besseres gefunden.

  2. Avatar von vepman
    vepman

    Vielleicht kriegst du das hin:

    Ich habe es nicht geschafft, unter Docker den Port 80 umzusetzen.

    1. Avatar von vepman
      vepman

      umzulenken meinte ich.

    2. Avatar von Marc
      Marc

      Auf einem Pi müsste das ohne Probleme gehen. Ich teste das bald mal.

  3. Avatar von roman
    roman

    hab mir einen account angelegt und ein erstes Device darin. In der configuration in node red mit den gleichen daten angemeldet, aber mir wird in der Box kein device angeboten. Woran könnte das liegen?

    1. Avatar von roman
      roman

      hat sich erledigt, ein paar Minuten später geht es…

Schreibe einen Kommentar

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