Wetterfühlig mit Eclipse SmartHome

Wer beliebige Geräte im Smart Home einbinden möchte, findet mit Eclipse SmartHome ein passendes Framework. Das soll die Erstellung eines Plug-ins beziehungsweise Binding für die Netatmo-Wetterstation zeigen.

Werkzeuge  –  4 Kommentare

Eclipse SmartHome (ESH) ist ein Framework für das vernetzte Zuhause, das sogenannte Smart Home. Wie der Name bereits vermuten lässt, wird das Framework von der Eclipse Foundation gesponsort und weiterentwickelt.

Ziel des Frameworks ist es, Geräte verschiedener Hersteller miteinander zu verbinden und eine einheitliche Schnittstelle zu diesen zu erschaffen, über die Anwender die Geräte steuern können. Sie können auch Automatisierungsregeln definieren wie folgende: Wenn sich der Anwender mit seinem Handy dem Haus nähert, geht automatisch das Licht an.

Dieser Artikel beschreibt die Entwicklung eines Binding für Eclipse SmartHome, das die Netatmo-Wetterstation integriert. Die Station kann die aktuelle Raumtemperatur, Luftfeuchte, den CO2-Gehalt und weitere Informationen auslesen.

Um das Binding in Eclipse SmartHome auszuführen, wird eine Laufzeitumgebung benötigt. Eine soclhe stellt openHAB 2 bereit. Der komplette Quelltext des Binding befindet sich auf GitHub.

Im Inneren der Bindings

Ein Binding ist für das Einbinden von Geräten in Eclipse SmartHome zuständig. Ein Gerät wird dabei als "Thing" bezeichnet und jedes Binding kann mehrere davon anbinden. Jedes Thing besteht aus mehreren "Channels", die die Funktionen des Geräts repräsentieren. Das Thing der Netatmo-Wetterstation verwendet drei Channels: einen für die aktuelle Temperatur, einen für die Luftfeuchtigkeit und einen für den CO2-Gehalt der Luft. Jeder Channel verwendet einen bestimmten Typ. Im Falle der Wetterstation sind es jeweils Zahlen, aber es gibt andere Typen wie Schalter, Dimmer und Farben (siehe Eclipse SmartHome Dokumentation).

Die SmartHome-Benutzeroberfläche kann zu jedem Channel mehr Kontext, etwa ein passendes Icon, bereitstellen. Damit das funktioniert, muss der Entwickler des Binding dem Channel eine Kategorie zuordnen. Channels können les- und schreibbar oder nur lesbar sein. Bei der Netatmo-Wetterstation lassen sie sich nur lesen, da die Wetterstation nicht über eine Steuerungsfunktion verfügt. Bei einem Thermostat ist dagegen denkbar, dass ein schreibbarer Channel existiert, der die Zieltemperatur im Raum regelt. Um ein Thing zu verwalten, wird ein ThingHandler implementiert, der sich um das Aktualisieren der Channels kümmert und auf Kommandos reagiert. Abbildung 1 zeigt die Bestandteile eines Binding in einer Übersicht.

Architektur eines Binding mit Thing, ThingHandler und Channels (Abb. 1)