Info (25.11.2020): Vor einigen Tagen wurde Openhab 3 offiziell veröffentlicht! Dieses Tutorial ist ausschließlich für Openhab 2.5!
Ein Smarthome bietet dem Nutzer in vielerlei Hinsicht einen Mehrwert, der Hauptpunkt ist dabei die Automation von Vorgängen. Erst durch diese wird ein Smarthome eigentlich Smart. In OpenHab werden Automationen mit Regeln (also Rules) definiert. Diese können einfache Vorgänge beinhalten, wie beispielsweise das Schalten von Lampen oder Steckdosen. Es sind jedoch auch komplexere Dinge möglich wie das Berechnen von Werten oder Auslesen und Schreiben von Variablen.
Textdatei oder grafische Oberfläche
OpenHab bietet die Möglichkeit die Regeln über eine grafische Oberfläche zu erstellen oder diese als .rules-Datei zu programmieren. Für einfache Vorgänge kannst du gerne die grafische Oberfläche nutzen, da du damit schnell zu einem brauchbaren Ergebnis kommst. Einfache Rechnungen oder komplexe Regeln sind zwar hier ebenfalls möglich, jedoch nutze ich dafür dann doch lieber die Dateien, da dies für mich besser funktioniert.
Grafische Oberfläche – Habmin
Die grafische Oberfläche zum Erstellen von Regeln nennt sich Habmin. Mit dem PaperUI kannst du es über die „Add-Ons“ in der Kategorie „User Interfaces“ mit einem einfachen Klick installieren. Nach der Installation erscheint ein neuer Reiter mit der Beschriftung „Habmin“ auf deiner OpenHab Startseite. Ein Klick darauf genügt um zum neuen Interface zu kommen.
Dort angekommen siehst du auf der linken Seite einige Kategorien. Doch hier möchte ich nur auf den Bereich „Automatisierung“ eingehen. Mit einem Klick auf die Kategorie öffnen sich weitere Punkte im Menü. Beginnend mit Regeln, finden sich dort auch noch der Zeitplan und die Benachrichtigungen. Da du eine Regel erstellen möchtest, klickst du hier nun auf „Regeln“.
Als nächstes kannst du über „Neu“ oben links eine neue Regel erstellen. Diese erscheint jedoch nicht sofort in der Auflistung auf der linken Seite, du musst dazu erst einen Namen definieren und anschließend einmal speichern.
Auf der rechten Seite hat sich etwas getan, hier ist nun ein Baustein zu sehen. In diesem Baustein siehst du den Schriftzug „Neue Regel“. Mit einem Klick darauf, kannst du einen Namen für die Regel eingeben. Anschließend solltest du das erste mal speichern, danach erscheint die Regel auch auf der linken Seite.
Nun gibt es eine Auswahl an Bausteinen, mit welchen du deine Regel nach und nach aufbauen kannst. Zuerst solltest du immer mit einer Bedingungen beginnen. If-Bedingungen findest du beispielsweise in der Kategorie „Logic“. Hast du eine Bedingung gefunden die du für deinen Einsatzzweck benötigst, ziehst du diese nach rechts und heftest sie am bestehenden Baustein im Feld für „Rule“ an. Der neue Baustein rastet dann ein und wurde damit schon eingebunden. Im Beitragsbild kannst du sehen wie eine fertige Regel mit dem Bausteinsystem aussieht.
Bist du soweit und hast alle Bausteine eingefügt, kannst du nun deine Variablen ausfüllen. Hierzu klickst du auf die Variable die du zuweisen möchtest und anschließend auf „Rename variable“. Leider erkennt Habmin nicht die Items aus dem System und du kannst daher nicht einfach deine Variable aus einer Liste auswählen. Du musst dir den Namen deiner Variable selbst raus suchen und anschließend bei „Rename Variable“ eintragen.
Hast du alles entsprechend deiner Anforderungen beschriftet und umbenannt, kannst du deine Regel speichern. Habmin erstellt nun im Hintergrund aus deiner grafischen Regel eine .rules-Datei und legt diese in der Ordnerstruktur von Openhab entsprechend ab. Diese wird dir nun ebenfalls auf der linken Seite angezeigt. Wenn du neugierig bist, kannst du also direkt nachsehen wie sich deine grafischen Bausteine als Code darstellen. Änderst du deine grafische Regel, so aktualisiert Habmin diese Datei.
Regeln über Dateien programmieren
Es ist auch möglich die Regeln nur mit .rules-Dateien zu programmieren. Jedoch solltest du schon etwas Programmiererfahrung mitbringen, da die Programmierung an manchen Punkten gerne etwas knifflig sein kann.
Die .rules-Dateien folgen einer einfachen Vorgehensweise, die immer eingehalten werden muss.
rule "Name der Regel"
when
<Auslösebedingung>
then
<Auszuführende Befehle>
end
Damit erkennt Openhab wann die Regel durchzuführen ist und vor allem was genau durchgeführt werden soll.
Hierzu gerne ein Beispiel aus meinem laufenden System und eine kurze Erklärung dazu:
rule "Klima - Wohnzimmer - Temperatur"
when
Item wohnzimmer_temperature_out received update
then
Wohnzimmer_Temperature.postUpdate(( ( Float::parseFloat(wohnzimmer_temperature_out.state.toString) as Number ) * 10 ) / 10)
end
Immer wenn sich nun der Wert des Items „wohnzimmer_temperature_out“ ändert, wird dieser Wert als Zahl mit einer Kommastelle auf das Item „Wohnzimmer_Temperature“ geschrieben.
Die Programmierung der Regeln über die Dateien ist ein sehr mächtiges Werkzeug, welches ich dir leider nicht mit wenigen Worten vollständig erklären kann. Solltest du also etwas mehr darüber wissen wollen, so kannst du in der Dokumentation von Openhab zum Thema Rules weiter lesen.
Schlusswort
Habmin liefert einen leichten Einstieg in die Definition von Regeln und Einsteiger können damit schnell Ergebnisse erzielen, leider sind jedoch komplexe Funktionen nur schwer mit der grafischen Oberfläche umsetzbar. Somit solltest du schon nach kurzer Zeit damit anfangen, dich mit den Dateien zu beschäftigen. Die Wahrscheinlichkeit ist gering, das du dauerhaft mit der grafischen Oberfläche aus kommst 😉
Solltest du noch Fragen dazu haben, scheu dich nicht einen Eintrag im Forum oder als Kommentar zu hinterlassen. Ich werde dann versuchen dir so gut ich kann bei deiner Frage zu helfen.