Also, die Rule soll zum einen triggern, wenn sich die Helligkeit ändert. Zum zweiten (und dritten) soll sie zu zwei bestimmten Zeiten triggern.
Wenn die Rule getriggert hat, soll sie prüfen, ob ein Schalter OFF ist. Ist das der Fall, soll sie prüfen, ob die Randbedngungen erfüllt sind und gegebenenfalls schalten.
Nun wäre noch die Frage, was passieren soll, wenn sich die Helligkeit wieder ändert (also z.B. im Sommer kommt um 17:01 Uhr eine dunkle Wolke und die Helligkeit sinkt unter 60, um 17:05 Uhr ist die Wolke wieder weg und die Helligkeit steigt wieder weit über 60...)
Allgemein möchte ich empfehlen, im Zusammenhang mit Helligkeit auf fixe Uhrzeiten eher zu verzichten und stattdessen lieber über das Astro Binding den Sonnenstand zu berücksichtigen.
Ich gehe davon aus, dass Du es eher so möchtest:
Code: Alles auswählen
rule "Nachtlicht Schiffslampen"
when
Item Garten_helligkeit changed or
Time cron "0 0 17 * * ?" or
Time cron "0 0 1 * * ?"
then
if(Garten_Switch2.state == ON) { // Dauerbetrieb AN
logInfo("autolight","Rule getriggert, aber Dauerbetrieb an. Abbruch.")
return;
}
if((now.getHourOfDay > 16 || now.getHourOfDay < 1 )) && Garten_helligkeit.state < 60 ) {
if(gLichtGartenNacht.state != 45) // Nur schalten, falls Abweichung von Soll
gLichtGartenNacht.sendCommand(45)
} else if(now.getHourOfDay == 1 || Garten_helligkeit.state > 60 ) { // falls Abschalten bei Helligkeit über 60 erwünscht
// } else if( now.getHourOfDay == 1 ) { // Alternativ nur um 1 Uhr abschalten
if(gLichtGartenNacht.state != 0) // Nur schalten, falls Abweichung von Soll
gLichtGartenNacht.sendCommand(0)
}
end
Die Rule triggert bei jeder Änderung der Helligkeit, zusätzlich um 1 Uhr und um 17 Uhr.
Die Rule prüft, ob Dauerlicht AN ist und bricht in diesem Fall die Ausführung ab (mittels return;, das Semikolon ist in diesem Fall notwendig)
Läuft die Rule noch, prüft sie nun, ob die Helligkeit unter 60 und gleichzeitig der Zeitraum 17 Uhr bis 1 Uhr erfüllt ist. Ist das der Fall, schaltet sie das Licht auf 45 (nur, falls das Licht nicht auf 45 ist)
Ansonsten prüft die Rule, ob es 1 Uhr ist. Ist das der Fall, schaltet sie das Licht aus, falls es nicht aus ist. Die alternative Zeile prüft zusätzlich, ob die Helligkeit über 60 liegt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet