Heimautomatisierung mit OSGi

Home, Smart Home

Kai Kreuzer

Regeln

Für die Formulierung der Regeln steht das mächtige Werkzeug Drools Expert [12] von der JBoss-Community bereit. Es handelt sich hierbei um eine vollwertige Rule Engine, die auf dem Rete-Algorithmus basiert. Als Expertensystem lassen sich mit Drools deutlich komplexere Regelwerke abbilden, als es mit einer einfachen sequenziellen Abarbeitung möglich wäre. Regeln können gewichtet, gruppiert und dynamisch aktiviert oder deaktiviert werden. Durch diese Flexibilität lassen sich auch komplexe Anforderungen elegant umsetzen. Zusätzlich unterstützt Drools Timer und Kalender, was insbesondere für den Heimautomatisierungsbereich ein wichtiges Feature ist. Als Syntax für die Regeln stehen MVEL [13] und Java zur Verfügung, sodass eine Regel zum Beispiel folgendermaßen aussehen kann:

rule "Haustürklingel"
when
  Item(name="Klingel", hasChanged==true, state==OnOffType.ON)
  Item(name="Anwesend", state==OnOffType.OFF)
then
  XMPP.send("user@jabber.org", "Es hat an der Haustür geklingelt!");
end

Auch für die Regeln enthält der openHAB-Designer komfortable Editoren mit den üblichen Features wie Content Assist und Syntaxüberprüfung. Zukünftig wird openHAB auch eine eigene Regel-DSL unterstützen, um die Formulierung von Regeln noch weiter zu vereinfachen.

Konnektivität

Wie in obigem Beispiel gezeigt, sind Regeln oft nützlich, um bestimmte Zustände und Ereignisse zu protokollieren oder zu melden. Für diesen Zweck bietet openHAB diverse Kommunikationswege. So können Nachrichten als Instant Message über das XMPP-Protokoll verschickt werden; alternativ kann das genauso einfach über E-Mails oder Prowl [14] Push Notifications geschehen. Für lokale Benachrichtigungen kann auch einfach auf die Soundausgabe zurückgegriffen werden; neben Kontrolle der Ausgabelautstärke können Sounddateien oder auch Internetstreams abgespielt werden. Für die Zukunft ist ebenfalls eine Sprachausgabe geplant.

Für den Remote-Zugriff kann nicht nur das Web-User-Interface genutzt werden, sondern auch XMPP. Hierbei wird per Instant Messenger eine Konsole angeboten, über die der Status von Items direkt abgefragt oder Kommandos gesendet werden können.

Abb. 3: Der openHAB-Designer in AktionAbb. 3: Der openHAB-Designer in Aktion (Vergrößern)

Praxisszenario

An einem Beispiel soll nun gezeigt werden, wie sich ein Smart Home gestalten und openHAB in der Praxis einsetzen lässt. Da zum Betrieb im Wesentlichen nur eine JVM vorausgesetzt wird, läuft die openHAB Runtime im Beispielhaus auf einem günstigen Netbook. Der Großteil der Aktorik und Sensorik ist über ein KNX-Interface am KNX-Bus angeschlossen. Das sind zum einen alle Lampen, Rollläden und elektrischen Heizelemente sowie ausgewählte Steckdosen. Zum anderen ist jeder Raum mit einem Temperatur- und einem Helligkeitssensor, einem Bewegungs- und einem Rauchmelder sowie einem Lautsprecher ausgestattet. Alle Außentüren sowie Fenster verfügen über Magnetkontakte, die Hauseingangstüren zusätzlich über Motorschlösser. Außen gibt es Sensoren für Temperatur, Helligkeit, Windgeschwindigkeit, Niederschlag sowie Wasserdruck in der Zisterne zur Füllstandsbestimmung. Über Magnetventile können Wasserleitungen im Garten geschaltet werden. Weiterhin befindet sich in Haustürnähe ein Bluetooth-Empfänger, der per USB direkt ans Netbook angeschlossen ist.

