ioBroker – wie es innen funktioniert
ioBroker ist eine quelloffene Plattform für Hausautomation: Sie verbindet Geräte vieler Hersteller über Adapter, legt alles in einem gemeinsamen Objektbaum ab und lässt Skripte und Oberflächen darauf zugreifen. Hier wird das an einem erfundenen Musterhaus erklärt – interaktiv und Schritt für Schritt.
🏗️Aufbau: wer macht was?
👆 Auf einen Baustein klicken. Gestrichelt: Steuerung bzw. Netzverbindung des zweiten Hosts. Alle Namen und Adressen sind Beispiele.
js-controller – der Kern
Auf jedem Host läuft genau ein js-controller. Er stellt (auf dem Master) die Datenbanken bereit, startet jede aktivierte Instanz als eigenen Node.js-Prozess, überwacht sie und startet sie nach Absturz neu. Bedient wird er mit dem Befehl iobroker (Kurzform iob).
- ▸Aktuelle Hauptversion laut README: js-controller 8.x „Nicole“ – läuft mit Node.js 22.x, 24.x und 26.x
- ▸Host-Objekt:
system.host.iobroker-musterhaus - ▸Instanzen können optional im „compact mode“ gemeinsam in einem Prozess laufen (spart RAM)
iobroker status iobroker start | stop | restart iobroker list instances iobroker upgrade self # js-controller aktualisieren
🔁Adapter und Instanzen – der Lebenszyklus
hm-rpc.0, hm-rpc.1 …Adapter installieren
$ iobroker install hm-rpcDas npm-Paket iobroker.hm-rpc wird geladen. Es entsteht das Adapter-Objekt system.adapter.hm-rpc – noch keine Instanz, also nichts, was läuft.
{"system.adapter.hm-rpc": {"type": "adapter","common": {"name": "hm-rpc","mode": "daemon"}}}
alive (Prozess läuft), connected (mit dem Controller verbunden) und info.connection (mit dem Gerät/Dienst verbunden) – zusammen ergeben sie die Farbe in der Instanzliste.🗄️Datenbanken: jsonl, file oder Redis?
📄 jsonl (Standard)
In-Memory-Datenbank im js-controller, gespeichert als JSON-Lines-Dateien (objects.jsonl, states.jsonl). Standard für Neuinstallationen seit js-controller 4 – nichts extra zu installieren.
🗂️ file (älter)
Ebenfalls In-Memory, speichert aber jeweils die komplette JSON-Datei. Der Vorgänger von jsonl; bei großen Datenmengen langsamer beim Schreiben.
🟥 Redis
Eigener Datenbankdienst, schneller und belastbarer. Laut README ab etwa 10 000 Objekten oder bei sehr häufigen Updates empfohlen. Ohne laufendes Redis startet ioBroker dann nicht mehr.
$ iobroker stop $ iobroker setup custom # fragt nacheinander: Typ der Objects-DB (jsonl / file / redis), Host und Port (Standard 9001), # danach dasselbe für die States-DB (Standard-Port 9000) – vorhandene Daten können migriert werden $ iobroker start
📦Installation
🐧 Linux-Installer
Auf Debian, Ubuntu oder Raspberry Pi OS als normaler Benutzer (nicht root) ausführen. Der Installer richtet Node.js, den Benutzer iobroker, das Verzeichnis /opt/iobroker und den Systemdienst ein.
curl -sLf https://iobroker.net/install.sh | bash - # danach im Browser: http://<server>:8081
🐳 Docker
Das Community-Image buanet/iobroker (auch als iobroker/iobroker). Wichtig ist ein Volume für /opt/iobroker, sonst ist beim Neuerstellen alles weg.
services:
iobroker:
image: buanet/iobroker:latest
hostname: iobroker-musterhaus
restart: unless-stopped
ports:
- "8081:8081"
volumes:
- ./iobrokerdata:/opt/iobroker🧭Kapitel
Objekte & States
Objektbaum des Musterhauses, ID-Zerleger, Objekttypen, Rollen, common/native und der Aufbau eines States.
ack-Debugger
App schaltet Lampe → Adapter → Gerät → Bestätigung. Warum ack:false ein Befehl ist – Schritt für Schritt.
Enums, Aliase, Historie
Räume × Funktionen, Aliase mit Umrechnung, Beispielkurven und was „nur Änderungen speichern“ bringt.
Skripte & Blockly
on(), setState(), getState(), schedule() – drei Beispiele als Blockly-Blöcke und als JavaScript.
Simulator
Das Musterhaus live: Skripte aktivieren, Bewegung auslösen, Zeit vorspulen – Log und States zusehen.
Ökosystem
Visualisierungen, Adapter-Kategorien, MQTT, Backup, Updates, Sicherheit und der Vergleich mit Home Assistant und openHAB.