That could also work indeed, then it should be something like this I think:
var Timer occupancyTimer = null
val timeoutMinutes = 1
rule "Motion gang received OFF"
when
Item Philips_motion2_Occupancy_Gang received update OFF
then
logInfo("test", "My rule begins")
if (Philips_motion2_Occupancy_Gang.state==ON){
occupancyTimer.reschedule(now.plusMinutes(timeoutMinutes ))}
if(occupancyTimer === null || occupancyTimer.hasTerminated()){
logInfo("test", "Creating new timer")
occupancyTimer = createTimer(now.plusMinutes(1), [|
logInfo("test", "Executing timer code")
dummyGanglampDimmerSlow.sendCommand(0)
occupancyTimer = null
])
}
else {
logInfo("test", "Rescheduling old timer")
occupancyTimer.reschedule(now.plusMinutes(timeoutMinutes ))
}
logInfo("test", "Exiting my rule")
end
Thanks a lot, never used the log info like that before but it makes it a lot more clearer what is happening
So I just updated the rule like suggested, when the first motion is detected, this is the info, nothing strange:
2021-11-14 11:22:03.327 [INFO ] [org.openhab.core.model.script.test ] - My rule begins
2021-11-14 11:22:03.346 [INFO ] [org.openhab.core.model.script.test ] - Creating new timer
==> /var/log/openhab/events.log <==
2021-11-14 11:22:03.355 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'dummyGanglampDimmer' received command 50
==> /var/log/openhab/openhab.log <==
2021-11-14 11:22:03.360 [INFO ] [org.openhab.core.model.script.test ] - Exiting my rule
==> /var/log/openhab/events.log <==
2021-11-14 11:22:03.369 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'universaldimmer' received command Light_DimmerGanglamp,50,6000
2021-11-14 11:22:03.377 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'universaldimmer' changed from Light_DimmerGanglamp,0,16000 to Light_DimmerGanglamp,50,6000
2021-11-14 11:22:03.381 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Philips_motion2_Illuminance_Gang' changed from 0.0 to 7.267991091178708
==> /var/log/openhab/openhab.log <==
2021-11-14 11:22:03.392 [INFO ] [ab.core.model.script.UniversalDimmer] - Transition Light_DimmerGanglamp PercentType from 50 => 50 over 6000 ms
2021-11-14 11:22:03.600 [INFO ] [ab.core.model.script.UniversalDimmer] - Finished transitioning Light_DimmerGanglamp from 50 => 50
Then, after 1 minute of constant movement, it just starts the Executing timer code part:
==> /var/log/openhab/openhab.log <==
2021-11-14 11:23:03.354 [INFO ] [org.openhab.core.model.script.test ] - Executing timer code
==> /var/log/openhab/events.log <==
2021-11-14 11:23:03.367 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'dummyGanglampDimmerSlow' received command 0
2021-11-14 11:23:03.390 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'universaldimmer' received command Light_DimmerGanglamp,0,16000
2021-11-14 11:23:03.395 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'universaldimmer' changed from Light_DimmerGanglamp,50,6000 to Light_DimmerGanglamp,0,16000
==> /var/log/openhab/openhab.log <==
2021-11-14 11:23:03.413 [INFO ] [ab.core.model.script.UniversalDimmer] - Transition Light_DimmerGanglamp PercentType from 50 => 0 over 16000 ms
2021-11-14 11:23:03.631 [INFO ] [ab.core.model.script.UniversalDimmer] - itemName=Light_DimmerGanglamp set to 49.33, iteration=1, elapsedMs=213
So it doesn’t seem to look at the state dependence of the motion sensor