Alles zusammen ergibt das mehrere hundert Geräte und Sensoren, die an openHAB gekoppelt sind. Allein diese Menge macht deutlich, dass man sich bei der Logikerstellung schnell in komplexen Szenarien wiederfindet. Um die Anzahl der Regeln in openHAB klein zu halten, sind alle einfachen Fälle („Schalter x schaltet Licht y“) direkt in die KNX-Geräte programmiert. Das hat zusätzlich den Vorteil, dass bei einem eventuellen Ausfall von openHAB die Grundfunktionen der Haussteuerung weiterhin verfügbar bleiben. Komplexe Anwendungsfälle sind hingegen die Domäne von openHAB, hier ein paar Beispiele:

  • Klingelt es an der Tür, so wird die Musiklautstärke reduziert und ein „Gong“ abgespielt – ist hingegen niemand zu Hause, meldet eine Regel den Besucher per Prowl-Push-Nachricht auf das Smartphone; zusätzlich wird auf Bluetooth-Geräte in Reichweite geprüft und gegebenenfalls der Eigentümer über eine Lookup-Tabelle ermittelt und ebenfalls gemeldet. Per E-Mail erhält der Hausherr weiterhin ein Bild der in die Türstation integrierten IP-Cam.
  • Wenn es im Sommer mehr als drei Tage nicht geregnet hat, wird am Abend die Gartenbewässerung automatisch über Magnetventile gestartet, wenn kein Hausbewohner mehr auf der Terasse ist (festgestellt durch Bewegungsmelder und Türkontakt).
  • Um eine durchgängige Bewässerung gewährleisten und ein Trockenlaufen der Gartenpumpe verhindern zu können, wird automatisch Leitungswasser in die Zisterne gefüllt, wenn deren Füllstand unter fünf Prozent sinkt. So ist sogar während der Urlaubszeit der Garten gut versorgt.
  • Wird während Abwesenheit ein (Innen-)Bewegungsmelder ausgelöst oder ein Fenster geöffnet, so wird das ebenfalls per Push Notification gemeldet. Optional können zur Abschreckung die Signaltöne der Rauchmelder aktiviert, Rollläden hochgefahren und Lichter angeschaltet werden.

Weniger spannend, aber Bestandteil des Pflichtprogramms für ein Smart Home sind außerdem Funktionen wie Beschattungsautomatik nach Sonnenstand, Szenenabruf (d. h. mit einem Tastendruck vieles gleichzeitig schalten, z. B. Szene „Dinner“: Licht gedimmt, TV aus, sanfte Musik), All-off-Funktion (beim Verlassen des Hauses) usw. Die Liste möglicher Einsatzzwecke ließe sich beinahe unbegrenzt fortsetzen.

Ausblick

Generell sind für openHAB noch viele Erweiterungen denkbar – angefangen von weiteren Bussystemen wie X10 oder Insteon, über die Anbindung von Telefoniesystemen wie Asterisk oder VoIP-Routern. Ein weiteres spannendes Thema ist das Visualisieren von Daten in Form von Grafiken. Hierfür wird an einer Integration von rrd4j [15] gearbeitet, das dann z. B. Temperaturverläufe als Chart darstellen kann. Auch wird es nicht bei einem User Interface bleiben – das bisherige bietet zwar für Smartphones ein übersichtliches und leicht zu bedienendes Layout, nutzt aber auf Tablets oder PCs die verfügbare Displayfläche nicht effektiv. Für Tablets ist daher ein alternatives UI auf Basis des HTML5-basierten SenchaTouch-Frameworks [16] geplant. Darüber hinaus wäre die Integration des eigenen Google-Kalenders in Regeln denkbar, sodass bestimmte Abläufe, z. B. eine Weckfunktion oder die Erinnerung an Mülltonnenleerungen, komfortabel über den Kalender definiert werden können, ohne Regeln in openHAB verändern zu müssen. Nähere Informationen zur Roadmap von openHAB finden Sie unter [17].

Fazit

Wer in der Java-Welt zu Hause ist und eine Heimautomatisierungssoftware sucht, bei der die Möglichkeit besteht, selbst Erweiterungen zu entwickeln oder Veränderungen vorzunehmen, der findet in openHAB eine ideale Plattform. Die modulare Architektur macht es nicht nur leicht, Funktionen als neue Bundles zu entwickeln, die verwendeten Technologien von OSGi/Equinox über Xtext, Drools und Maven Tycho sorgen auch dafür, dass diese Entwicklung sogar viel Spaß macht.

Kai Kreuzer arbeitet als Softwarearchitekt mit den Schwerpunkten MDD und Eclipse RCP bei Odyssey Financial Technologies in Lausanne (Schweiz). In seiner Freizeit beschäftigt er sich mit dem Thema Heimautomatisierung und ist Gründer des Open-Source-Projekts openHAB.

Geschrieben von
Kai Kreuzer
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.