Achtung: Diese Seite enthält Partner- und Werbe-Links. Daher ist diese Seite im Gesamten als Werbeanzeige zu verstehen!
Mit meinem Umzug nach Weingarten wollte ich auch den Smart-Home-Gedanken weiter ausbauen und Fehler oder Probleme aus meiner alten Wohnung von Anfang an vermeiden. Dass meine Phillips Hue Lampen und auch meine Teufel Raumfeld Boxen nicht ohne Weiteres mit meinem Amazon Echo Dot kompatibel sind, wusste ich schon aus etlichen Versuchen. Schon mit der iPhone-App ulreco hatte ich 2014 ein Programm geschrieben, das als virtuelle Brücke zwischen all den verschiedenen Smart-Home-Geräten vermittelt hat. Für mein neues Szenario hatte ich mir OpenHAB ausgesucht. Eine quelloffene Software, die sich auf einem Raspberry Pi betreiben lässt und quasi jedes IOT-Gerät zu steuern vermag.
Glücklicherweise haben die Macher von OpenHAB ihre Software direkt in eine eigene Linux-Distribution gepackt, die sich als openHABian herunterladen und auf einem Raspberry Pi installieren lässt. Für das Formatieren der SD-Karte habe ich das neue Tool Etcher verwendet. Das Tool kopiert das Betriebssystem-Image auf die SD-Karte auf eine sehr bequeme Art und sorgt dafür, dass man nicht versehentlich die Festplatte des eigenen Macs formatiert.
Die letztlich formatierte SD-Karte muss einfach in den Raspberry Pi gesteckt werden. Wenn der Mini-Computer am Strom und Internet hängt, richtet sich openHABian vollkommen automatisch ein. Bei mir hat diese automatische Installation ungefähr eine Stunde in Anspruch genommen. Die genaue Installationsanleitung kann auf der Seite von openHABian gefunden werden.
Die Konfiguration von OpenHAB ist genauso kompliziert wie auch flexibel und besteht darin, verschiedenste Geräte und Datenquellen semantisch korrekt miteinander zu verknüpfen. Macht man das richtig, wird später automatisch ein Benutzerinterface generiert und es wird möglich, mit Regeln allerlei smarte Dinge zu steuern. Es gibt einige Benutzeroberflächen um eine solche Konfiguration zu erstellen. Wer aber wirklich Herr über sein Smart Home sein will, sollte direkt mit der textbasierten Konfiguration starten, da nur diese den gesamten Funktionsumfang von OpenHAB abdeckt.
Mit sogenannten Things werden zuerst alle sich tatsächlich im Smart Home befindlichen Geräte erfasst - also beispielsweise Lampen, Lautsprecher oder auch Web-Server die nur Daten liefern. Im zweiten Schritt werden dann Items angelegt. Das ist am Beispiel von Lautsprechern die Lautstärke oder die Adresse zum Album-Cover. Items sind virtuell, das heißt, ich kann für mein Licht auch einen "Partymodus"-Schalter erstellen und später darauf reagieren. Diese Items werden abschließend kontextsensitiv in Sitemaps zu einem User-Interface gruppiert. Anders formuliert ist eine Sitemap also eine Fernbedienung, die je nach Situation nur die richtigen und auch benötigten Tasten und Informationen anzeigt.
Damit erstellte Schalter auch funktionieren, müssen unter der Haube auch Bindings konfiguriert werden. Ein Binding stellt die Anbindung an ein Smart-Home-Gerät dar, ganz egal ob Phillips Hue-Lampe oder die Web-Server-URL der Lautsprecher, welche die aktuelle Lautstärke im Büro zurück gibt. Somit kann beispielsweise ein Lautstärke-Regler an diese Lautstärke gebunden werden, die sich per http-Binding alle zwei Sekunden aktualisiert und auch initial den richtigen Wert anzeigt.
Alle von Bindings gelieferten Antworten, also Informationen über das Smart Home wie die Raumtemperatur oder Helligkeit der Deckenlampe im Badezimmer müssen durch Hinzuziehen einer Transformation bereinigt werden. Schickt meine Box also neben der Lautstärke auch Informationen über Interpret und Album, muss die Transformation diese Informationen so verändern, dass lediglich die Lautstärke als Zahl enthalten bleibt. Solche Transformationen müssen quasi immer selbst geschrieben und auf das eigene Smart-Home-Setup angepasst werden. Ich persönlich schreibe die meisten Transformationen in JavaScript oder JsonPath.
Ist das alles erledigt, kann abschließend mit den Rules zwischen allen Items und den dahinterliegenden Things vermittelt werden. An dieser Stelle wird letztlich auch der "Partymodus"-Schalter mit Funktion belegt. Und zwar insofern, dass auf seinen Zustandswechsel (also an- oder ausgeschaltet) mit einem Ereignis reagiert wird, dass dann je nach Schalterstellung die Lampen bunt oder eben normal färbt. So ist es letztlich möglich, auch komplexe Regeln beispielsweise unter Einbindung von Wetter- oder anderen Sensorikdaten zu erzeugen die dem Partymodus-Schalter beibringen, die Musik doch ab 22 Uhr etwas leiser anzuschalten.
Außerdem wäre es noch möglich, Items in Gruppen zu stecken sowie verschiedene Möglichkeiten der Persistence- also die Art und Weise, wie Daten gespeichert werden - zu wählen, was aber an dieser Stelle keine größere Relevanz hat.
Mit dem Eclipse SmartHome Designer existiert außerdem ein Tool, das zumindest versucht, die Konfiguration der einzelnen Smart-Home-Geräte zu vereinfachen. Anfangs habe ich nur mit dieser Eclipse-Variante gearbeitet, bin dann aber schnell zurück in die Welt der JetBrains-IDE geflüchtet und habe den Eclipse SmartHome Designer nur noch sporadisch benutzt um auf die Code-Autokomplettierung zurückzugreifen, wenn ich mir bei einer Schreibweise nicht zu 100% sicher war.
Ich werde in den nächsten Wochen und Monaten noch einige Blog-Artikel zum Thema Smart Home und OpenHAB veröffentlichen. Diese kleine OpenHAB-Einführung macht hiermit den Anfang. Aktuell sammle ich noch Erfahrungen und versuche, das System nach bestem Wissen und Gewissen zu konfigurieren, bevor ich darüber schreibe. Ich habe allerdings schon mehrere Tausend Zeilen Code in meine Smart-Home-Konfiguration investiert. Sobald meine Integration von Teufel Raumfeld und Phillips Hue abgeschlossen ist, werde ich den Amazon Echo Dot einbauen sowie mich nach Anbindungen für die Geräte der Elgato Eve-Reihe und meiner SenseBox umsehen.