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
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
Software | IoBroker |
---|---|
GitHub | https://github.com/ioBroker/ioBroker |
aktuelle Version | 2024-10-22-2 |
gefunden | 23.10.2024 |
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:
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.
{{percentage}} % positiv
DANKE für deine Bewertung!
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]
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?
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
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
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
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
Moin, kannst du mir Verraten wie ich den Docker updaten kann und wofür die ganzen Ports gut sind?
Hallo, Du erwähnst in dem Befehl viele Ports. Wofür sind sie bzw. welche sind denn tatsächlich nötig ? Grüße Martin
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
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
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
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