Regeln unter OpenHAB 4.x

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
kdb
Beiträge: 10
Registriert: 9. Jan 2024 18:00
Answers: 0

Regeln unter OpenHAB 4.x

Beitrag von kdb »

Hallo, mittels der Graphischen Oberfläche UI lassen sich unter OpenHAB 4.x einfacher Regeln leicht erstellen.
Wie aber programmiert man komplexere Regeln. Die in den vorhandenen Dokumenten oder Foren beschriebenen Dateien gibt es aber nicht.
Danke für Tips.

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Regeln unter OpenHAB 4.x

Beitrag von peter-pan »

Was meinst du genau?
Was verstehst du unter komplexeren Regeln und welche "beschriebenen Dateien" meinst du denn.
Du solltest schon etwas konkreter werden, wenn du ein Antwort zu deinem Thema haben willst!
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
udo1toni
Beiträge: 13985
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Regeln unter OpenHAB 4.x

Beitrag von udo1toni »

Man kann über die UI beliebig komplexe Rules erstellen, indem man die Script Engine nutzt (Bei Add Action die Kachel Inline Script wählen).
Dort steht bis einschließlich openHAB4.x auf jeden Fall die Rules DSL zur Verfügung. Weitere Script Engines lassen sich nachinstallieren (über Addons -> Automations). Besonders für Einsteiger empfiehlt sich Blockly - wobei auch das seine Tücken hat :) Blockly erzeugt JavaScript Code, entsprechend muss eine der JavaScript Scriptiong Engines installiert sein. Die Variante mit "Nashorn" ist die alte Engine, sie ist vor allem aus Gründen der Rückwärts-Kompatibilität dabei. Zum neu Einsteigen verwende bitte die aktuelle Version.
Ansonsten kannst Du Scripte auch als reine Textdateien erzeugen, das läuft dann über den Ordner $OPENHAB_CONF/rules/ und die dort abgelegten Dateien mit der Endung .rules. Eine *.rules Datei kann beliebig viele einzelne Rules enthalten. Alle Rules in Textdateien müssen einen eindeutigen Namen haben, der Name darf aus "beliebigen" UTF-8 Zeichen bestehen, es bietet sich aber an, sich auf deutsche Buchstaben, Ziffern und eine geringe Anzahl Sonderzeichen zu beschränken (Unterstrich, Bindestrich, Leerzeichen)
Jede DSL Rule in einer *.rules Datei hat die Form

Code: Alles auswählen

rule "Name der Rule (mit äöüß)"
when
    <Trigger der Rule> or
    <weiterer Trigger der Rule>
then
    <code, der ausgeführt werden soll>
end
Eine Rule kann von beliebig vielen Triggern ausgelöst werden. da es sich um Ereignisse handelt, gibt es nur eine "Ver-oder-ung", man kann nicht bestimmen, dass die Rule nur unter bestimmten Voraussetzungen ausgeführt wird (der But-only-if-Teil in der UI). Allerdings kann man eine Rule auch aus dem Code heraus abbrechen, man kann also leicht die Bedingungen im Code definieren.
Wird die Rule ausgelöst, so wird der Code zwischen then und end ausgeführt.
Die DSL Rules sind schon von Anbeginn mit an Bord, es ist also eine der wenigen Konstanten in openHAB. Da die DSL oftmals sehr strikt ist, was die Typisierung betrifft, kommt es relativ oft zu "seltsamem" Verhalten (zumindest wenn man die DSL nicht kennt...), nichts, was man nicht beherrschen könnte, nichts, was es nicht in ähnlicher Form auch bei anderen Programmiersprachen gibt, aber halt für viele Anwender ein Hemmschuh.
Die "modernere" Textvariante ist vermutlich jruby, welches ähnlich komfortables Programmieren erlaubt.
Die Blockly Variante hat den Vorteil, dass man die Dokumentation "ohne Worte" mitgeliefert bekommt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

