Also, das Abdimmen startet ja um 20 Uhr, da es maximal 500 Sekunden dauert, könntest Du locker das Time Cron "etwas" eingrenzen:
Dir Rule wird nun von 20 Uhr bis 20:09:55 alle fünf Sekunden ausgeführt.
Eleganter ist es allerings, die Schleife in einem Timer abzuarbeiten und die Rule einmalig zum gewünschten Zeitraum zu starten:
Code: Alles auswählen
var Timer tSunset = null
rule "Beleuchtung Simulation Sonnenuntergang"
when
Time cron "0 0 20 * * ?"// um 20:00:00 Uhr
then
tSunset?.cancel
tSunset = createTimer(now.plusMillis(10),[|
if((SDimmer_D1_RelayBrightness.state as Number) > 0) {
SDimmer_D1_RelayBrightness.sendCommand((SDimmer_D1_RelayBrightness.state as Number) - 1)
tSunset.reschedule(now.plusSeconds(5))
}
])
end
Der Timer wird um 20 Uhr von der Rule angelegt und fast unmittelbar das erste Mal ausgeführt. Falls der Dimmer heller als 0% ist, wird der Dimmwert um eins verringert. Danach wird der Timer nach 5 Sekunden erneut ausgeführt. Eine extra Variable (außer die für den Timer) braucht es in diesem Fall nicht. Falls die Lampe zunächst mit voller Helligkeit erstrahlen soll, müsste man vor dme Timeraufruf ein sendCommand(100) einbauen und auch schon den ersten Timeraufruf mit 5 Sekunden Verzögerung auslösen, aber da es explizit um ein Abdimmen geht, denke ich, ist obige Regel eher das, was Du suchst.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet