Controller und Adapter

ioBroker besteht aus zwei Sorten von Programmen: dem js-controller und den Adaptern. Der Controller hält das System zusammen, die Adapter bringen die eigentlichen Funktionen mit.

Vom Adapter im Repository über die Instanz zu den Datenpunkten

Der Weg vom Adapter zu den Datenpunkten: installiert wird der Adapter einmal, laufen tun die Instanzen.

Der js-controller

Der js-controller ist der Kern jeder Installation. Auf jedem Host läuft genau einer. Er ist in TypeScript geschrieben und übernimmt vier Aufgaben:

AufgabeWas dahinter steckt
Instanzen verwaltenEr startet und beendet die Instanzen und startet sie bei Bedarf neu.
Daten haltenEr verwaltet die beiden Datenbanken, eine für die Objekte und eine für die Zustände.
KommunikationAlle Instanzen tauschen ihre Daten über ihn aus, nicht direkt untereinander.
ÜberwachungEr meldet, wenn eine Instanz nicht mehr läuft, der Speicher knapp wird oder ein Update bereitliegt.

?> Der js-controller wird nicht im Reiter Adapter aktualisiert, sondern über den Reiter Hosts oder über die Kommandozeile. Einzelheiten stehen unter ioBroker updaten.

Adapter

Ein Adapter bindet ein System an ioBroker an: ein Gerät, einen Dienst, ein Protokoll oder auch nur eine Datenquelle im Internet. Nach außen spricht er die Sprache des angebundenen Systems, nach innen legt er die Daten als Objekte und Zustände ab. Damit ist er die Schnittstelle zwischen ioBroker und allem, was nicht zu ioBroker gehört.

Was ein Adapter kann, hängt davon ab, wofür er geschrieben wurde. Typisch sind:

  • Daten holen. Messwerte, Zustände und Meldungen des angebundenen Systems landen als Datenpunkte in ioBroker.
  • Steuern. Geräte ein- und ausschalten, Werte setzen, Befehle absetzen.
  • Aufzeichnen. Werte für die spätere Auswertung speichern, etwa history, influxdb oder sql.
  • Visualisieren. Oberflächen bereitstellen, etwa vis-2 oder lovelace.
  • Automatisieren. Abläufe nach Bedingungen oder Zeitplänen auslösen, etwa javascript oder scenes.
  • Benachrichtigen. Nachrichten versenden, etwa telegram oder email.
  • Betreuen. Sicherungen anlegen, Firmware aktualisieren, das System überwachen.

Bekannte Beispiele sind der Zigbee-Adapter für Funkgeräte, der MQTT-Adapter für alles, was dieses Protokoll spricht, und der JavaScript-Adapter für eigene Skripte und Blockly.

Vorteile

  • Flexibilität. Fast jedes System lässt sich anbinden, unabhängig von seinem Protokoll.
  • Erweiterbarkeit. Für neue Geräte kommen neue Adapter dazu, ohne dass sich am Rest der Installation etwas ändert.
  • Zentralisierung. Alle angebundenen Systeme werden an einer Stelle verwaltet und lassen sich miteinander verknüpfen.

Adapterkategorien

Jeder Adapter trägt eine Kategorie, nach der sich die Liste im Reiter Adapter filtern lässt: alarm, climate-control, energy, hardware, lighting, logic, multimedia, weather und weitere. Die vollständige Liste mit Erläuterungen steht unter Adapter veröffentlichen.

Instanzen

Ein installierter Adapter läuft noch nicht. Dazu wird eine Instanz angelegt, und erst diese Instanz arbeitet. In ihr steht die Konfiguration, etwa die Adresse des Gateways oder die Zugangsdaten.

Von einem Adapter kann es mehrere Instanzen geben. Das ist immer dann sinnvoll, wenn dasselbe System mehrfach vorhanden ist oder wenn Aufgaben getrennt bleiben sollen: hm-rpc.0 für die Funkschnittstelle und hm-rpc.1 für die verdrahtete, zwei telegram-Instanzen für zwei Empfängerkreise.

Jede Instanz bekommt einen eigenen Namensraum im Objektbaum, der aus dem Adapternamen und einer laufenden Nummer besteht, zum Beispiel hm-rpc.0. Darunter legt die Instanz ihre Geräte, Kanäle und Datenpunkte an.

Angelegt und konfiguriert werden Instanzen im Reiter Instanzen. Mehr zur Datenstruktur steht unter Objekte und Zustände.