ioBroker installieren - Docker

 

Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker

Für einen kurzen Überblick, wie sich ioBroker im SmartHome einfügt, siehe auch: Smart-Home-Plattform: Systeme

SoftwareIoBroker
GitHubhttps://github.com/ioBroker/ioBroker
aktuelle Version 2024-08-11
gefunden28.09.2024
Als Voraussetzung für das Einrichten von ioBroker wird für die hier vorgestellte Variante ein Docker-Setup vorausgesetzt, siehe: Docker.

ioBroker in Docker starten

Um ioBroker zu starten, habe ich den folgenden Befehl verwendet:

sudo docker run -d \
  --net=host \
  --hostname=iobroker \
  --restart=always  \
  --name iobroker  \
  -v /opt/iobroker  \
  buanet/iobroker -p

Das Beispiel verwendet Docker Volumes und keine Bind-Mounts für das permanente Speichern der Daten. Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner.

Die erste Verbindung auf die Weboberfläche starten einen Einrichtungs-Assistenten:

Anmeldung-Passwort

Um den Zugriff auf ioBroker abzusichern, muss die Authentifizierung eingeschaltet werden: Entweder über den Wizard, oder über „Benutzer“ ein Passwort vergeben werden:

 

Für das Einschalten der Authentifizierung, auf Instanzen, „admin.0“:

Adapter, als Beispiel: deConz ZigBee, verbinden

Für die Steuerung der ZigBee-Geräte gibt es für Conbee einen eigenen Adapter,

Nach dem Hinzufügen muss noch das Phoscon-GW des ConBee-Sticks auf „App verbinden“ gesetzt werden. Informationen zur Inbetriebnahme des ConBee, siehe: Conbee 2 Inbetriebnahme.

Damit iobroker mit deConz eine Netzwerkverbindung aufbauen kann, habe ich 

dann: Erstelle API Key und speichern:

ⓘ
Normalerweise verwendet deConz den Port 80.
Da Port 80 auf meinem Server bereits belegt ist, verwende ich einen altertiven Port, siehe: Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review

Wenn die Verbindung zu deConz funktioniert, wird der API-Key automatisch befüllt.

InfluxDB

Der Adapter „InfluxDB" ermöglicht es historische Werte in eine Influx-Datenbank zu schreiben, für das Setup, siehe: Docker InfluxDB.

Nach dem Setup kann die Influx-Datenbank in den Einstellungen des Adapters hinterlegt werden:

Für das Erfassen der Zählerstände, auf Objekte und „Einstellungen“:

Durch das Aktivieren werden alle Status-Änderungen in die Datenbank geschrieben: 

An dieser Stelle kann auch die Vorhaltezeit definiert werden.

Verschiedene Geräte verbinden, steuern

Das direkte Steuern der Geräte über deren Objekte ist zwar möglich, aber nicht wirklich komfortabel. Der Menüpunkt Objekte dient vielmehr um alle Status anzuzeigen und um bestimmte Aktionen zu testen. Um Sensoren oder Schalter mit bestimmten Geräten zu verknüpfen, wird eine bestimmte Logik benötigt, dazu gibt es in ioBroker mehrere Möglichkeiten. Für einfache Verknüpfungen kann der Adapter „Szenen“ verwendet werden, etwas mehr Möglichkeiten bietet der Adapter „Script Engine“:

Szenen – auf bestimmte Werte reagieren

Eine sehr einfache Variante bestimmte Trigger mit bestimmten Aktionen zu verknüpfen bietet der Adapter „Szenen“. Als Beispiel steuere ich einen Luftentfeuchter über eine steuerbare Steckdose anhand der angezeigten Luftfeuchtigkeit eines Sensors:

Die Steckdose wird dabei bei einem Wert über 65 über die Szenenzustände eingeschaltet. Ein zweiter Ablauf schaltet den Luftentfeuchter bei einem Wert kleiner 60 dann wieder aus.

Script Engine – logische Abläufe

Das Beispiel mit dem Luftentfeuchters kann mit dem Adapter „Script Engine“ wie folgt umgesetzt werden:

Der Adapter Script Engine erzeugt über visuelle Elemente (blockly) einen JavaScript-Code.

Das hier vorgestellte Beispiel erzeugt automatisch folgenden JavaScript-Block:

on({id: 'deconz.0.Sensors.10.humidity', change: "ne"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  if (getState("deconz.0.Sensors.10.humidity").val >= '65') {
    setStateDelayed("deconz.0.Lights.7.on"/*Smart plug 7 on*/, true, 600000, false);
  }
  if (getState("deconz.0.Sensors.10.humidity").val < '60') {
    setState("deconz.0.Lights.7.on"/*Smart plug 7 on*/, false);
  }
});

Fazit

Der ioBroker kann verschiedenste Smart-Home-Lösungen miteinander verbinden. Eine Vielzahl an Adaptern im ioBroker bietet zahlreiche Anbindungs- und Erweiterungsmöglichkeiten. Mithilfe von Docker können zudem einfach Container außerhalb von ioBroker, aber auf derselben Hardware, betrieben und angebunden werden, zum Beispiel ein ZigBee Gateway: Conbee 2, eine InfluxDB und Grafana für die Visualisierung. Als Alternative zu ioBroker, siehe auch: Home-Assistant.

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
20.08.2022 18:43
Du hast ein eigenes Netzwerk eingerichtet.
Ich habe im Internet nur Anleitungen mit dem Bridge Modus gefunden. Aber dann kann ich nicht auf den Deconz Docker zugfreien. (Kann das sein?)

