[SOLVED] Timer "Reset"

Make sure you define a Timer variable globally within the rules file and cancel that every time before (re)setting the timer, like so:

var Timer MovementTimer = null
rule “BI Motion FC”
when
    Item BI_FC_Motion changed from OFF to ON
then
....
    if (MovementLightsOn == true) {
        MovementTimer?.cancel
        MovementTimer = createTimer(now.plusSeconds(20), [| LS_FrontOutside.sendCommand(OFF)])
        ...
    }
end

Next to that, you are potentially creating an issue with those Thread::sleeps, see here: