Regeln in openHAB

Ich habe schon viel zu den Vorzügen der automatisierten Steuerung geschrieben und die dafür notwendigen Regeln genannt, aber den grundsätzlichen Aufbau habe ich dir bisher nicht näher gebracht. Dies will ich nun schnell nachholen!

Jede Regel ist nach dem gleichen Aufbau organisiert – „Wenn das passiert, mache…“ . Diese werden alle im Unterverzeichnis „rules“ abgelegt. Die Dateiendung lautet „rules“ – z.B. testregel.rules

Fangen wir mit dem Kopf an. Zu Anfang werden hier die Bibliotheken definiert:

Dies sind die drei Standard-Bibliotheken. Darüber hinaus bringt das ein oder andere Binding weitere mit.

Dann folgt der Name unserer Regel:

Anschließend der Teil „wenn das passiert…“ – die Auslöse-Bedingung. Hier wird alles genannt, was eine Regel auslösen soll. Das wäre zum einen eine Zeitangabe oder die Veränderung eines Items, z.B. durch deine manuelle Änderung.

Im zweiten Bereich „then“ formulierst du das „dann“ aus dem Satz „Wenn das passiert, dann mache“…
Hier ein paar Beispiele, was dann passieren könnte:

  • pushover – versendet eine Nachricht über das „pushover-Bindung“
  • postUpdate – hiermit aktualisierst du passiv, also ohne ein Kommando zu versenden, den Status eines Items, z.B. den Schalter einer Lampe von an zu aus
  • sendCommand – mit diesem Befehl sendest du tatsächlich ein Kommando an ein Item, um eine Aktion auszulösen
  • createTimer – das ist ein Befehl für das zeitversetzte Auslösen eines Kommandos (erkläre ich später genauer)

Anschließend beendest du die Regel mit einem „end“. Zusammengesetzt sieht es dann so aus:

Diese Regel versendet bei Systemstart von openHAB eine Nachricht per pushover „openHAB wurde gestartet“, aktualisiert den Status des „Item2“ und sendet das Kommando „An“ an Item1. Wäre Item1 eine Hue-Lampe, würde sie nun leuchten. Du kannst mehrere Regeln in einer Datei zusammenfassen!

Timer einsetzen:

Ein Timer ist eine schöne Sache, um deine Lampe z.B. nach einer Stunde wieder abzuschalten. So habe ich ein Nachtlicht realisiert. In dem Beispiel wird nach 60 Sekunden nach Durchlauf der Regel der Befehl gesendet, Hue1 abzuschalten. Das ganze funktioniert auch mit „plusMinutes“ oder „plusHours“ für Minuten bzw. Stunden.

Mit Variablen rechnen:

In dieser Regel werden die Kosten für den Stromverbrauch errechnet. Dazu definierst du im „then“-Bereich per „var Number“ eine Variable, der du einen Wert zuweist. Das Number-Item „Strom_Gesamtverbrauch_KWH“ bekommt noch ein „.state“, damit die Regel den Inhalt, also den Verbrauch als Zahl in die Variable schreiben kann.

Wenn, dann…

Auch Vergleiche von Werten sind machbar. Mit dieser Regel lasse ich mir mitteilen, wenn die Feuchtigkeit im Bad höher 70% liegt. Du kannst folgende Operatoren für den Vergleich nutzen:

  • „<“ = kleiner
  • „>“ = größer
  • „==“ = gleich
  • „&&“ = und
  • „!=“ = ungleich

Es sind noch viel mehr Möglichkeiten vorhanden, die du in Regeln nutzen kannst. Mehr findest du unter

Und, welche Regeln benutzt du? Ich freue mich über deinen Kommentar!

 

4 Gedanken zu „Regeln in openHAB“

  1. Hi,
    da du viel mehr Ahnung zu haben scheinst als ich könntest du mir bei dieser Regler helfen?

    rule „Heizung_manu“

    when
    Item alexa_Heizung_einstellen changed
    then
    sendHttpGetRequest(„http://192.168.188.74/config/xmlapi/statechange.cgi?ise_id=50216&new_value=“ + alexa_Heizung_einstellen.String)
    end

    Ich möchte den Inhalt des Items alexa_Heizung_einstellen in dem http Request mit übergeben.

    1. Hallo Lars,
      fehlt dir nicht ein „http://..“ vor deinem Link? Und ein „changed“ fehlt ein Vergleich:
      „Item Alexa_Heizung_einstellen changed from OFF to ON“ oder ähnlich. Klappt das?

    1. Du kannst mehrere Regeln in einer Datei speichern. Eine Regel beginnt mit „rule [name der Regel]“ und endet mit „end“. Ich mache es so, um Regeln thematisch zu gruppieren, z.b. alle Wetter-Regeln in Wetter.rules.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.