kdb
Beiträge: 10
Registriert: 9. Jan 2024 18:00
Answers: 0

Re: Regeln unter OpenHAB 4.x

Beitrag von kdb »

peter-pan hat geschrieben: 26. Feb 2024 14:16 Was meinst du genau?
Was verstehst du unter komplexeren Regeln und welche "beschriebenen Dateien" meinst du denn.
Du solltest schon etwas konkreter werden, wenn du ein Antwort zu deinem Thema haben willst!

Hallo Peter Pan ! In Versionen vor 4.x wurden Regeln in Dateien gespeichert. Wo und wie macht man das unter4.x ?

Benutzeravatar
udo1toni
Beiträge: 13985
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Regeln unter OpenHAB 4.x

Beitrag von udo1toni »

Ich antworte mal :)

Tatsächlich werden Regeln ohnehin immer in Dateien gespeichert ;) (sorry für die kleine Spitzfindigkeit)
DSL Rules waren bis Version 1.8.x (kann mich nicht mehr an die genaue letzte Versionsnummer von openHAB 1 erinnern) die einzige Möglichkeit, eine Automation zu erstellen.
Ab Version 2.0 gab es über die UI (damals Paper UI) die Möglichkeit, mittels der "Next Generation Rules" (sehr) einfache Automationen zu erstellen.
Im Laufe des openHAB2 Lebenszyklus kamen verschiedene Optionen hinzu, um über die NG Rules andere Scriptsprachen einzubinden.
Seit Version 3.0 kann man auch DSL Rules über die UI erstellen und auch Blockly verwenden, um komplexe Regeln mittels grafischer Oberfläche zu erstellen.

Die DSL Rules lassen sich also - seit Version 1 unverändert - in *.rules Dateien ablegen oder - zusätzlich seit Version 3 - auch über die UI als Script einbinden. Achtung! Mit "Script" meine ich die wählbare Action innerhalb der UI Rules, nicht den separaten Bereich (und Scripte gab es ebenfalls schon in openHAB1...)

Wichtig für die Frage nach den Dateien
kdb hat geschrieben: 26. Feb 2024 13:56 Die in den vorhandenen Dokumenten oder Foren beschriebenen Dateien gibt es aber nicht.
wäre eventuell noch, auf welcher Plattform Du openHAB4 betreibst, denn openHAB läuft unter Java, welches wiederum auf praktisch jeder Plattform läuft, sofern sie nur genug RAM zur Verfügung stellt. Das Dateisystem unterscheidet sich dabei von System zu System (aber die entsprechenden Verzeichnisse sind immer vorhanden - die Dateien erst, wenn Du sie anlegst...)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Regeln unter OpenHAB 4.x

Beitrag von peter-pan »

Hallo @kdb,
Udo hat es ja eigentlich sehr schön erklärt.
Ich nutze nach wie vor die textbasierende (mit einem Editor erstellte - vorzugsweise mit VSC) Variante.
Es ist natürlich auch möglich, über die UI solche Regeln zu erstellen. Wo die gespeichert werden, weiss ich leider nicht. Änderbar sind diese nur über die UI.
Die Verzeichnisse findest du einfach so, wenn du OH installiert hast:

Code: Alles auswählen

hab4@raspi58:~ $ env | grep -i openhab
OPENHAB_HOME=/usr/share/openhab
OPENHAB_USERDATA=/var/lib/openhab
OPENHAB_CONF=/etc/openhab
OPENHAB_HTTPS_PORT=8443
OPENHAB_BACKUPS=/var/lib/openhab/backups
OPENHAB_HTTP_PORT=8080
OPENHAB_LOGDIR=/var/log/openhab
OPENHAB_GROUP=openhab
OPENHAB_RUNTIME=/usr/share/openhab/runtime
OPENHAB_USER=openhab
hab4@raspi58:~ $
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Antworten