Um es kurz nochmal zu erläutern (es mag an dem unglücklichen Schlüsselwort THEN liegen, welches in BASIC im Zusammenhang mit IF verwendet wird):
Eine Rule besteht aus zwei Definitionsteilen, dem when-Teil und dem then-Teil.
Der then-Teil enthält den auszuführenden Code.
Der when-Teil enthält den oder die Trigger.
Trigger sind aber keine
Bedingungen, Trigger sind
Auslöser.
Jeder angegebene Trigger wird die Rule starten.
Man kann nicht verhindern, dass eine Rule ausgeführt wird, wenn ein angegebener Trigger auftritt.
Man kann aber sehr wohl im ausgeführten Code bedingte Verzweigungen einbauen, auch als ersten Befehl. Dabei kann sowohl wahr als auch unwahr den gesamten restlichen Code umfassen, ganz nach Belieben.
Code: Alles auswählen
rule "but only if"
when
Item myItem changed
then
if(mySecondItem.state == ON) {
return; // end rule
}
logInfo("butOnlyIf","myItem is {}, while mySecondItem is not ON",myItem.state)
en
Die Rule wird unmittelbar beendet, falls die Bedingung zutrifft. Andersherum geht es natürlich genauso
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet