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.