🏠 Visuelle Erklärung

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?

Im Zentrum steht der js-controller mit zwei Datenbanken: Objects (Beschreibung) und States (aktuelle Werte). Adapter-Instanzen sind eigenständige Prozesse, die Geräte und Dienste anbinden und nur über diese Datenbanken miteinander reden.
🖥️ Host „iobroker-musterhaus“ (Master)🖥️ „iobroker-keller“AußenweltInstanzenKernSpeicherLaufzeitRedis-Protokoll (TCP)TCP 9000/9001🌐 Browser:8081📡 CCUHomeMatic💡 ShellyWLAN🔊 SonosLAN🔌 Zigbee-StickUSBadmin.0javascript.0history.0hm-rpc.0shelly.0sonos.0🧠 js-controllerstartet & überwacht🗃️ Objects-DBPort 9001⚡ States-DBPort 9000💾 /opt/iobroker/iobroker-dataobjects.jsonl · states.jsonl · files/🟩 Node.js🐧 Linux (Installer) oder 🐳 Docker-Imagezigbee.0🧠 js-controllerohne eigene DB

👆 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

Ein Adapter ist das installierte Programm (npm-Paket), eine Instanz ist eine konfigurierte, laufende Ausprägung davon – erkennbar an der Nummer: hm-rpc.0, hm-rpc.1 …
Schritt 1 / 7 · Tasten ← →

Adapter installieren

$ iobroker install hm-rpc

Das npm-Paket iobroker.hm-rpc wird geladen. Es entsteht das Adapter-Objekt system.adapter.hm-rpc – noch keine Instanz, also nichts, was läuft.

Was sich in den Datenbanken ändert (Auszug)
{
"system.adapter.hm-rpc": {
"type": "adapter",
"common": {
"name": "hm-rpc",
"mode": "daemon"
}
}
}
💡 Betriebsarten (common.mode)
daemon läuft dauerhaft (z. B. hm-rpc), schedule startet zeitgesteuert und beendet sich wieder, once läuft einmal nach dem Start, none ohne eigenen Prozess (reine Oberflächen/Dateien), extension erweitert einen anderen Adapter (z. B. den Webserver).
✅ Drei Ampeln je Instanz
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.
⚠️ Mehrere Instanzen
Zwei CCUs oder zwei Wetterdienst-Konten? Einfach eine zweite Instanz anlegen. Jede hat ihren eigenen Namensraum und ihre eigene Konfiguration.

🗄️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