Architektur des ioBroker
Suchergebnisse
Der ioBroker ist modular aufgebaut und besteht aus mehreren Komponenten. In der Mitte steht das Herzstück des Systems: Der js-controller.
Dieser Controller verwaltet alles im System. Von dort werden die einzelnen Instanzen gestartet und mit diesen kommuniziert.
Adapter
Ein Adapter ist ein Stück Software, welches eine bestimmte Aufgabe übernimmt. Diese Aufgabe kann alles mögliche sein.
Es gibt daher verschiedenste Adapter, welche beispielsweise
- mit Hardware kommunizieren (Philips Hue, KNX, HomeMatic, Loxone, ...)
- Daten aus dem Internet abrufen (Wetter, Verkehr, ...)
- Logiken bereitstellen (Szenen, Regeln, ...)
- Schnittstellen in den ioBroker von außen öffnen / Cloud-Verbindungen (Zugriff von unterwegs)
- verschiedene Visualisierungsoberflächen bereitstellen (Steuerung per Tablet)
- den Sonnenstand berechnen
- Feiertage für dein Bundesland ermitteln
- die Administrationsoberfläche bereitstellen (admin)
- Backups erstellen
- Verbindungen zu Datenbanken herstellen
- uvm.
Die Liste der verfügbaren Adapter ist extrem lang und umfasst mittlerweile über 400 verschiedene Integrationen.
Diese Liste ist ein Baukasten. Was man braucht wird dazu installiert. Was nicht gebraucht wird, wird nicht installiert. Ganz einfach. Bei einer neuen ioBroker-Installation wird nur eine Hand voll Adapter mitgeliefert. Der Rest muss manuell installiert und konfiguriert werden.
Damit der richtige Adapter für eine Aufgabe einfacher gefunden werden kann, sind Adapter in verschiedene Kategorien eingeteilt. Unter anderem:
- Allgemein
- Aufbewahrung
- Visualisierung
- Energie
- Logik
- ...
Instanzen
Eine Instanz ist am Ende der eigentliche Prozess, welcher für einen Adapter gestartet wird. Für (fast) jeden Adapter können beliebig viele Prozesse (Instanzen) gestartet werden.
Ein Beispiel: Es soll auf einem PC ein Brief geschrieben werden. Microsoft Word ist dabei also der Adapter und wird einfach nur einmalig installiert. Danach können aber beliebig viele Word-Dokumente parallel geöffnet werden, ohne das Programm Word mehrfach installiert werden muss. Diese Prozesse sind dann die Instanzen. Was genau diese Dateien darstellen, hängt von der geöffneten Word-Datei ab - diese Datei wäre dann im ioBroker-Umfeld die Instanz-Konfiguration.
Warum sollte man mehrere Instanzen von einem Adapter erstellen? In der Praxis kommt das relativ selten vor. Aber angenommen es gibt mehrere Hue-Bridges von Philips im Haus. Dann würde jede Instanz die Kommunikation mit genau einer Hue-Bridge übernehmen. Man bräuchte also genau so viele Instanzen des Hue-Adapters wie Hue-Bridges vorhanden sind.
Ein weiteres Beispiel wären die Wetterdaten von verschiedenen Orten. Möchte man an seinem Wohnort die Regenwahrscheinlichkeit ermitteln, wird ein Wetter-Adapter installiert und eine Instanz mit dem Heimatort konfiguriert. Soll dann aber noch das Wetter beim Ferienhaus integriert werden, wird eine weitere Instanz erstellt, welche auf den entsprechenden Ferienort konfiguriert wird (und somit von dort die Daten liefert).
Da es also mehrere Instanzen vom gleichen Adapter geben kann, werden diese Instanzen durchnummeriert. Standardmäßig startet die Numerierung bei 0 (numerisch Null). In diesem Beispiel also:
hue.0hue.1hue.2
Von den meisten Adaptern wird man aber nur eine einzelne Instanz erstellen, welche die Nummer 0 bekommt. Nur in seltenen Fällen werden mehrere Instanzen von einem Adapter erstellt. Manche Adapter verbieten sogar das erstellen von mehreren Instanzen, weil es aus technischer Sicht keinen Sinn ergibt, mehrere Instanzen dieses Adapters zu haben. Das kommt aber sehr selten vor.
Jede Instanz wird dabei (normalerweise) in einem eigenen Prozess gestartet. Das hat den Vorteil, dass der Prozess das restliche System nicht so stark beeinflussen kann. Sollte also ein Adpater abstürzen oder wegen einem Fehler nicht mehr starten, funktionieren die anderen ioBroker Adapter-Instanzen trotzdem weiter! Dieses Vorgehen braucht zwar deutlich mehr Ressourcen als bei vergleichbaren Lösungen, aber sorgt für viel mehr Stabilität. Um Ressourcen zu sparen, kann (zu lasten der Stabilität) der Compact-Mode aktiviert werden.
Selbst die Admin-Oberfläche ist nur eine Instanz eines Adapters, welche (genau wie alle anderen Instanzen) mit dem js-controller spricht. Theoretisch könnte man den ioBroker auch komplett ohne den Admin-Adapter betreiben. Dieser bietet einfach nur eine möglichst komfortable Oberfläche um das System zu verwalten.
js-controller
Kommen wir noch einmal zurück zum angesprochenen js-controller. Dieser startet die Prozesse der einzelnen Instanzen und verwaltet die Kommunikation mit diesen.
Bleiben wir bei dem Beispiel von Philips Hue. Nachdem also eine neue Instanz für den installierten Adapter gestartet wurde, legt die laufende Instanz des Adapters sogenannte "Objekte" an, welche die Räume, Szenen und Lampen repräsentieren, welche die Philips Hue Bridge kennt. Diese Objekte kann er aber nicht selbst anlegen, sondern nur den js-controller darum bitten dies zu tun. Also sendet der Hue-Adapter eine Nachricht an diesen Prozess, und übermittelt die Informationen zum Anlegen der Objekte.
Genauso können sich Adapter-Instanzen beim js-controller registrieren, dass diese bestimmte Informationen nutzen möchten. Angenommen die Visualisierung möchte immer den aktuellen Status von Philips Hue Lampen auf einer Webseite darstellen. In dem Fall würde der Adapter der Visualisrung den js-controller bitten, bei jeder Änderung eines Status im Philips Hue Adapter informiert zu werden. So wird vermieden, dass jede Instanz über jede Änderung im System informiert wird. Ansonsten würden ohne Ende irrelevante Nachrichten durch das System gesendet. Und das vermeidet dieses Konzept.
Was genau diese "Objekte" sind und wie der js-controller Daten speichert, wird im nächsten Abschnitt unter Daten-Speicherung erklärt.