Der Aufbau von ioBroker – unter der Haube
Jede Software hat ihren ganz eigenen Aufbau. Das erkennt man bereits, wenn man einen Blick auf die unterschiedlichen Lösungen im Smart Home wirft. In diesem Beitrag möchte ich gemeinsam mit dir einen Blick unter die Haube und damit auf den Aufbau von ioBroker werfen. Dabei wird der Artikel die Grundlage dafür legen, dass wir gemeinsam die beiden Systeme ioBroker und OpenHAB miteinander vergleichen.
Denn zu einem Vergleich gehört nicht nur die Oberfläche, sondern auch die Arbeitsweise und die Struktur, wie mit unterschiedlichen Bestandteilen umgegangen wird. Ich verstehe, dass nicht jeder das Verständnis für den Aufbau einer komplexen Software hat, doch ich werde es dir möglichst verständlich erklären.
Für mich persönlich sind diese Details sehr interessant. Wie du vielleicht schon weißt, arbeite ich selbst als Softwareentwickler und bin daher stets daran interessiert zu sehen, wie es andere denn machen. Einige Konstrukte lassen sich dabei nämlich auch auf eine Software anderer Branchen übertragen.
Der Aufbau von ioBroker
Grundsätzlich findest du im System unterschiedliche Bestandteile, die für eine Integration der Geräte sorgt. Es gibt Adapter, Instanzen, Objekte und Hosts. Selbstverständlich gibt es noch weitere Menüpunkte innerhalb von ioBroker, jedoch handelt es sich bei diesen vier um die elementarsten Bestandteile des Systems. Man kann quasi sagen, dass ohne diese vier Mitspieler nichts funktioniert.
Nachfolgend wollen wir zum Einstieg verstehen, was sich hinter diesen vier Worten versteckt und welche Aufgaben diese Bestandteile im System übernehmen.
Der Host
Wörtlich übersetzt bedeutet Host so viel wie Gastgeber oder Veranstalter. Technisch gesehen handelt es sich hierbei jedoch eher um einen Anbieter, der einen Dienst oder eine Anwendung bereitstellt. Man kann also sagen, dass der Host ein virtueller oder physischer Dienstleister ist, der die Software betreibt.
Ein solcher Host ist physisch, wenn es sich dabei um einen richtigen Rechner handelt, den du auch im echten Leben anfassen kannst. Virtuell ist er hingegen, wenn der Host immateriell ist und du ihn nicht mit deinen Händen berühren kannst. Das kann genau dann der Fall sein, wenn dieser Host innerhalb einer Virtualisierungssoftware betrieben wird.
Aber Achtung! Du darfst nun nicht die Virtualisierungssoftware mit der eigentlichen Software verwechseln. Die Software zur Virtualisierung wird ebenfalls auf einem physischen Host installiert. Jedoch ist deine Anwendung (in diesem Fall ioBroker) nicht auf diesem physischen Gerät, sondern innerhalb einer virtualisierten Umgebung und damit ein virtueller Host.
Im Hinblick auf ioBroker ist der Host also das Gerät, welches die Software enthält mit der du interagieren und dein Smart Home gestalten kannst.
Die Adapter
Innerhalb deines Hosts kannst du unterschiedliche Erweiterungen installieren. Diese Erweiterungen geben dem System die Möglichkeit, mit verschiedenen Geräten zu kommunizieren. Diese Geräte sind zum Beispiel Steckdosen, Staubsaugerroboter oder Lampen.
Vereinfacht kann man sagen, dass ein Adapter eine eigene kleine Software ist, die ioBroker die Sprache der einzelnen Geräte beibringt. Es ist, als würdest du eine neue Sprache lernen, wodurch du mit mehr Menschen kommunizieren kannst.
Ein Adapter kann dabei auf dem System installiert werden, muss es jedoch nicht. Du wählst aus der Vielzahl selbst diejenigen aus, die du in deinem Zuhause benötigst. Die Auswahl basiert dabei auf den Geräten in deinem Smart Home. Für jedes unterschiedliche (!) Gerät benötigst du einen Adapter. Über verschiedene interne Schnittstellen werden diese Adapter die Geräte einheitlich in das System integrieren. Sie dienen dadurch nicht nur als Vermittler für die Befehle, sondern auch zur Vereinheitlichung innerhalb des ioBrokers.
Die Instanzen eines Adapters
Eine Instanz ist eine zustände Stelle, die Entscheidungen für einen konkreten Fall übernimmt. Das klingt nun weitaus wilder und komplizierter, als du es dir vorstellen musst.
Instanzen bilden sich aus den unterschiedlichen Adaptern. Das bedeutet, wenn ich eine Instanz eines Adapters habe, ist diese für die Steuerung sämtlicher Geräte zuständig, die du ihr zuweist. Erstellst du hingegen für jede Lampe (am Beispiel von Philips Hue) eine eigene Instanz, steuert jede Instanz genau eine einzige Lampe.
Gewöhnlich hat jeder Adapter genau eine Instanz und diese kontrolliert alle Geräte, für die sie die entsprechende Kompetenz besitzt. Eine Instanz ist damit ein gestarteter Adapter innerhalb eines kleinen isolierten Bereichs deines Hosts. Stürzt nun eine Instanz aufgrund eines Fehlers ab, sind andere Instanzen nicht betroffen (außer sie stoßen auf den gleichen Fehler).
Du kannst es dir wie in einem Unternehmen mit unterschiedlichen Fließbändern vorstellen. Es gibt vier Fließbänder, auf denen die gleichen Produkte gefertigt werden. Bleibt nun ein Fließband stehen, werden die anderen drei Fließbänder weiterhin funktionieren und die Produktion steht nicht still, sondern ist lediglich reduziert. Stürzt in ioBroker eine Instanz ab, fällt nur genau dieser Teil weg, alle anderen Teile des Systems können aber weiterhin arbeiten.
Die Objekte
Aus den unterschiedlichen Instanzen, die aus einem bestimmten Adapter resultieren, entstehen die sogenannten Objekte. Ein Objekt ist ein konkretes Gerät in der physischen Welt, mit dem ioBroker interagieren kann.
Wenn du beispielsweise eine Instanz des Philips Hue Adapters hast, so wird es mehrere Objekte geben. Diese Objekte sind deine einzelnen Lampen, die du getrennt voneinander ansteuern kannst. Dabei haben Objekte unterschiedliche Eigenschaften. Diese Eigenschaften können bei einer Lampe zum Beispiel der Status (Ein/Aus) oder der aktuelle Farbwert (Rot, Grün, Blau) sein.
Je nachdem, um welches Gerät es sich handelt, gibt es unterschiedliche Eigenschaften. Durch die Manipulation dieser Eigenschaften verändert sich der Zustand deines Objekts. Wenn du bei einer Lampe die Eigenschaft Status manipulierst, wird sie entweder ein- oder ausgeschaltet.
Die Befehle wandern dabei vom Objekt an die Instanz, von der Instanz zum Adapter und von dort weiter zu deinem Gerät. Ebenso können die aktuellen Werte umgekehrt von deinem Gerät abgerufen werden. Wenn du zum Beispiel deine Lampe mit der App des Herstellers anders einstellst, wird ioBroker die Daten in kurzer Zeit abrufen und entsprechend darstellen.
Eine Besonderheit von ioBroker: Multihost
Ich habe dir gerade den Aufbau eines einzelnen ioBroker-Systems erklärt. Nun bietet ioBroker jedoch auch die Möglichkeit, dass du mehrere Systeme parallel betreiben kannst. Diese können entweder isoliert voneinander arbeiten oder zusammen für den Betrieb deines Smart Homes sorgen.
Betreibt man mehrere Systeme in Kombination, spricht man von Multihost. Dabei gibt es die sogenannten Master und Slaves. Ein Master ist dabei das System, welches über alle weiteren Systeme den Überblick hat und gewissermaßen der Chef ist. Slaves hingegen sind einzelne und meist kleinere Systeme, die sich auf eine bestimmte Teilaufgabe spezialisieren.
Bei dem Multihost-System landen schlussendlich alle Objekte beim Master und können so wiederum einheitlich gesteuert und kontrolliert werden. Dabei wandern die einzelnen Befehle natürlich nicht direkt an die Geräte, sondern nehmen den Umweg über den Slave, der sie schlussendlich an die Geräte weitergibt.
Ein Multihost-System kann zum Beispiel dann interessant sein, wenn du spezielle Aufgaben an dein System delegierst, die GPIOs erfordern. Dann kann ein Raspberry Pi als Slave eingesetzt werden. Alternativ lassen sich physisch gesehen damit auch unterschiedliche Hierarchien bilden, wobei schlussendlich alle Geräte auf einem zentralen und leistungsstarken Server ankommen.
Die Programmierung von ioBroker
Bei ioBroker handelt es sich um ein System, welches in JavaScript realisiert wurde. Aus diesem Grund brauchst du zum Betrieb die Software NodeJS. Der Einsatz von JavaScript findet sich hauptsächlich auf Websites, wo diese Programmiersprache unterschiedliche Aufgaben übernehmen kann. In heutigen Websites ist nahezu überall JavaScript enthalten.
Wer jedoch Software mit dieser Programmiersprache außerhalb des Browsers ausführen möchte, ist auf zusätzliche Tools angewiesen. Wie eben erwähnt, ist NodeJS eines dieser Tools.
Diese Technologie erlaubt es ioBroker allerdings, dass auch fremde Pakete integriert werden können, für die es bislang keinen Adapter gibt. Damit lässt sich ioBroker ideal erweitern und stellt auch für Bastler eine zufriedenstellende Lösung dar.
Betrachtet man auch mal die Erstellung von Regeln so fällt auf, dass es eine leichte Variante und eine schwere Variante gibt. Die leichte Variante sieht die Erstellung von Regeln mit einer grafischen Oberfläche vor, während die schwere Variante vollständig auf eigenen Code setzt. Das bedeutet, dass man in seinem Smart Home keinen Experten aus der Entwicklung mehr benötigt, sondern viele Dinge auch ganz einfach selbst umsetzen kann.
0 Kommentare