Renew timer when motion detected

Hello, I have a second problem with timers that bugs me quite a bit. The goal is to turn on lights in the carport when motion is detected, then turn them off again after three minutes. However, if a new movement is detected in this period, to let the timer start from the beginning. However, it seems that the “motion” trigger only does something at the beginning of the rule, and then is ignored during the rest of the execution until the rule has finished. There’s probably a thought error involved again, but I can’t find a solution. To better understand what the rule does, I added a number of LogInfo entries to it last. I have attached the result of the last test last night in excerpts from the event.log and openhab.log.

openHAB is 3.2, running in Ubuntu Server 20.04 LTS.

rule "Bewegungsmelder Carport"
when
    Item hue_ha_carport_melder changed to ON
then
    if (s_automatisierung_aussenbeleuchtung.state == ON && hue_ha_carport_beleuchtungsstaerke.state <= 1.0 | "lx") {
        logInfo("Bewegungsmelder Carport", "Regelausführung gestartet")
        logInfo("Bewegungsmelder Carport", "Carportbeleuchtung: {}", s_ga_aussen_carportbeleuchtung.state)
        if (s_ga_aussen_carportbeleuchtung.state == OFF){
            s_ga_aussen_carportbeleuchtung.sendCommand(ON)
            logInfo("Bewegungsmelder Carport", "Licht wurde eingeschaltet")
        } else {
            logInfo("Bewegungsmelder Carport", "Licht war bereits an")
        }
        if (s_ga_carport_timer !== null) {
            s_ga_carport_timer.reschedule(now.plusSeconds(180))
            logInfo("Bewegungsmelder Carport", "Timer war an und wurde neu gestartet")
        } else {
            logInfo("Bewegungsmelder Carport", "Timer war aus und wurde gestartet")
            s_ga_carport_timer = createTimer(now.plusSeconds(180), [ |
                s_ga_aussen_carportbeleuchtung.sendCommand(OFF)
                s_ga_carport_timer = null
                logInfo("Bewegungsmelder Carport", "Timer ist abgelaufen und Licht wurde ausgeschaltet")
            ])
        }
        logInfo("Bewegungsmelder Carport", "Regelausführung beendet")
    }
end
2022-03-25 22:52:18.538 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_melder' changed from OFF to ON
2022-03-25 22:52:18.538 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_letzte_aktualisierung' changed from 2022-03-25T20:35:13.000+0100 to 2022-03-25T22:52:18.000+0100
2022-03-25 22:52:18.541 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 's_ga_aussen_carportbeleuchtung' received command ON
2022-03-25 22:52:18.543 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 's_ga_aussen_carportbeleuchtung' predicted to become ON
2022-03-25 22:52:18.545 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 's_ga_aussen_carportbeleuchtung' changed from OFF to ON
2022-03-25 22:52:18.545 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gGarage_N' changed from 0 to 1 through s_ga_aussen_carportbeleuchtung
2022-03-25 22:52:18.545 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gSchalter_Garage_Licht' changed from OFF to ON through s_ga_aussen_carportbeleuchtung
2022-03-25 22:52:23.648 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_beleuchtungsstaerke' changed from 0.9997697679981565 lx to 14.763862777538627 lx
2022-03-25 22:52:32.327 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_melder' changed from ON to OFF
2022-03-25 22:52:32.328 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_letzte_aktualisierung' changed from 2022-03-25T22:52:18.000+0100 to 2022-03-25T22:52:32.000+0100

2022-03-25 22:54:45.181 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_melder' changed from OFF to ON
2022-03-25 22:54:45.181 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_letzte_aktualisierung' changed from 2022-03-25T22:52:32.000+0100 to 2022-03-25T22:54:45.000+0100
2022-03-25 22:54:59.468 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_melder' changed from ON to OFF
2022-03-25 22:54:59.469 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'hue_ha_carport_letzte_aktualisierung' changed from 2022-03-25T22:54:45.000+0100 to 2022-03-25T22:54:59.000+0100

2022-03-25 22:55:18.542 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 's_ga_aussen_carportbeleuchtung' received command OFF
2022-03-25 22:55:18.548 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 's_ga_aussen_carportbeleuchtung' predicted to become OFF
2022-03-25 22:55:18.549 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 's_ga_aussen_carportbeleuchtung' changed from ON to OFF
2022-03-25 22:55:18.549 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gGarage_N' changed from 1 to 0 through s_ga_aussen_carportbeleuchtung
2022-03-25 22:55:18.549 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gSchalter_Garage_Licht' changed from ON to OFF through s_ga_aussen_carportbeleuchtung

2022-03-25 22:52:18.540 [INFO ] [model.script.Bewegungsmelder Carport] - Regelausführung gestartet
2022-03-25 22:52:18.541 [INFO ] [model.script.Bewegungsmelder Carport] - Carportbeleuchtung: OFF
2022-03-25 22:52:18.541 [INFO ] [model.script.Bewegungsmelder Carport] - Licht wurde eingeschaltet
2022-03-25 22:52:18.541 [INFO ] [model.script.Bewegungsmelder Carport] - Timer war aus und wurde gestartet
2022-03-25 22:52:18.543 [INFO ] [model.script.Bewegungsmelder Carport] - Regelausführung beendet
2022-03-25 22:55:18.542 [INFO ] [model.script.Bewegungsmelder Carport] - Timer ist abgelaufen und Licht wurde ausgeschaltet

It’s your lux check. once the light is on, the lux goes up and therefore your if condition isn’t met anymore.

Sometimes you can’t see the forest for the trees. Thank you very much. That was exactly what I had hoped for. I have now turned the rule upside down and the first test tonight worked great.

rule "Bewegungsmelder Carport"
when
    Item hue_ha_carport_bewegungsmelder changed to ON
then
    if (s_automatisierung_aussenbeleuchtung.state == ON) {
        if (hue_ha_carport_beleuchtungsstaerke.state <= 1.0 | "lx") {
            s_ga_aussen_carportbeleuchtung.sendCommand(ON)
            s_ga_carport_timer = createTimer(now.plusSeconds(180), [ |
                s_ga_aussen_carportbeleuchtung.sendCommand(OFF)
                s_ga_carport_timer = null
            ])
        } else if (s_ga_carport_timer !== null && s_ga_aussen_carportbeleuchtung.state == ON) {
            s_ga_carport_timer.reschedule(now.plusSeconds(180))
        }
    }
end