i got a question for optimization of a dimmer light rule. Actually i am using the following rule code and it works fine so fare. But i think it would be a bit more comfortable, if all the timers would be created when the rules fires.
So i would like to create a rule, that checks the state of the lamp every x seconds and then sends a command like “lamp.state - 10”. when the state of the lamp gets to 0, the loop should stop.
Can you help me to set up the loop?
Thanks, Alex
// Einschlaf-Licht: Licht dimmt auf 0%
rule "Einschlaf-Licht"
when
Item Scenes_Einschlaflicht received command ON
then
// Steurung für Lampe Alex
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 90) {
createTimer(now.plusSeconds(60)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(90)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 80) {
createTimer(now.plusSeconds(120)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(80)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 70) {
createTimer(now.plusSeconds(180)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(70)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 60) {
createTimer(now.plusSeconds(240)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(60)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 50) {
createTimer(now.plusSeconds(300)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(50)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 40) {
createTimer(now.plusSeconds(360)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(40)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 30) {
createTimer(now.plusSeconds(420)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(30)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 20) {
createTimer(now.plusSeconds(480)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(20)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 10) {
createTimer(now.plusSeconds(540)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(10)]
}
if ((Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness > 00) {
createTimer(now.plusSeconds(600)) [ Hue_schlafzimmer_BettAlex_Farbe.sendCommand(00)]
}
createTimer(now.plusSeconds(605)) [ Scenes_Einschlaflicht.sendCommand(OFF)]
end
var Timer timer = null // global variable
rule "Einschlaf-Licht"
when
Item Scenes_Einschlaflicht received command ON
then
timer = createTimer(now, [ |
var dimmerValue = Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness as Number
dimmerValue = dimmerValue - 10
if (dimmerValue < 0) dimmerValue = 0
Hue_schlafzimmer_BettAlex_Farbe.sendCommand(dimmerValue)
if(dimmerValue > 0) timer.reschedule(now.plusSeconds(60))
else timer = null
])
end
2018-09-09 22:41:34.586 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2018-09-09T22:41:34.534+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
var dimmerValue
<null>.dimmerValue = <XBinaryOperationImplCustom>
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3107c543
<XFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@19b97b1d
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
Caused by: java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy192.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
Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: The name 'dimmer' cannot be resolved to an item or type; line 216, column 12, length 6
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:141) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:901) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:864) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:223) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:900) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:225) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:457) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
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:227) ~[?:?]
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.$Proxy192.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-09-09 22:41:34.679 [vent.ChannelTriggeredEvent] - logreader:reader:869d1763:newErrorEvent triggered 2018-09-09 22:41:34.551 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2018-09-09T22:41:34.534+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
2018-09-09 22:41:34.680 [vent.ChannelTriggeredEvent] - logreader:reader:869d1763:newErrorEvent triggered 2018-09-09 22:41:34.586 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2018-09-09T22:41:34.534+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
==> /var/log/openhab2/openhab.log <==
2018-09-09 23:01:36.941 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2018-09-09T23:01:36.930+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
var dimmerValue
<null>.dimmerValue = <XBinaryOperationImplCustom>
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3b06f401
<XFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@50619a31
} ] threw an unhandled Exception:
java.lang.reflect.UndeclaredThrowableException: null
at com.sun.proxy.$Proxy192.apply(Unknown Source) [?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) [130:org.eclipse.smarthome.model.script:0.10.0.oh240M2]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: 'reschedule' is not a member of 'java.lang.Object'; line 216, column 24, length 36
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:763) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:219) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:459) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
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:227) ~[?:?]
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) ~[?:?]
... 4 more
No it should, but why don’t you move it in one separate rule file?
Do you use the timer variable in another rule?
var Timer timer = null // global variable
rule "Einschlaf-Licht"
when
Item Scenes_Einschlaflicht received command ON
then
timer = createTimer(now, [ |
var dimmerValue = (Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness as Number
logInfo("TESTING", dimmerValue.toString)
dimmerValue = dimmerValue - 10
if (dimmerValue < 0) dimmerValue = 0
Hue_schlafzimmer_BettAlex_Farbe.sendCommand(dimmerValue)
if(dimmerValue > 0) timer.reschedule(now.plusSeconds(60))
else timer = null
])
end
until now i seperated all the rules-files by use case: one file for scenes, one file for notifications, one file for systemstartup and so on. at the beginning i was not sure, whats the best practice and thought, i could maybe get to many files…
yes, i use timers and cron expressions in a few rules in this, but not as variable. For example i use them like this:
then
Zw_steckdose_wohnzimmer_media_Switch.sendCommand(ON)
createTimer(now.plusSeconds(20)) [ RXV775Main_Zone_Zone_channels_Power.sendCommand(ON) ]
createTimer(now.plusSeconds(24)) [ RXV775Main_Zone_Zone_channels_InputSource.sendCommand('TUNER')]
now i seperated this rule including the var into a new file, but i still get an error-message:
==> /var/log/openhab2/openhab.log <==
2018-09-10 20:41:45.751 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2018-09-10T20:41:45.745+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
var dimmerValue
<null>.dimmerValue = <XBinaryOperationImplCustom>
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@118d9af8
<XFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1d1c17a4
} ] threw an unhandled Exception:
java.lang.reflect.UndeclaredThrowableException: null
at com.sun.proxy.$Proxy200.apply(Unknown Source) [?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) [130:org.eclipse.smarthome.model.script:0.10.0.oh240M2]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: 'reschedule' is not a member of 'java.lang.Object'; line 12, column 24, length 36
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:763) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:219) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:459) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
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:227) ~[?:?]
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) ~[?:?]
... 4 more
2018-09-10 20:41:45.782 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2018-09-10T20:41:45.745+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
var dimmerValue
<null>.dimmerValue = <XBinaryOperationImplCustom>
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@118d9af8
<XFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1d1c17a4
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [100:org.eclipse.smarthome.core.scheduler:0.10.0.oh240M2]
Caused by: java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy200.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
Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: 'reschedule' is not a member of 'java.lang.Object'; line 12, column 24, length 36
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:763) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:219) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:459) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:227) ~[?:?]
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:227) ~[?:?]
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.$Proxy200.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
The error is basically saying that it doesn’t like the first line of the timer body. The fact that we don’t see the dimmerValue logged also points to that line being the problem.
Does Hue_schlafzimmer_BettAlex_Farbe definitely not have a not NULL state?
In the most recent version of the Rule from @vzorglub there is a missing ( on that line var dimmerValue = (Hue_schlafzimmer_BettAlex_Farve.state as HSBType).getBrightness as Number
I double checked and getBrightness does return a PercentType and PercentType is a Number so as long as the state isn’t NULL that shouldn’t be a problem.
I would have expected VSCode and the Rules loader to have complained about the missing open paren so I’m going to guess it is only missing in the posting above.
Try this version:
timer = createTimer(now, [ |
if(Hue_schlafzimmer_BettAlex_Farbe.state == NULL) {
logWarn("TESTING", "Light is in an unknown state!, cannot dim it.")
}
else{
logInfo("TESTING", "Dimming the light")
var dimmerValue = Hue_schlafzimmer_BettAlex_Farbe.state as HSBType).getBrightness as Number
logInfo("TESTING", dimmerValue.toString)
dimmerValue = dimmerValue - 10
if (dimmerValue < 0) dimmerValue = 0
Hue_schlafzimmer_BettAlex_Farbe.sendCommand(dimmerValue)
if(dimmerValue > 0) timer.reschedule(now.plusSeconds(60))
else timer = null
}
])
after uploading the updated rule to rloshaks version i get the following error message:
==> /var/log/openhab2/openhab.log <==
2018-09-10 21:14:40.556 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'einschlaflicht.rules'
2018-09-10 21:14:40.559 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'einschlaflicht.rules' is either empty or cannot be parsed correctly!
==> /var/log/openhab2/events.log <==
2018-09-10 21:14:41.097 [vent.ChannelTriggeredEvent] - logreader:reader:869d1763:newWarningEvent triggered 2018-09-10 21:14:40.559 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'einschlaflicht.rules' is either empty or cannot be parsed correctly!
==> /var/log/openhab2/openhab.log <==
2018-09-10 21:14:41.600 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'einschlaflicht.rules' has errors, therefore ignoring it: [28,82]: mismatched input ')' expecting '}'
[35,9]: mismatched input '}' expecting 'end'
==> /var/log/openhab2/events.log <==
2018-09-10 21:14:42.098 [vent.ChannelTriggeredEvent] - logreader:reader:869d1763:newWarningEvent triggered 2018-09-10 21:14:41.600 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'einschlaflicht.rules' has errors, therefore ignoring it: [28,82]: mismatched input ')' expecting '}'
after firering the rule nothing happens, even i dont get log entries
this is the rule actually:
var timer = null // global variable
rule "Einschlaf-Licht V2"
when
Item Scenes_Einschlaflicht received command ON
then
timer = createTimer(now, [ |
if(Hue_wohnzimmer_StehlampeSofa_Farbe.state == NULL) {
logWarn("TESTING", "Light is in an unknown state!, cannot dim it.")
}
else{
logInfo("TESTING", "Dimming the light")
var dimmerValue = Hue_wohnzimmer_StehlampeSofa_Farbe.state as HSBType).getBrightness as Number
logInfo("TESTING", dimmerValue.toString)
dimmerValue = dimmerValue - 10
if (dimmerValue < 0) dimmerValue = 0
Hue_wohnzimmer_StehlampeSofa_Farbe.sendCommand(dimmerValue)
if(dimmerValue > 0) timer.reschedule(now.plusSeconds(6))
else timer = null
}
])
end
Indeed, that’s an important one. Without the “Timer” there is nothing to tell the Rules engine that “timer” is of type Timer so it uses the default which is Object. That is where the “Object doesn’t have a member reschedule” error came from.
You guys are great! After adding Timer to the first line, i get no more error messages and the lights are dimming.
but also the is a new issue now: the lights at first dimm up to 100, then to 90, 80 and back to 100… and i cant stop it… my wife is already asking, whats going on here
==> /var/log/openhab2/openhab.log <==
2018-09-10 21:29:10.162 [INFO ] [lipse.smarthome.model.script.TESTING] - Dimming the light
2018-09-10 21:29:10.163 [INFO ] [lipse.smarthome.model.script.TESTING] - 100
==> /var/log/openhab2/events.log <==
2018-09-10 21:29:10.166 [ome.event.ItemCommandEvent] - Item 'Hue_wohnzimmer_StehlampeSofa_Farbe' received command 90
2018-09-10 21:29:10.173 [vent.ItemStateChangedEvent] - Hue_wohnzimmer_StehlampeSofa_Farbe changed from 23,83,100 to 23,83,90
2018-09-10 21:29:13.147 [vent.ItemStateChangedEvent] - fboxWanTotalBytesSent changed from 976922350 to 977018702
2018-09-10 21:29:13.148 [vent.ItemStateChangedEvent] - fboxWanTotalBytesReceived changed from 1460628455 to 1460759842
==> /var/log/openhab2/openhab.log <==
2018-09-10 21:29:16.169 [INFO ] [lipse.smarthome.model.script.TESTING] - Dimming the light
2018-09-10 21:29:16.171 [INFO ] [lipse.smarthome.model.script.TESTING] - 90
==> /var/log/openhab2/events.log <==
2018-09-10 21:29:16.174 [ome.event.ItemCommandEvent] - Item 'Hue_wohnzimmer_StehlampeSofa_Farbe' received command 80
2018-09-10 21:29:16.179 [vent.ItemStateChangedEvent] - Hue_wohnzimmer_StehlampeSofa_Farbe changed from 23,83,90 to 23,83,80
==> /var/log/openhab2/openhab.log <==
2018-09-10 21:29:22.177 [INFO ] [lipse.smarthome.model.script.TESTING] - Dimming the light
2018-09-10 21:29:22.179 [INFO ] [lipse.smarthome.model.script.TESTING] - 80
==> /var/log/openhab2/events.log <==
2018-09-10 21:29:22.182 [ome.event.ItemCommandEvent] - Item 'Hue_wohnzimmer_StehlampeSofa_Farbe' received command 70
2018-09-10 21:29:22.189 [vent.ItemStateChangedEvent] - Hue_wohnzimmer_StehlampeSofa_Farbe changed from 23,83,80 to 23,83,70
2018-09-10 21:29:28.101 [vent.ItemStateChangedEvent] - Hue_wohnzimmer_StehlampeSofa_Farbe changed from 23,83,70 to 23,83,100
==> /var/log/openhab2/openhab.log <==
2018-09-10 21:29:28.184 [INFO ] [lipse.smarthome.model.script.TESTING] - Dimming the light
2018-09-10 21:29:28.185 [INFO ] [lipse.smarthome.model.script.TESTING] - 100
==> /var/log/openhab2/events.log <==
2018-09-10 21:29:22.189 [vent.ItemStateChangedEvent] - Hue_wohnzimmer_StehlampeSofa_Farbe changed from 23,83,80 to 23,83,70 2018-09-10 21:29:28.101 [vent.ItemStateChangedEvent] - Hue_wohnzimmer_StehlampeSofa_Farbe changed from 23,83,70 to 23,83,100
HERE!!
Your light goes back up to 100 approx 6 seconds after being set to 80 by the rule
There is nothing else in the log indicating that another rule is in play
What settings have you got in the light itself via the hue hub?