Hello Rich,
thanks for the information’s. During the time while I hope that someone give me a hint like you, I tried to make the name’s inside my rules unique because till now I have just copied one file and modified the trigger conditions - so the Rule-Names appear in each file again. The result of this modification was, that the rules become faster available.
So this behavior results in a new questions about the naming conventions: Do all rules, spread over all rule-files, have to had unique rule-names, or is the scope of rule-name only inside the specific file? The same question exists for the variables defined at the beginning of an rule-file …
Okay, now to your modified sources. First, the good thing is, that the rule while “fire” after only some trigger-events. The less good thing is that I received a couple of failures. I have modified your code only by my new naming conventions to make everything unique …
var boolean AZ_BrightnessLoop = false // Modify brightness until DimmLoop = false
var boolean AZ_BrightnessDirection = false // false = up, true = down
var int AZ_BrightnessStep = 2 // Unit is %
var Number AZ_BrightnessSpeed = 100 // Defines the interval to increse/decrease Unit is ms
var boolean AZ_ColorLoop = false // Modify color until ColorLoop = false
var boolean AZ_ColorDirection = false // false = inkrement, true = decrement
var int AZ_ColorStep = 2 // Unit is °
var int AZ_ColorSpeed = 100 // Defines the interval to increse/decrease Unit is ms
val Timer AZ_brightnessTimer = null
...
rule "AZ_ChangeBrightness"
when
Item LCN_AZ_SW_Relay_HUE_Brightness changed from OFF to ON
then
if(AZ_brightnessTimer !== null) {
logWarn("brightness", "The light is already dimming")
return;
}
// start the loop almost immeidately
AZ_brightnessTimer = createTimer(now.plusMillis(1), [ |
if(AZ_BrightnessLoop) {
val currBrightness = HueLam2Color.getStateAs(PercentType) as Number // get the brightness
var nextBrightness = if(!AZ_BrightnessDirection) currBrightness + AZ_BrightnessStep else currBrightness - AZ_BrightnessStep
if(nextBrightness > 100) {
nextBrightness = 100
AZ_BrightnessLoop = false // stop looping when we reach max brightness
}
if(nextBrightness < 0) {
nextBrightness = 0
AZ_BrightnessLoop = false // stop looping when we reach min brightness
}
logInfo("ChangeBrightness", nextBrightness.toString)
HueLamp2Color.sendCommand(nextBrightness) // sending a single number in a command to a Color Item is treated as a Dimmer command
brightnessThread.reschedule(now.plusMillis(100))
}
else {
brightnessThread = null // we are done or cancelled
}
])
end
2018-04-02 19:34:20.401 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'Arbeitszimmer_hue.rules'
2018-04-02 19:34:20.444 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'Arbeitszimmer_hue.rules' is either empty or cannot be parsed correctly!
2018-04-02 19:34:26.014 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'Arbeitszimmer_hue.rules', using it anyway:
Constant condition is always false.
Assignment to final field
2018-04-02 19:34:26.025 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'Arbeitszimmer_hue.rules'
==> /var/log/openhab2/events.log <==
2018-04-02 19:34:52.304 [vent.ItemStateChangedEvent] - ntp_ntp_local_dateTime changed from 2018-04-02T19:33:52.266+0200 to 2018-04-02T19:34:52.278+0200
2018-04-02 19:34:52.314 [vent.ItemStateChangedEvent] - current_Date changed from 2018-04-02T19:33:52.266+0200 to 2018-04-02T19:34:52.278+0200
2018-04-02 19:34:52.335 [vent.ItemStateChangedEvent] - current_Time changed from 2018-04-02T19:33:52.266+0200 to 2018-04-02T19:34:52.278+0200
2018-04-02 19:34:53.701 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Switch changed from ON to OFF
2018-04-02 19:34:54.698 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Switch changed from OFF to ON
2018-04-02 19:34:55.810 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Switch changed from ON to OFF
2018-04-02 19:34:56.631 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Switch changed from OFF to ON
2018-04-02 19:34:57.607 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from OFF to ON
2018-04-02 19:34:58.157 [ome.event.ItemCommandEvent] - Item 'HueLamp2Color' received command OFF
2018-04-02 19:34:58.178 [ome.event.ItemCommandEvent] - Item 'HueLamp2Color' received command OFF
2018-04-02 19:34:58.186 [ome.event.ItemCommandEvent] - Item 'HueLamp2Color' received command OFF
==> /var/log/openhab2/openhab.log <==
2018-04-02 19:34:58.194 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2018-04-02T19:34:58.145+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1201080
} ] threw an unhandled Exception:
java.lang.IllegalArgumentException: Couldn't invoke 'assignValueTo' for feature JvmVoid: (eProxyURI: Arbeitszimmer_hue.rules#|::0.2.1.2.0.1.7.6.1.1.0.0.2.0.0::0::/1)
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.assignValueTo(XbaseInterpreter.java:1224) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1212) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:215) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) [145:org.eclipse.smarthome.model.script:0.10.0.b1]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) [145:org.eclipse.smarthome.model.script:0.10.0.b1]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:463) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) [145:org.eclipse.smarthome.model.script:0.10.0.b1]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) [145:org.eclipse.smarthome.model.script:0.10.0.b1]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:189) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) [164:org.eclipse.xtext.xbase:2.12.0.v20170519-0752]
at com.sun.proxy.$Proxy151.apply(Unknown Source) [?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) [145:org.eclipse.smarthome.model.script:0.10.0.b1]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [115:org.eclipse.smarthome.core.scheduler:0.10.0.b1]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [115:org.eclipse.smarthome.core.scheduler:0.10.0.b1]
==> /var/log/openhab2/events.log <==
2018-04-02 19:34:58.240 [ome.event.ItemCommandEvent] - Item 'HueLamp2Color' received command OFF
==> /var/log/openhab2/openhab.log <==
2018-04-02 19:34:58.201 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2018-04-02T19:34:58.145+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1201080
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [115:org.eclipse.smarthome.core.scheduler:0.10.0.b1]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [115:org.eclipse.smarthome.core.scheduler:0.10.0.b1]
Caused by: java.lang.IllegalArgumentException: Couldn't invoke 'assignValueTo' for feature JvmVoid: (eProxyURI: Arbeitszimmer_hue.rules#|::0.2.1.2.0.1.7.6.1.1.0.0.2.0.0::0::/1)
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.assignValueTo(XbaseInterpreter.java:1224) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1212) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:215) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:463) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:189) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]
at com.sun.proxy.$Proxy151.apply(Unknown Source) ~[?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) ~[?:?]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[?:?]
... 1 more
==> /var/log/openhab2/events.log <==
2018-04-02 19:34:58.371 [vent.ItemStateChangedEvent] - HueLamp2Color changed from 45,100,100 to 45,100,0
2018-04-02 19:34:58.601 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from ON to OFF
2018-04-02 19:35:00.607 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Switch changed from ON to OFF
2018-04-02 19:35:00.635 [ome.event.ItemCommandEvent] - Item 'HueLamp2Color' received command ON
2018-04-02 19:35:00.661 [vent.ItemStateChangedEvent] - HueLamp2Color changed from 45,100,0 to 45,100,100
2018-04-02 19:35:03.197 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from OFF to ON
==> /var/log/openhab2/openhab.log <==
2018-04-02 19:35:03.228 [WARN ] [se.smarthome.model.script.brightness] - The light is already dimming
==> /var/log/openhab2/events.log <==
2018-04-02 19:35:04.626 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from ON to OFF
2018-04-02 19:35:05.604 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Switch changed from OFF to ON
2018-04-02 19:35:05.638 [ome.event.ItemCommandEvent] - Item 'HueLamp2Color' received command OFF
2018-04-02 19:35:05.659 [vent.ItemStateChangedEvent] - HueLamp2Color changed from 45,100,100 to 45,100,0
2018-04-02 19:35:07.618 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from OFF to ON
==> /var/log/openhab2/openhab.log <==
2018-04-02 19:35:07.633 [WARN ] [se.smarthome.model.script.brightness] - The light is already dimming
==> /var/log/openhab2/events.log <==
2018-04-02 19:35:07.719 [vent.ItemStateChangedEvent] - hue_0210_0017886f0a4a_2_color changed from 45,100,68 to 45,100,0
2018-04-02 19:35:10.117 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from ON to OFF
2018-04-02 19:35:11.619 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from OFF to ON
==> /var/log/openhab2/openhab.log <==
2018-04-02 19:35:11.631 [WARN ] [se.smarthome.model.script.brightness] - The light is already dimming
==> /var/log/openhab2/events.log <==
2018-04-02 19:35:12.802 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Brightness changed from ON to OFF
2018-04-02 19:35:13.796 [vent.ItemStateChangedEvent] - LCN_AZ_SW_Relay_HUE_Switch changed from ON to OFF
2018-04-02 19:35:13.819 [ome.event.ItemCommandEvent] - Item 'HueLamp2Color' received command ON
2018-04-02 19:35:13.847 [vent.ItemStateChangedEvent] - HueLamp2Color changed from 45,100,0 to 45,100,100
Above you can the the code and the behavior of the trigger and the rule itself - I just deleted some blank lines to increase the readability.
Thanks for helping and best regards
Stef