Wie lautet der Befehl, dass ioBroker im Haste Modus läuft?
✍Bernhard
gepostet am 21.08.2022 10:37, geändert: 21.08.2022 14:08
Damit ioBroker auf DeConz  zugreifen kann, muss auch DeConz das selbe Netzwerk verwenden. 
Alternativ, kann der Host-Modus mit --net=host verwendet werden. Da ioBroker für dessen Instanzen eigene Ports verwendet, ist --net=host einfacher, daher habe ich den Artikel angepasst. Wichtig ist dabei nur, dass keine anderen Services einen von ioBroker verwendeten Port belegen.

Beitrag erstellt von Bernhard

✍anonym
08.06.2022 23:18
Hurra, endlich eine Anleitung die funktioniert :-)
Jetzt habe ich nur noch eine Frage, wie kann ich den kompletten Container sichern? Also nicht nur den IObroker darin?
Das Teil läuft auf PI4 mit Raspbian. 

MFG

Frank. I

✍anonym
21.03.2022 09:07
Hallo,
ich habe den IObroker in Docker (wie angegeben) auf einem Raspi 4 installiert.
Der IObroker läuft auch...
ABER
Meine Raspimatic läuft auf einem anderen Raspberry pi im lokalen Netz
192.168.100.???

Ich kenne im Linux nicht wirklich gut aus, 
wie komme ich vom Netzwerk im Container in mein lokales Netz?
..denn ohne die Homematic zu erreichen, nutzt mir der IObroker nix :(
Danke für eine Antwort

✍anonym
04.02.2022 17:51
Hallo, 
ich habe die Befehle 1:1 verwendet und der Container wurde auch erstellt, aber leider startet dieser nicht. Ich bekomme auch kein Rückmeldung. Ich habe das Ganze auch schon mit Portainer versucht. Nun wurde dieser dort zwar gestartet, aber dann hatte ich das Problem, dass kein Netzwerk verfügbar war. Kannst du mir hier eventuell weiter helfen?

Gruß Mario

✍anonym
30.06.2021 20:07
Moin,

kannst du mir Verraten wie ich den Docker updaten kann und wofür die ganzen Ports gut sind?

✍anonym
07.03.2021 15:51
Hallo,
Du erwähnst in dem Befehl viele Ports. Wofür sind sie bzw. welche sind denn tatsächlich nötig ?

Grüße
Martin

✍Tobias
21.01.2021 09:38
ioBroker in Docker starten

Hallo Bernhard, ich lese mit Interesse deine Beiträge und versuche derzeit von meinem PI auf meinem Windows 10PRO Rechner mit ioBroker umzuziehen.
- mit Linux und Docker bin ich natürlich noch nicht so sattelfest
- WIN10PRO
- Docker Desktop mit WSL2 läuft mit Adminrechten als User A_Tobias
- Netzwerk smart-home eingerichtet
- Ordner mkdir -p /docker/iobroker auf Windows Partition LW:C im Root angelegt und testweise unter C/User/A_Tobias (ist das für das Binding und die peristenten Daten richtig? Funktioniert bei mir nicht)
- ist der host eigentlich die WSL Umgebung mit Linux oder ist der host Windows mit seiner Verzeichnisstruktur?

- Container gestartet mit deinen Angaben
docker run -d --network=smart-home -p 8081:8081 -p 8081:8081/udp -p 8082:8082 -p 8083:8083 -p 1882:1882 -p 8091:8091 --hostname=iobroker --restart=always --name iobroker -v /docker/iobroker/:/opt/iobroker buanet/iobroker -p

- über localhost:8081 kann ich iobroker starten, die Daten bleiben aber nicht erhalten, da die Daten aus welchem Grund auch immer nicht vom Container ins host Verzeichnis /docker/iobroker gespeichert werden
- lt. buanet-block kann man auch eine backitup-Datei in den Ordner /opt/iobroker bzw. /docker/iobroker legen um die vorhandene Konfiguration auf das neue System aufzuspielen
- kannst du mir hierzu ein paar Tipps geben oder meine Gedankenfehler ausräumen?
- bedanke mir vorab für deine Unterstützung

Gruß Tobias
✍Bernhard
gepostet am 21.01.2021 12:27
Hallo Tobias, 
damit iobroker persistent wird, ist zumindest in Linux der Paramter -v /docker/iobroker/:/opt/iobroker verantwortlich: 
der lokale Ordner /docker/iobroker soll im Container unter /opt/iobroker verwendet werden.
Ich kann mir vorstellen, dass in Windows der Ordner dann ev. entsprechend auch einen Laufwerksbuchstaben braucht? sowas wie: 
-v c:\temp\docker:/opt/iobroker

Beitrag erstellt von Bernhard
✍Tobias
gepostet am 22.01.2021 09:14
Hallo Bernhard,

danke für die Rückmeldung.
Wo wurden denn bei Dir die Ordner /docker/iobroker angelegt?

Du arbeitest doch auch mit Docker Desktop für Windows.

VG Tobias

Beitrag erstellt von Tobias
✍Bernhard
gepostet am 22.01.2021 09:16
Hallo Tobias, 

ich arbeite mit einem Linux-Rechner, dort gibt es keine Laufwerkbuchstaben, nur einen Mountpoint, in dem Fall /docker/iobroker, was in der Windows-Welt sowas wie c:\docker\iobroker ist ...

Beitrag erstellt von Bernhard

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details