ioBroker Simple API
Das Internet wie wir es heute kennen, basiert auf Schnittstellen. Über manche lassen sich Webseiten abrufen, andere sorgen für das Funktionieren von mobilen Apps. Zweifelsfrei funktioniert das Internet nicht ohne Schnittstellen. Schnittstellen werden aber auch abseits der Mensch-Maschine-Interaktion gebraucht. Bei mir im Smart Home ist aus diesem Grund die ioBroker Simple API von großer Bedeutung.
Wenn wir von der Simple API sprechen, bewegen wir uns im Bereich der Maschine-zu-Maschine-Interaktion. Und das ist wichtig. Denken wir nur mal an die ganzen Logistikprozesse hinter großen Online-Versandhändlern. Hier läuft ohne passende Schnittstellen überhaupt nichts mehr. Ein sehr gutes Stichwort dazu ist Supply-Chain-Management.
Doch in diesem Artikel soll es gar nicht um Logistik gehen. Zwar ist es ein tolles Beispiel für Schnittstellen, im Smart Home hilft es jedoch nur begrenzt weiter.
In meinem Blog habe ich schon öfter von der ioBroker Simple API gesprochen. Sie dient der Vernetzung verschiedener Systeme und bietet Möglichkeiten, die die Fähigkeiten der normalen Weboberfläche übersteigen. Blicken wir dazu in diesem Artikel genauer auf diesen Adapter und seine Einsatzmöglichkeiten im eigenen Smart Home.
Was ist eine API?
API ist eine Abkürzung und steht für Application Programming Interface. Im Deutschen spricht man hierbei von einer Programmierschnittstelle oder auch Anwendungsschnittstelle. Solche APIs gibt es innerhalb deines Computers jede Menge. So kommuniziert zum Beispiel dein Webbrowser über vorhandene APIs mit deinem Betriebssystem, um zum Beispiel diese Website anzeigen zu können. Für die Verwaltung ist dabei dein Betriebssystem zuständig.
Im Web sieht es dabei ähnlich aus. Ein System – in diesem Fall ioBroker – stellt für fremde Systeme Schnittstellen bereit, die angesprochen werden können. Streng genommen müsste man an dieser Stelle dann von einem Webservice sprechen, denn ioBroker bietet Schnittstellen über das Web an und ist somit ein kompletter Webservice.
Der Vorteil von diesen Webservices lässt sich dabei ziemlich einfach erklären. Über einheitliche Schnittstellen können fremde Systeme auf die Daten des Systems zugreifen und diese ändern oder nutzen. Welche Möglichkeiten dabei bereitgestellt werden, obliegt dem bereitstellenden System.
Nun ist es völlig irrelevant, was für ein System diese Schnittstellen nutzt, solange es sich an die Syntax hält. Das bedeutet, es muss die Schnittstelle in der Form aufrufen, wie sie bereitgestellt wird. Über diese Schnittstelle müssen die Daten in dieser Form versendet werden, wie es das zu empfangende System verlangt. Werden diese Richtlinien eingehalten, kann jedes System die Möglichkeiten des Webservices nutzen. Damit ist es zum Beispiel möglich, unter Linux Schnittstellen zu nutzen, die auf einem Windows-Server bereitgestellt werden und umgekehrt. Es ist auch nicht entscheidend mit welcher Software die Schnittstellen genutzt werden. Es kommt einzig und allein auf die richtige Syntax an.
Was bedeutet Syntax?
Damit du ein grundlegendes Verständnis für die Verwendung der ioBroker Simple API bekommst, ist die Klärung des Begriffs Syntax wichtig. Zumal ich diesen Begriff bereits mehrfach genutzt habe.
Vereinfacht gesagt beschreibt die Syntax das Regelwerk, nach denen Zeichen miteinander kombiniert werden dürfen. Hierbei gibt es zum Beispiel standardisierte Regelwerke oder selbst definierte. Standardisierte Regelwerke helfen dabei, über Systemgrenzen hinweg in einer einheitlichen Form zu kommunizieren. So akzeptieren zum Beispiel die meisten Systeme heute Daten in Form von JSON (Java Script Object Notation). Seltener kommt noch XML (Extensible Markup Language) zum Einsatz.
Die Syntax kennst du bereits aus deinem alltäglichen Leben. Aussagen in einer beliebigen Sprache werden durch die geltende Grammatik festgelegt. In der natürlichen Sprache bestimmt demnach die Grammatik die geltende Syntax.
Der Syntax gegenüber steht die sogenannte Semantik. Die Semantik beschreibt hierbei die Bedeutung von Wörtern und wird in der natürlichen Sprache häufig durch Interpretationen geprägt. Da ein Rechner die Interpretation aus der natürlichen Sprache so nicht kennt, ist in der Informatik vor allem die Syntax ein zentraler Baustein der Kommunikation.
Nutzung der ioBroker Simple API
Nachdem nun die Theorie soweit geklärt ist, geht es an die praktische Nutzung der Simple API. Dabei stellt sich schnell die Frage, wie kannst du die API sinnvoll einsetzen? Ein paar Nutzungsszenarien kannst du eventuell bei genauem Hinsehen schon meinem Blog entnehmen.
Ein tolles Beispiel ist in meinen Augen die Verknüpfung von Twitch mit ioBroker. Hierfür wird auf die Schnittstelle in Form der API zurückgegriffen. Ein Stück JavaScript stellt dabei die Brücke zwischen beiden Systemen her. So ist es zum Beispiel möglich, dass die Lampen aufleuchten, sobald jemand deinem Stream folgt oder eine Subscription hinterlässt.
Ebenso interessant ist in meinen Augen die Nutzung mit NFC-Tags. Hierfür kommt ein iPhone zum Einsatz, das über NFC verfügt. Anhand der jeweiligen Tags kann dann eine Aktion hinterlegt werden, die beim Entdecken ausgeführt wird. Diese Aktion ist in diesem Fall das Aufrufen einer URL, welche einen Statuswechsel in ioBroker vollzieht. Interessant daran ist nun, dass du als URL eine Adresse des Simple API Adapters angeben kannst. Dadurch wird beispielsweise ein vorhandener Datenpunkt von true auf false gesetzt oder umgekehrt. Auf diese Weise habe ich meine Anwesenheitserkennung im Smart Home umgesetzt.
Doch nicht nur für dich selbst kann die Schnittstelle interessant sein.
Fremde Systeme, die nicht direkt mit ioBroker kommunizieren können sind so dazu in der Lage, ihre Daten zu übermitteln. Innerhalb eines Strings kann so zum Beispiel ein bestimmter Text gesendet oder empfangen werden.
In der offiziellen Dokumentation sind alle zur Verfügung gestellten Methoden erklärt.
Sicherung der API
Im Heimnetzwerk oftmals vernachlässigt ist die Sicherung der API. Dabei ist das Thema enorm wichtig.
Über die API erhält man Zugriff auf sämtliche Datenpunkte von ioBroker und kann neue Werte setzen, alte Abfragen und auch togglen. Das macht die API sehr mächtig und kann in den Händen der falschen Personen schweren Schaden am Smart Home anrichten. Zwar müsste man zuerst Zugriff auf das Netzwerk bekommen, wer jedoch oftmals Besuch bei sich hat, gibt nicht selten auch Zugriff auf das eigene WLAN.
Der Adapter Simple API für ioBroker erlaubt die Sicherung der Schnittstellen entweder über die Beschränkung der zugelassenen IP-Adressen oder über die Nutzung von Zugangsdaten. In der Praxis macht je nach Gefahrengrad eine Absicherung über beide Methoden Sinn.
Neben diesen beiden Methoden kann auch noch die Verschlüsselung über HTTPS aktiviert werden. Innerhalb des eigenen Heimnetzwerks kann das zwar auch von Vorteil sein, ist jedoch noch interessanter, wenn es um externe Zugriffe geht. Wobei man im Grunde niemals das Smart Home System nach außen freigeben sollte. Auch wenn Hersteller es immer wieder empfehlen.
Ich habe die Verbindung zur API noch nicht per HTTPS abgesichert. Bei der nächsten Gelegenheit möchte ich das aber nachholen.
Welche Systeme können angebunden werden?
Ein in meinem Heimnetzwerk aktives System, das mit der Hilfe der Simple API angebunden werden kann, ist Motion. Dort lassen sich Endpunkte angeben, die bei bestimmten Ereignissen angesprochen werden sollen. Das funktioniert unter anderem durch sogenannte Webhooks, die ich dir in einem anderen Artikel schon genauer erklärt habe.
Motion erkennt anhand der eingerichteten Kameras Bewegung und ruft dann eine bestimmte Schnittstelle auf. Sobald die Bewegung nicht mehr erkannt wird, ruft Motion eine andere Schnittstelle auf. Diesen Mechanismus mache ich mir natürlich zunutze. So habe ich einen Datenpunkt für jede Kamera erstellt, der entweder auf true oder false steht. Sobald Motion nun Bewegung erkennt, rufe ich die entsprechende Schnittstelle auf und setze den gewünschten Wert. Ist die Bewegung vorüber, wird entsprechend der andere Wert gesetzt.
Dadurch, dass die ioBroker Simple API derart flexibel ist, lassen sich diverse Systeme anbinden. Hast du zum Beispiel ein weiteres System, das eine URL bei einem Ereignis aufrufen kann, funktioniert das definitiv mit ioBroker. Schreib mir gerne dazu mal in die Kommentare, welche Systeme du damit anbinden möchtest.
ioBroker geht den richtigen Weg
Mit der Schnittstelle geht ioBroker definitiv den richtigen Weg. Das Smart Home ist eine übergreifende Herausforderung. Es beschränkt sich in vielen Fällen leider darauf, dass du als Nutzer in einem bestimmten Kosmos gefangen wirst. Man denke dabei nur mal an HomeKit.
Durch die Bereitstellung von Schnittstellen öffnet man ioBroker jedoch bewusst für externe Systeme und gibt den Nutzern die Möglichkeit, weitere Gadgets anzubinden. Entwicklern wird es außerdem sehr leicht gemacht, dass Erweiterungen geschrieben und in Betrieb genommen werden können.
Dadurch, dass die API als zusätzlicher Adapter angeboten wird ist es außerdem möglich, das eigene System sehr flexibel anzupassen. Mehr überrascht bin ich allerdings von den umfassenden Möglichkeiten, wie die Schnittstelle abgesichert werden kann. Das macht es auch den Neulingen recht einfach, auf einen gewissen Schutz im Smart Home zu achten. Aber generell habe ich den Eindruck, dass ioBroker das Schützen des eigenen Smart Homes sehr einfach machen will und das ist gut so!
2 Kommentare
Andreas · 12. August 2024 um 20:13
Hallo,
Ist es möglich ein BEV mittels der auf folgendem Link bereitgestellten webhook api in Iobroker einzubinden?
Wie müsste ich das konfigurieren?
https://github.com/Ixam97/CarStatsViewer/blob/master/docs/APIDOC.md
Gruß Andreas
Lukas · 13. August 2024 um 07:57
Hallo Andreas,
grundsätzlich ist das möglich, ja. ioBroker stellt dafür die Schnittstelle bereit und der CarStatsViewer kann sie dorthin schicken.
Im Grunde musst du die Schnittstelle des ioBroker (SimpleAPI) nach außen erreichbar machen ohne VPN. Das birgt gewisse Risiken, weshalb ich da wirklich vorsichtig wäre.
Im ioBroker selbst hättest du dann einen Datenpunkt (den musst du dir selbst erstellen) in den erstmal alle Daten fließen. Im Anschluss daran kannst du mit einem Blockly Skript die Daten in einzelne Datenpunkte extrahieren und so in eine geordnete Struktur bringen.
Um den ioBroker nach außen erreichbar zu machen, braucht man entweder eine DynDNS-Adresse, eine eigene Domain und/oder eine feste IP-Adresse.
Im schlimmsten Fall können Personen dann jedoch Daten aus deinem Smart Home auslesen oder verändern. Daher muss man da sehr stark auf die Absicherung achten.
In meinen Augen wesentlich sinnvoller ist der Einsatz des SimpleAPI-Adapter in Kombination mit der ioBroker Cloud. Hier findest du ein paar Infos (scrolle etwas weiter runter zu „simpleAPI“): https://github.com/ioBroker/ioBroker.cloud
Dort gibst du das Sicherheitsthema quasi einfach an ioBroker ab und kannst trotzdem in den Genuss der API kommen.
Wichtig zu wissen ist allerdings, dass das wohl erst in der Pro-Version der Lizenz möglich ist und damit jährlich etwas kostet.
Smarte Grüße