ioBroker Docker Container über Kommandozeile starten

eingetragen in: Docker, ioBroker, Synology | 0

Am einfachsten ist es den ioBroker Docker Container von Andre Buanet über die grafische Docker Oberfläche der Synology NAS zu installieren. Eine genaue Beschreibung dazu findet Ihr bei Andre auf der Seite unter https://buanet.de/2017/09/iobroker-unter-docker-auf-der-synology-diskstation/.

Leider bietet die Synology Docker Oberfläche nur eingeschränkte Einstellungsmöglichkeiten. Wenn man weitere Optionen nutzen möchte um z.B. auf Devices der NAS, wie z.B. ein ZWAVE oder ZIGBEE USB Stick zuzugreifen kommt man nicht um die manuelle Erstellung einer Docker Instanz herum. Auch kann ich so, einen DNS Server, feste IP Adresse und festen Hostnamen dem Docker Container mitgeben.

Docker Container mit Option Device

Nachteil ist, sollte sich der Devicename ändern z.B. von /dev/ttyACM0 nach /dev/ttyACM1 läßt sich der Docker Container nicht mehr starten. Mit der Option privileged statt device kann man alle Devices der NAS dem Docker Container bekanntgeben. Das kann man über die Synology Docker Oberfläche einstellen. Ich persönlich würde aber davon abraten, da der Docker Container damit weitereichende Berechtigungen auf der NAS hat und auf alle Devices zugreifen kann.

 

 

 

ioBroker im Docker auf der Synology DiskStation im gleichen Subnet

eingetragen in: Docker, ioBroker, Synology | 0

Um Docker auf der Synology NAS zu installieren gibt es von Andre Buanet ein Docker Paket. Die Installation habe ich wie hier auf https://buanet.de/2017/09/iobroker-unter-docker-auf-der-synology-diskstation/ beschrieben vorgenommen.  Ich habe aber ein paar kleine Änderungen vorgenommen damit ich den Bonjour Dienst im Docker Container parallel zu dem auf der Synology NAS laufen lassen kann.  Auch kann man mit der Lösung unten, mehrere ioBroker Instanzen laufen lassen, die alle dann unter Apple Homekit sichtbar sind.

Dafür darf der ioBroker Container nicht im Host Modus gestartet werden. Der NET (Bridge) Modus geht leider auch nicht, da die vergebene IP Adresse aus einem anderen Subnet ist (172.17.0.0) ist. Damit funktioniert Apple Homekit / Bonjour nicht mehr.
Aus diesem Grund muss ein MACVLAN angelegt werden (Mit Macvlan ist es möglich einer Netzwerkschnittstelle mehrere virtuelle Schnittstellen mit einer eigenen MAC Adresse zuzuweisen). Leider bietet Synology diese Option über die Docker Oberfläche nicht an.
Also mit SSH auf der NAS als root anmelden und folgenden Befehl ausführen:

Die IP Adresse meiner NAS ist 192.168.20.30 das dazugehörige Subnetz ist 192.168.20.0/24. Mit dem Befehl oben habe ich eine „MACVLAN Schnittstelle“ in Docker im Subnet 192.168.20.80/28 angelegt. In diesem Subnet werden IP Adressen von 192.168.20.80 bis 192.168.20.95 vergeben (http://www.subnet-calculator.com/cidr.php).

Dieser Bereich sollte beim eigenen DHCP Server ausgeschlossen werden um nicht doppelte IP Adressen zu vergeben.
In Docker sehe ich jetzt nun den Eintrag mac0 unter Netzwerk.

 

Also nächstes den Docker Container buanet/iobroker installieren und anders als in der Anleitung beschrieben in den erweiterten Einstellungen unter Netzwerk den Netzwerknamen mac0 auswählen.

Jetzt kann der Container gestartet werden und sollte eine IP Adressen zwischen 192.168.20.81 bis 192.168.20.95 erhalten. (Die IP Adresse 192.168.20.80 wurde mit dem Parameter –aux-address ‚host=192.168.20.80‘ ausgeschlossen).
Nun solle man ioBroker mit http://192.168.20.x:8081 von außen erreichen. Jetzt gibt es leider noch 2 Probleme. Einmal ist der DNS Server im Docker Container verkehrt und keine Namen auflösen und man kann aus dem Docker Container nicht die NAS erreichen und umgekehrt.
Folgendermaßen kann man das Problem lösen! Dafür wieder mit SSH auf der NAS als root anmelden und folgende Befehle ausführen:

Somit ist der Docker ioBroker Container nun auch von der NAS aus ansprechbar. Aus dem Docker Container ist die NAS über die zusätzliche IP Adresse 192.168.20.80 zu erreichen. Leider sind die Einstellungen nach jedem reboot der NAS weg und müssen neu angelegt werden. Ich habe mir ein kleines sh Skript erstellt, welches bei jedem Start der NAS über den Synology Aufgabenplaner ausgeführt wird.

Nun noch das Problem mit dem DNS Server bereinigen. Dafür im ioBroker Docker Container ein Terminal öffnen. Nun als erstes einmal folgenden Befehl durchführen:

Damit wurde der DNS Server mit der IP-Adresse 8.8.8.8 eingerichtet. Leider wird der Eintrag beim jedem reboot des ioBroker Docker Containers überschrieben. Nun schnell noch folgende Befehle ausführen um das System auf den neusten Stand zu bringen und den Editor vi zu installieren.

So jetzt nun noch das Startskript anpassen, damit der Nameserver bei jedem Neustart des Container überschrieben wird. Dafür im Docker Container mit dem Editor vi das Skript /opt/scripts/iobroker_startup.sh um folgende Einträge am Anfang ergänzen:

Jetzt den Container neu starten. Übrigens die Migration der „alten“ ioBroker Docker Installation in den neuen Container war total unproblematisch. Dafür habe ich das /opt/iobroker Verzeichnis kopiert. Vorher hatte ich die ioBroker / ioBroker Admin Versionen auf die gleiche Versionsnummern hochgezogen.

Falls Ihr ein Bond am Laufen habt oder Open vSwitch nutzt dann müsst Ihr als Device bondX (X = 0,1,2,…), oder ovs_ethX (X = 0,1,2,…) statt ethX nutzen.

Leider muss das MACVLAN bei jedem Neustart der Synology NAS neu eingerichtet werden. Aus diesem Grund habe ich eine kleines Skript erstellt, Dieses rufe ich im Aufgabenplaner (Systemsteuerung -> Aufgabenplaner) alle 5 Minuten als Benutzer root auf:

 

Internet of Things – ioBroker

eingetragen in: ioBroker | 0

Wozu benötige ich etwas wie Internet of Things (IoT)

Plan war es unser Haus mit Heizungsthermostaten die ich online per App über das Smartphone steuern kann aufzurüsten. Da ich die Lupusec XT2+ Alarmanlage besitze, in der man auch Smarthomekomponenten schalten kann, habe ich mir passend Steckdosen und Heizungsthermostaten von Lupus bestellt. Die Steckdosen sind super, aber mit den Thermostaten war ich nicht so zufrieden und habe diese zurückgeschickt. Aber was nun, Thermostaten von anderen Herstellen bestellen und diese mit einer weiteren App schalten? Solange die Fenster offen sind sollen die Heizungsthermostaten die Temperatur automatisch runterregeln.  Aber wie soll das funktionieren mit Türkontakten von Lupusec und Heizungsthermostaten von einem anderen Hersteller? Wie sollen die Thermostaten wissen, wann die Fenster offen sind? Ich hatte kurz mit dem Gedanken gespielt, die Lupusec Alarmanlage zu verkaufen und stattdessen mir das Smarthomesystem von Homematic zuzulegen. Diese hat tolle Smarthomekomponenten für einen guten Preis. Aber als Alarmanlage kommt die Homematic für mich überhaupt nicht in Frage.

Jetzt stand ich vor dem Problem, Lupusec als super Alarmanlage behalten und Homematic mit tollen Smarthomekomponenten zuzulegen. Aber wie kombiniere ich Beides miteinander ohne mit mehren Apps zu arbeiten.

Durch Zufall bin ich über das Thema IoT (Internet of Things) gestolpert. IoT Lösungen wie FHEM, OpenHAB und ioBroker können Smarthomekomponenten verschiedener Anbieter miteinander verknüpfen. Ich habe mir alle drei Lösungen angeschaut. Dabei gefiel mir ioBroker am besten, da es auf nodejs aufbaut und Betriebssystem unabhängig ist. ioBroker kann man auf einem Raspberry, Windows, Mac, Unix oder in einem Docker Container auf einer Synology NAS installieren. Die ioBroker Oberfläche wird über einen Webbrowser wie z.b. Chrome aufgerufen.

Da ich noch einen Raspberry PI3 für ca. 35 EUR herumliegen hatte, habe ich ioBroker dort testweise installiert. Linux Kenntnisse sind hilfreich.

Ein ioBroker Testsystem zum auszuprobieren kann man über http://iobroker.click/ aufrufen.

Erste Schritte mit ioBroker

Eine Installationsanweisung wie man ioBroker installiert findet man für die verschiedenen Plattformen hier. Ist die Installation abgeschlossen, dann ruft man die Admininstrationsoberfläche über den Webbrowser mit http://<IP-raspbbery>:8081 auf (Bsp.: http://192.168.20.82:8081).

Die drei wichtigsten Bereiche in der ioBroker Adminoberfläche sind:

  • Adapter (verschieden Komponenten von Herstellern, wie z.B. Phillips HUE, Lupusec, Homematic, …., Stand Juni 2018 gibt es über 200 Adapter)
  • Instanzen (Instanz eines Adapters, erst dann kann man mit einem Adapter arbeiten)
  • Objekte (Objekte sind Geräte (Devices) von den Adpater-Instanzen und Datenpunkte wie z.B. Soll Temperatur vom Wohnzimmer Heizungsthermostaten. Der Status der Datenpunkte können gelesen und geändert werden.)

Hier ein Beispiel mit dem Lupusec Adapter. Auf dem Reiter Objekte kann mit status_ex die Lupusec Funksteckdose an und ausgestellt  bzw. den Status der Steckdose abgefragt werden, auch wenn diese über die Lupsusec App und nicht über ioBroker geschaltet wurde.

Jetzt kann man verschiedene Objekte voneinander abhängig schalten. Dieses geht für den der programmieren kann mit Javascript. Die die nicht programmieren können oder wollen steht die Blocksprache Blocky zur Verfügung.

In dem Beispiel unten, wird die Steckdose angeschaltet (true), sobald die Haustür aufgeht (Türkontaktstatus true). Sobald die Haustür geschlossen wird (Türkontaktstatus false) wird die Steckdose ausgeschaltet (false).

Wer ein iPhone besitzt kann seine ganzen Komponenten auch darüber steuern. Dafür muss der Apple Homekit Adapter installiert werden.

ioBroker bietet auch einen grafischen Editor an um eigene Oberflächen zum Steuern von Geräten zu erstellen. Programmierkenntnisse sind dafür nicht notwendig.

1 2 3