Hi,
I’m setting up a rule for my dimmer which controls the lights in my shed.
The rule will be triggered by ASTRO info, but for testing purpose I created a switch item and using ON and OFF in the rule. This will be replaced by sunset etc, later.
I have a rule for increasing the dimmer value (state). This one works:
if(receivedCommand == ON){
timer = null
logDebug("rules.dimmer","Received command ON, dimmer increase started...")
OU_shed_dimmer.sendCommand(dimLevel)
logDebug("rules.dimmer","DimmerLevel = "+dimLevel)
timer = createTimer(now.plusSeconds(1),[|
if(OU_shed_dimmer.state<100){
dimLevel=dimLevel+1
OU_shed_dimmer.sendCommand(dimLevel)
logDebug("rules.dimmer","In timerloop, DimLevel: "+dimLevel+" state: "+OU_shed_dimmer.state)
timer.reschedule(now.plusSeconds(1))
}else {
timer = null
}
])
}
This rule, for now, increments the dimmer with 1 % at the time until 100 is reached.
Problem/ Issue
When I want to do the reverse, decreasing the dimmer, a problem occurs.
the code I use is:
if(receivedCommand == OFF){
timer = null
logDebug("rules.dimmer","Received command OFF, dimmer decrease started...")
dimLevel = OU_shed_dimmer.state
logDebug("rules.dimmer","Dimmerlevel = "+dimLevel)
logDebug("rules.dimmer","Timer: "+timer)
timer = createTimer(now.plusSeconds(3),[|
logDebug("rules.dimmer","DECREASE in first timer line...the state of the dimmer is: "+OU_shed_dimmer.state)
if(OU_shed_dimmer.state>0){
logDebug("rules.dimmer","Dimmer state > 0 (current: "+OU_shed_dimmer.state+")...executing decrease")
dimLevel = dimLevel-1
OU_shed_dimmer.sendCommand(dimLevel)
logDebug("rules.dimmer","new state after decrease: "+OU_shed_dimmer.state)
timer.reschedule(now.plusSeconds(3))
}
])
}
The rule seems to hang at the line
dimLevel = dimLevel -1
because nothing happens anymore. No logs are added, but no error on the scripting rule either.
The log on the dimmer rule looks as:
2019-09-29 13:27:15.865 [DEBUG] [.smarthome.model.script.rules.dimmer] - Received command OFF, dimmer decrease started...
2019-09-29 13:27:15.866 [DEBUG] [.smarthome.model.script.rules.dimmer] - Dimmerlevel = 10
2019-09-29 13:27:15.866 [DEBUG] [.smarthome.model.script.rules.dimmer] - Timer: null
2019-09-29 13:27:18.869 [DEBUG] [.smarthome.model.script.rules.dimmer] - DECREASE in first timer line...the state of the dimmer is: 10
2019-09-29 13:27:18.870 [DEBUG] [.smarthome.model.script.rules.dimmer] - Dimmer state > 0 (current: 10)...executing decrease
When I remove the line of the dimLevel = dimLevel -1, the timer keeps running and lines are added in the log…but of course, the state does not change since there is no new value…
Thank you in advance for the support!
/Jasper