Nein, da liegst Du knapp daneben
Eine Möglichkeit:
Code: Alles auswählen
rule "test"
when
Item Sun_Elevation changed
then
if(!(Sun_Elevation.state instanceof Number)) return;
var Switch mySwitch = OFF
if((Sun_Elevation.state as Number) < 2) mySwitch = ON
if(licht.state != mySwitch) licht.sendCommand(mySwitch)
end
Falls das Item Sun_Elevation keinen gültigen (numerischen) Wert hat, wird die Rule abgebrochen.
Eine Variable wird als Switch mit OFF initialisiert.
Der Status wird als Zahlenwert verglichen, ist er kleiner 2, wird die Variable auf ON gesetzt.
Abschließend wird geprüft, ob das Soll vom Ist abweicht und gegebenenfalls der passende Befehl gesendet.
Die Rule triggert bei jeder Änderung (abhängig von der Konfiguration der astro:sun Bridge), was nicht so schön ist.
Eine bessere Variante ist, die Rule auf ein astro Event triggern zu lassen, z.B. civilDusk#event oder civilDawn#event. Damit wird die Rule nur einmal täglich getriggert. Allerdings braucht man dann zwei Rules, eine zum Ein- und eine zum Ausschalten (der Aufwand, innerhalb der Rule herauszufinden, welcher Trigger die Rule gestartet hat, steht in keinem Verhältnis). Sieht dann so aus:
Code: Alles auswählen
rule "sonnenaufgang"
when
Channel 'astro:sun:home:civilDawn#event' triggered START
then
licht.sendCommand(OFF)
end
rule "sonnenuntergang"
when
Channel 'astro:sun:home:civilDusk#event' triggered START
then
licht.sendCommand(OFF)
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet