openHAB :: Regeln planen und konfigurieren

openhabrules-150x1501openHAB wird erst durch ein komplexes Regelwerk zur wahren Hausautomatisierung. Dazu stehen uns eine Reihe von Prüfungen und Aktionen zur Verfügung, um möglichst viele Prozesse in unserem IoT-Haus zu automatisieren.

 

 

 

 

little_blue_dot Einleitunglittle_blue_dot Einbinden der Internetgeschwindigkeitlittle_blue_dot RFID-Lesegerät einbinden
little_blue_dot Installationlittle_blue_dot Präsenzerkennung via Bluetooth und Pinglittle_blue_dot Einbinden von DS18B20-Sensoren
little_blue_dot Konfigurationlittle_blue_dot Kleines Netzwerkmonitoringlittle_blue_dot ical-Abfallkalender einbinden
little_blue_dot Reverse-Proxy für OpenHABlittle_blue_dot Einbinden von LG-Fernsehern [Update]little_blue_dot openHAB als Wecker
little_blue_dot Datenspeicherung und Statistikenlittle_blue_dot Einbinden Schaltern und Kontaktenlittle_blue_dot Einbinden von Bewegungssensoren
little_blue_dot Regeln planen und konfigurierenlittle_blue_dot Einbinden von Funksteckdosen (433 MHz)little_blue_dot Einbinden einer FritzBox
little_blue_dot Einbinden von USB-Steckdosenleisten (SIS-PMS)little_blue_dot Infrarotgesteuerte Geräte einbindenlittle_blue_dot Sprachausgabe auf einem Raspberry
little_blue_dot Einbinden von Temperatursensorenlittle_blue_dot Steuerung mit NFC-Tagslittle_blue_dot Schaltbare Steckdosenleiste mit Relais
little_blue_dot Externer Zugriff mit my.openhab

 

 

Allgemeines zu Regeln

Durch viele Auslöser können wir openHAB dazu bewegen, etwas zu tun. Dabei verläuft eine Regel immer nach dem gleichen Schema: Wenn das passiert, was ich dir sage, dann tue das, was ich in diesem Fall von dir fordere. Die erstellten Regeln werden stets mit einem einleitenden „rule“ mit einem einzigartigen Titel benannt.

In diesem Beitrag möchte ich auf die unterschiedlichen Auslöser einer Regel eingehen und anhand von Beispielen zeigen, wie diese praktisch anzuwenden sein könnten.

Eine beispielhafte, komplette Regel könnte so aussehen:

 

Der Bereich „when“

In diesem Bereich geben wir an, WANN etwas passieren soll. Dabei können wir auf folgende Events zurückgreifen.

 

Regeln beim Systemstart

Manchmal ist es notwendig, dass gewisse Prozederen beim Systemstart (als beim Start von openHAB) durchgeführt werden müssen. Dazu leiten wir unsere Regeln wie folgt ein:

 

Die Anwendung in einem Beispiel:

In dieser Regel wird beim Starten von openHAB das Item „TRIGGER_AX“ auf den Status „OFF“ gesetzt.

 

Regel nach Uhrzeit

Hier erstellen wir Regeln, die einer klassischen Zeitschaltuhr entsprechen:

In diesem Beispiel wird die Regel um 07:00 Uhr morgens ausgeführt. Dies könnte so sinnvoll eingesetzt werden: Schalte morgens um 07:00 Uhr die Kaffeemaschine ein und um 07:15 wieder ab.

An diesen beiden Regeln kann man erkennen, wie sich das cron-Konstrukt ergibt. Von links nach rechts werden die Sekunde, die Minute und die Stunde der Schaltung angegeben. Das Item „SWITCH_KAFFEE“ wird in diesem Fall ein- und später wieder ausgeschaltet.

 

Regel in Zeitintervallen

Alternativ zum Schalten zu festen Uhrzeiten kann eine Regel auch in Zeitintervallen ausgeführt werden.

 

Wollen wir beispielsweise erreichen, dass alle 5 Minuten das Item „LICHT_WZ“ ein, und 5 Sekunden später wieder ausgeschaltet wird, sähe die entsprechende Regel so aus:

Hier sehen wir im Gegensatz zum ersten Beispiel eine kleine Änderung im cron-Konstrukt: Mit der Angabe von „0/5“ wird die Regel alle 5 Minuten ausgeführt, mit „0/15“ jede Viertelstunde usw.

 

Regel bei Änderungen eines Items

Richtig interessant sind Regeln, die auf die Statusänderung eines Item reagieren.

Wir können mit einer Aktion reagieren, wenn sich der Status eines Items irgendwie ändert:

…oder wenn sich der Status von irgendeinem Status auf ON ändert:

…oder wenn sich der Status explizit von 1 auf 0 ändert:

 

Beispiel:
In der folgenden Beispielregel wollen wir eine E-Mail erhalten, wenn der Wasserstand in unserem Aquarium zu niedrig ist. Zudem soll die Pumpe abgeschaltet werden, damit diese nicht trocken läuft.

 

Regeln verketten

Eine Verkettung der bisher kennengelernten when-Abfragen ist natürlich auch möglich:

 

Ein weiteres Beispiel, um aus einzelnen Präsenzen eine Gesamtpräsenz zu ermitteln:

 

 

Der Bereich „then“

In diesem Bereich wird das angegeben, was bei der Aktivierung der Regel ausgeführt werden soll.

 

Status eines Items ädern

Mit dem Befehl „postupdate“ wird der Status eines Items in openHAB geändert, OHNE eine Schaltung zu tätigen:

 

Ein Item schalten

Im Gegensatz zu „postupdate“ können wir mit dem Befehl „sendcommand“ den Status eines Items ändern UND dieses zeitgleich schalten:

 

Eine Gruppe schalten

Alternativ zu einem einzelnen Item kann auch eine gesamte Gruppe geschaltet werden. Bei Items, hinter denen ein Execute-Command steckt und/oder bei Items, die einen 433MHz-Schalter bedienen, sollte jedoch der sendCommand nicht an die Gruppe, sonder zeitverzögert an die einzelnen Items gerichtet werden. Dies kann beispielsweise mit der Umsetzung in folgender Regeln erreicht werden:

In diesem Beispiel wird für jedes Mitglied der Gruppe „GRP_LICHTER“ das Command „ON“ gesendet, jedoch wird zwischen jedem zu schaltenden Item der Gruppe eine Pause von 2 Sekunden gelassen.

 

Aktion mit Zeitverzögerung

Aktionen im „then„-Block können auch zeitverzögert ausgeführt werden. Beispielhaft sei dies an folgender Regel gezeigt:

Nachdem das Licht eingeschaltet wurde, wird dies mit einer Verzögerung von 5 Sekunden wieder ausgeschaltet.

 

Eine E-Mail versenden

Unter Umständen ist es notwendig, dass openHAB eine E-Mail versendet. Der Aufruf hierfür sieht wie folgt aus:

Zunächst wird die E-Mail-Adresse angegeben, an die die Meldung gesendet werden soll. Getrennt mit einem Komma setzen wir nun die Betreffzeile, anschließend den Mailinhalt.

Etwas komplizierter ist das Senden von Item-Werten:

 

Es ist sogar möglich, das Bild einer Webcam in eine Mail zu packen:

 

Wenn-Dann Abfragen

Nicht nur im when-Block können Abfragen eingesetzt werden, sondern auch, vielleicht sogar detailierter, im then-Block. Dabei ist zu beachten, dass das „then“ natürlich nur dann durchgeführt wird, wenn das „when“ zutrifft und die Regel somit aktiviert wird.

Eine IF-Abfrage im then-Block könnte wie folgt gegliedert sein:

 

Hier die Abfrage in einem Beispiel:

Hierbei wird, wenn sich der Fernseher einschaltet, geprüft, ob jemand zuhause ist. Wenn nicht, wird dieser nach einer Minute wieder ausgeschaltet.

 

Weitere Beispiele für ein IF-Konstrukt:

Scripte ausführen

Wem die Möglichkeiten nicht reichen, die openHAB für die Regeln bietet, der kann durch Regeln externe Scripte ausführen lassen:

Dabei müssen die aufzurufenden Scripte im Ordner „openhab/configurations/scripts“ hinterlegt sein.