OH2: Timer and Rescheduling Problems

  • Platform information:

    • Release = Raspbian GNU/Linux 9 (stretch)
    • Kernel = Linux 4.19.66-v7+
    • Platform = Raspberry Pi 3 Model B Plus Rev 1.3
    • Uptime = 2 day(s). 9:41:35
    • CPU Usage = 18.94% avg over 4 cpu(s) (4 core(s) x 1 socket(s))
    • CPU Load = 1m: 0.81, 5m: 0.73, 15m: 0.59
    • Memory = Free: 0.15GB (17%), Used: 0.75GB (83%), Total: 0.90GB
    • Swap = Free: 0.09GB (100%), Used: 0.00GB (0%), Total: 0.09GB
    • Root = Free: 24.74GB (88%), Used: 3.31GB (12%), Total: 29.28GB
    • openHAB version: 2.4.0-1 (Release Build)
  • Issue of the topic: please be detailed explaining your issue
    Hi Everybody,

i’m having issues getting one of my timer-rules getting to work.
the “hue_0200_”…-items are those living color iris-things.

we have a remote-control for those lamps, that changes the color and brightness by every press of the “On”-Button in 4 different states. Each press will change the color of one or more of those iris-lamps.

what i’d like to be ablte to do is, switch all iris-lamps off after an amount of time, if there’s no button-press in that time - or the lamps haven’t turned off yet by pressing the “Off”-Button.

The only one exception is, that if’ the television in the bedroom is pingable (switched on), the lamps should stay on, because there is another timer, that switches the lamps after 5 minutes off, when the television is switched off.

my rules-file looks like this:

`
var Timer BedroomTimer = null

  rule "Bedroom 01"
  when Item hue_0200_0017884dd999_3_color changed or
       Item hue_0200_0017884dd999_4_color changed or
       Item hue_0200_0017884dd999_5_color changed
  then

    if ( Integer::parseInt(hue_0200_0017884dd999_3_color.state.toString().split(',').get(2)) === 0 &&
         Integer::parseInt(hue_0200_0017884dd999_4_color.state.toString().split(',').get(2)) === 0 && 
         Integer::parseInt(hue_0200_0017884dd999_5_color.state.toString().split(',').get(2)) === 0 ) {
           // all items are switched off

           logInfo("Bedroom", "all Living Color Lamps are switched OFF!")

           if ( BedroomTimer !== null ) {
             BedroomTimer.cancel()
             BedroomTimer = null
           }

    } else {
      logInfo("Bedroom", "Living Color Lamps state changed!")

      if ( BedroomTimer === null ) {
        BedroomTimer = createTimer(now.plusMinutes(2), [ |
        if (network_pingdevice_192_168_178_64_online.getState() !== ON) {
          logInfo("Bedroom 01 Timer", "Bedroom 01 Timer FIRED")
          hue_0200_0017884dd999_3_color.sendCommand(OFF)
          hue_0200_0017884dd999_5_color.sendCommand(OFF)
          hue_0200_0017884dd999_4_color.sendCommand(OFF)
          BedroomTimer = null
        }
        ])
      } else {
        logInfo("Bedroom 01 Timer", "rescheduling Timer...")
        BedroomTimer.reschedule(now.plusMinutes(2))
      }
    }

  end

`

in the openhab.log-file i see the following, if i change the brightness of one or more lamps:
2019-09-21 13:09:43.296 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:09:43.303 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:09:43.303 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:09:43.309 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:10:03.386 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:10:03.400 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:10:03.409 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:10:03.409 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:10:03.420 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:10:03.420 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:10:03.431 [WARN ] [el.script.internal.actions.TimerImpl] - An error occurred while rescheduling the job ‘DEFAULT.2019-09-21T13:10:08.078+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1a055c3
} ]’: Unable to store Job : ‘DEFAULT.2019-09-21T13:10:08.078+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1a055c3
} ]’, because one already exists with this identification.
2019-09-21 13:10:08.077 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Bedroom 01 Timer FIRED
2019-09-21 13:10:08.144 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:10:08.159 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:10:08.170 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:10:13.464 [INFO ] [lipse.smarthome.model.script.Bedroom] - all Living Color Lamps are switched OFF!
2019-09-21 13:12:03.435 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Bedroom 01 Timer FIRED

so for testing purposes, i set the timer interval to two minutes.
the timer sometimes(?) get’s fired even if there are other events that should reschedule the timer.
i can’t get this to work properly :frowning:

Help is highly appreciated.

Thanks in advance!

Kind Regards
BaBa

I think you have an syntax error: online.getState() must be online.state

i changed the rule a little bit - including your suggestion and added a little more logging-information:

  rule "Bedroom 01"
  when Item hue_0200_0017884dd999_3_color changed or
       Item hue_0200_0017884dd999_4_color changed or
       Item hue_0200_0017884dd999_5_color changed
  then

    if ( Integer::parseInt(hue_0200_0017884dd999_3_color.state.toString().split(',').get(2)) === 0 &&
         Integer::parseInt(hue_0200_0017884dd999_4_color.state.toString().split(',').get(2)) === 0 && 
         Integer::parseInt(hue_0200_0017884dd999_5_color.state.toString().split(',').get(2)) === 0 ) {
           // all items are switched off

           logInfo("Bedroom", "all Living Color Lamps are switched OFF!")
           logInfo("Bedroom", "let's see, if there's a running timer...")
           if ( BedroomTimer !== null ) {
             logInfo("Bedroom", "found a running timer. Cancelling...")
             BedroomTimer.cancel()
             logInfo("Bedroom", "set timer to null...")
             BedroomTimer = null
           }

    } else {
      logInfo("Bedroom", "Living Color Lamps state changed!")

      if ( BedroomTimer === null ) {
        BedroomTimer = createTimer(now.plusMinutes(2), [ |
        if (network_pingdevice_192_168_178_64_online.state !== ON) {
          logInfo("Bedroom 01 Timer", "Bedroom 01 Timer FIRED")
          hue_0200_0017884dd999_3_color.sendCommand(OFF)
          hue_0200_0017884dd999_5_color.sendCommand(OFF)
          hue_0200_0017884dd999_4_color.sendCommand(OFF)
          BedroomTimer = null
        }
        ])
      } else {
        logInfo("Bedroom 01 Timer", "rescheduling Timer...")
        BedroomTimer.reschedule(now.plusMinutes(2))
      }
    }

unfortunatetly it doesn’t work either:
2019-09-21 13:52:13.186 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:52:13.192 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:52:13.193 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 13:52:13.201 [WARN ] [el.script.internal.actions.TimerImpl] - An error occurred while rescheduling the job ‘DEFAULT.2019-09-21T13:52:28.233+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1cf981d
} ]’: Unable to store Job : ‘DEFAULT.2019-09-21T13:52:28.233+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@1cf981d
} ]’, because one already exists with this identification.
2019-09-21 13:52:28.245 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Bedroom 01 Timer FIRED
2019-09-21 13:52:28.254 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Bedroom 01 Timer FIRED
2019-09-21 13:52:28.384 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:52:28.386 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 13:52:33.303 [INFO ] [lipse.smarthome.model.script.Bedroom] - all Living Color Lamps are switched OFF!
2019-09-21 13:52:33.309 [INFO ] [lipse.smarthome.model.script.Bedroom] - let’s see, if there’s a running timer…
2019-09-21 13:52:33.316 [INFO ] [lipse.smarthome.model.script.Bedroom] - found a running timer. Cancelling…
2019-09-21 13:52:33.324 [INFO ] [lipse.smarthome.model.script.Bedroom] - set timer to null…
2019-09-21 13:54:13.203 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Bedroom 01 Timer FIRED
2019-09-21 13:54:28.425 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Bedroom 01 Timer FIRED

at least those two bold timers shouldn’t have been fired, because there were reschedulings. :confused:

Thank you for your suggestion anyway.

The part with getState() for a pingable device works great in another rule, where i check if my television in the living room is switched on, if not, do a specific action. :slight_smile:

Can you make a logInfo before the if with the information of your items e.g.:

logInfo(hue_3,hue_0200_0017884dd999_3_color.state.toString)
logInfo(hue_4,hue_0200_0017884dd999_3_color.state.toString)
logInfo(hue_5,hue_0200_0017884dd999_3_color.state.toString)
logInfo(trigger,triggeringItem.toString) // this will give you the item which triggers the rule, with all de info (name, state, groups, etc).

See what this gives you. Somehow the rule thinks that one of the lights is on and there is already a timer, so this will be rescheduled with 2 minutes, but at the same time it want to create a new timer.

1 Like

what i did here:
Switched Lights on. Waited a minute. Changed the brigthness and waited for the timer to be fired.

this is the logfile for hat timespan:

2019-09-21 16:19:20.361 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,82
2019-09-21 16:19:20.369 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,0
2019-09-21 16:19:20.383 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,0
2019-09-21 16:19:20.392 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_3_color (Type=ColorItem, State=215,4,82, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:19:20.417 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,82
2019-09-21 16:19:20.418 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:19:20.420 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,82
2019-09-21 16:19:20.424 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,82
2019-09-21 16:19:20.427 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,82
2019-09-21 16:19:20.430 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,82
2019-09-21 16:19:20.431 [INFO ] [rthome.model.script.Bedroom 01 Timer] - There’s no running timer. Creating one…
2019-09-21 16:19:20.434 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,82
2019-09-21 16:19:20.435 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_4_color (Type=ColorItem, State=232,3,82, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:19:20.439 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_5_color (Type=ColorItem, State=215,4,82, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:19:20.449 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer created…
2019-09-21 16:19:20.457 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:19:20.457 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:19:20.465 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 16:19:20.465 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 16:19:20.472 [WARN ] [el.script.internal.actions.TimerImpl] - An error occurred while rescheduling the job ‘DEFAULT.2019-09-21T16:21:20.438+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@56e713
} ]’: Unable to store Job : ‘DEFAULT.2019-09-21T16:21:20.438+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@56e713
} ]’, because one already exists with this identification.
2019-09-21 16:19:20.473 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer rescheduled.
2019-09-21 16:19:20.476 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer rescheduled.
2019-09-21 16:20:20.664 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,49
2019-09-21 16:20:20.676 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,50
2019-09-21 16:20:20.684 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,48
2019-09-21 16:20:20.692 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_3_color (Type=ColorItem, State=215,4,49, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:20:20.713 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,49
2019-09-21 16:20:20.714 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,49
2019-09-21 16:20:20.722 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,50
2019-09-21 16:20:20.722 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:20:20.724 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,50
2019-09-21 16:20:20.731 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,48
2019-09-21 16:20:20.733 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,48
2019-09-21 16:20:20.735 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 16:20:20.740 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_4_color (Type=ColorItem, State=232,3,50, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:20:20.741 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_5_color (Type=ColorItem, State=215,4,48, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:20:20.752 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer rescheduled.
2019-09-21 16:20:20.759 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:20:20.764 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:20:20.765 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 16:20:20.770 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 16:20:20.773 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer rescheduled.
2019-09-21 16:20:20.780 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer rescheduled.
2019-09-21 16:20:30.668 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,48
2019-09-21 16:20:30.674 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,48
2019-09-21 16:20:30.681 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,48
2019-09-21 16:20:30.688 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_3_color (Type=ColorItem, State=215,4,48, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:20:30.688 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,48
2019-09-21 16:20:30.695 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,48
2019-09-21 16:20:30.700 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,48
2019-09-21 16:20:30.704 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_4_color (Type=ColorItem, State=232,3,48, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:20:30.710 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:20:30.718 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 16:20:30.724 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:20:30.728 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer rescheduled.
2019-09-21 16:20:30.730 [INFO ] [rthome.model.script.Bedroom 01 Timer] - rescheduling Timer…
2019-09-21 16:20:30.738 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer rescheduled.
2019-09-21 16:21:09.962 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2019-09-21T16:21:09.961+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3a075f
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.model.script.engine.ScriptError.(ScriptError.java:66) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:226) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:244) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
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.$Proxy167.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) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
2019-09-21 16:21:09.962 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2019-09-21T16:21:09.957+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3a075f
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.model.script.engine.ScriptError.(ScriptError.java:66) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:226) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:244) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
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.$Proxy167.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) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
2019-09-21 16:21:10.093 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2019-09-21T16:21:09.961+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3a075f
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
Caused by: java.lang.NullPointerException
at org.eclipse.smarthome.model.script.engine.ScriptError.(ScriptError.java:66) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:226) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:244) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
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.$Proxy167.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
2019-09-21 16:21:10.179 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2019-09-21T16:21:09.957+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3a075f
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
Caused by: java.lang.NullPointerException
at org.eclipse.smarthome.model.script.engine.ScriptError.(ScriptError.java:66) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:226) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:244) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
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.$Proxy167.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
2019-09-21 16:21:54.292 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2019-09-21T16:21:54.233+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3a075f
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.model.script.engine.ScriptError.(ScriptError.java:66) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:226) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:244) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
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.$Proxy167.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) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
2019-09-21 16:21:54.377 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2019-09-21T16:21:54.233+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@3a075f
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
Caused by: java.lang.NullPointerException
at org.eclipse.smarthome.model.script.engine.ScriptError.(ScriptError.java:66) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:226) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:244) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
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.$Proxy167.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
2019-09-21 16:22:30.739 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Bedroom 01 Timer FIRED
2019-09-21 16:22:30.803 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,0
2019-09-21 16:22:30.803 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,0
2019-09-21 16:22:30.808 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,48
2019-09-21 16:22:30.808 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,48
2019-09-21 16:22:30.814 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,0
2019-09-21 16:22:30.814 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,0
2019-09-21 16:22:30.818 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_3_color (Type=ColorItem, State=215,4,0, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:22:30.819 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_5_color (Type=ColorItem, State=215,4,0, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:22:30.863 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:22:30.871 [INFO ] [lipse.smarthome.model.script.Bedroom] - Living Color Lamps state changed!
2019-09-21 16:22:30.875 [INFO ] [rthome.model.script.Bedroom 01 Timer] - There’s no running timer. Creating one…
2019-09-21 16:22:30.883 [INFO ] [rthome.model.script.Bedroom 01 Timer] - There’s no running timer. Creating one…
2019-09-21 16:22:30.893 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer created…
2019-09-21 16:22:30.905 [INFO ] [rthome.model.script.Bedroom 01 Timer] - Timer created…
2019-09-21 16:22:31.704 [INFO ] [eclipse.smarthome.model.script.hue_3] - 215,4,0
2019-09-21 16:22:31.712 [INFO ] [eclipse.smarthome.model.script.hue_4] - 232,3,0
2019-09-21 16:22:31.718 [INFO ] [eclipse.smarthome.model.script.hue_5] - 215,4,0
2019-09-21 16:22:31.725 [INFO ] [marthome.model.script.triggeringItem] - hue_0200_0017884dd999_4_color (Type=ColorItem, State=232,3,0, Label=Color, Category=null, Tags=[Lighting])
2019-09-21 16:22:31.759 [INFO ] [lipse.smarthome.model.script.Bedroom] - all Living Color Lamps are switched OFF!
2019-09-21 16:22:31.762 [INFO ] [lipse.smarthome.model.script.Bedroom] - let’s see, if there’s a running timer…
2019-09-21 16:22:31.768 [INFO ] [lipse.smarthome.model.script.Bedroom] - found a running timer. Cancelling…
2019-09-21 16:22:31.773 [INFO ] [lipse.smarthome.model.script.Bedroom] - set timer to null…

As far as I can see you sometimes have the situation that you try to reschedule the timer twice at the exact same time - resulting in an rescheduling error. Since you have that in every log you posted - maybe that is the root of the problem?

EDIT: Seems to be caused by more than one triggering item changing at the same time - the question is how to avoid that :thinking:

2 Likes

i can’t exclude that. :confused:

i think the problem is, that the items are changed together, so that the rule fires three times. once for each iris in the bedroom.

how to avoid this and still are able to react on each change of each iris?

I think that might help: ReentrantLock with Timer

i’ll give that a look and report back.

Thanks a lot!

I would concur that your underlying problem is virtually simultaneous multiple triggerings of a rule, all copies of that rule trying to update the same timer.

I don’t think the linked example using the timer itself as a lock will help you this time - you want to reschedule an active timer to extend it, not just ignore retriggers while timer is running.

Reentrant lock should do the job to prevent multiple simultaneous copies of the rule running.
You could configure the lock the usual way, to queue and run one at a time.

But here, you wouldn’t gain anything by allowing your timer to be rescheduled two or three times in a few milliseconds by queued rules. Just once will do.
The Lock can also be used to run the rule once and ignore re-triggers until rule finished. Once it has finished, retriggering (and so rescheduling) is allowed once again.

include java.util.concurrent.locks.ReentrantLock

val ReentrantLock bedroom1Lock = new ReentrantLock
var Timer BedroomTimer = null

rule "Bedroom 01"
when
   ...
then
   var boolean gotLock = bedroom1Lock.tryLock() // get the lock if we can, but as quick as we can
   if (gotLock) {   // if we did get the lock

        // Do  the rule stuff

        bedroom1Lock.unlock()  // MUST release the lock
    }  // else we didn't get the lock, and skip the rule body this time
end

Take care not to introduce any syntax errors in your rule body, or you may leave the Lock locked forever. Well, until rules file reloaded.

thank you all so much for reading all the stuff until the end ^.^

i realized, that ignoring retriggers doesn’t get me, where i want to go, so i modified the linked example a little bit, to fit my needs:

  rule "Bedroom 01"
  when Item hue_0200_0017884dd999_3_color changed or
       Item hue_0200_0017884dd999_4_color changed or
       Item hue_0200_0017884dd999_5_color changed
  then
    logInfo( "Bedroom 01", "LatchedBedroomTimerDefault state is {}", LatchedBedroomTimerDefault.state )
      LatchedBedroomTimerDefault.sendCommand(ON)
    // if ( LatchedBedroomTimerDefault.state !== ON ) {
    //   logInfo( "Bedroom 01", "Turning LachtedBedroomTimerDefault ON..." )
    // }
  end

this seems to work. But with the restriction, that i can not use the same timer more than once.
e.g. in my initial setup were two timers. One with a 20 Minute delay and another with a 5 second delay.

with your example, @rossko57, i should be able to reuse my old code and still be able to use a single timer variable and be able to reschedule it, which is what i prefer.

the “big” problem (in this case) with the “latched” timers is, that the lifetime is hardcoded into an items-file, so that i’ll need at least two items to fit my needs, which led me to other problems e.g. having a look at both timers, before doing any actions.

so i would prefer @rossko57’s solution, but haven’t enough time to implement and test it now.

i hope, i have enough time to figure it out in the next few days and i’ll report back!

1 Like

as promised, i’ll report back:

i changed my rule to this:

  rule "Bedroom 01"
  when Item hue_0200_0017884dd999_3_color changed or
       Item hue_0200_0017884dd999_4_color changed or
       Item hue_0200_0017884dd999_5_color changed
  then

    if ( Integer::parseInt(triggeringItem.state.toString().split(',').get(2)) === 0 ) {
      // all items are switched off

      logInfo("Bedroom 01 - OFF", "all Living Color Lamps are switched OFF!")
      logInfo("Bedroom 01 - OFF", "let's see, if there's a running timer...")
      if ( BedroomTimer !== null ) {
        logInfo("Bedroom 01 - OFF", "found a running timer. Cancelling...")
        BedroomTimer.cancel()
        logInfo("Bedroom 01 - OFF", "set timer to null...")
        BedroomTimer = null
      } else {
        logInfo("Bedroom 01 - OFF", "no running Timers found")
      }

    } else {

      var boolean gotLock = BedroomLock01.tryLock()
      try {
        logInfo("Bedroom 01 - BedroomLock01", "BedroomLock01.isLocked: {}", BedroomLock01.isLocked)
        if (gotLock) {
          logInfo("Bedroom 01 - BedroomLock01", "Living Color Lamps state changed & we have exclusive lock!")
          if ( BedroomTimer === null ) {
            logInfo("Bedroom 01 - Timer", "There's no running timer. Creating one...")
            BedroomTimer = createTimer(now.plusMinutes(20), [ |
              if (network_pingdevice_192_168_178_64_online.getState() !== "ON") {
                logInfo("Bedroom 01 - Timer", "Bedroom 01 Timer FIRED")
                hue_0200_0017884dd999_3_color.sendCommand(OFF)
                hue_0200_0017884dd999_5_color.sendCommand(OFF)
                hue_0200_0017884dd999_4_color.sendCommand(OFF)
                BedroomTimer = null
              }
            ])
            logInfo("Bedroom 01 - Timer", "Timer created...")
          } else {
            logInfo("Bedroom 01 - Timer", "rescheduling existing Timer...")
            BedroomTimer.reschedule(now.plusMinutes(20))
            logInfo("Bedroom 01 - Timer", "existing Timer rescheduled.")
          }
        } else {
          logInfo("Bedroom 01 - BedroomLock01", "Aborting. BedroomLock01 is currently locked!")
        }
      } finally {
        if (gotLock) {
          logInfo("Bedroom 01 - BedroomLock01", "releasing exclusive lock...")
          BedroomLock01.unlock()
          logInfo("Bedroom 01 - BedroomLock01", "BedrommLock01 unlocked.")
        }
      }
    }
    
  end

which results in this:

2019-09-24 16:15:22.464 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedroomLock01.isLocked: true
2019-09-24 16:15:22.470 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - Living Color Lamps state changed & we have exclusive lock!
2019-09-24 16:15:22.478 [INFO ] [home.model.script.Bedroom 01 - Timer] - There's no running timer. Creating one...
2019-09-24 16:15:22.493 [INFO ] [home.model.script.Bedroom 01 - Timer] - Timer created...
2019-09-24 16:15:22.502 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - releasing exclusive lock...
2019-09-24 16:15:22.510 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedrommLock01 unlocked.
2019-09-24 16:15:22.548 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedroomLock01.isLocked: true
2019-09-24 16:15:22.552 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedroomLock01.isLocked: true
2019-09-24 16:15:22.553 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - Living Color Lamps state changed & we have exclusive lock!
2019-09-24 16:15:22.556 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - Aborting. BedroomLock01 is currently locked!
2019-09-24 16:15:22.558 [INFO ] [home.model.script.Bedroom 01 - Timer] - rescheduling existing Timer...
2019-09-24 16:15:22.567 [INFO ] [home.model.script.Bedroom 01 - Timer] - existing Timer rescheduled.
2019-09-24 16:15:22.571 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - releasing exclusive lock...
2019-09-24 16:15:22.575 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedrommLock01 unlocked.
2019-09-24 16:16:22.850 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedroomLock01.isLocked: true
2019-09-24 16:16:22.865 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - Living Color Lamps state changed & we have exclusive lock!
2019-09-24 16:16:22.870 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedroomLock01.isLocked: true
2019-09-24 16:16:22.877 [INFO ] [home.model.script.Bedroom 01 - Timer] - rescheduling existing Timer...
2019-09-24 16:16:22.877 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - Aborting. BedroomLock01 is currently locked!
2019-09-24 16:16:22.890 [INFO ] [home.model.script.Bedroom 01 - Timer] - existing Timer rescheduled.
2019-09-24 16:16:22.894 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - releasing exclusive lock...
2019-09-24 16:16:22.898 [INFO ] [el.script.Bedroom 01 - BedroomLock01] - BedrommLock01 unlocked.
2019-09-24 16:36:22.897 [INFO ] [home.model.script.Bedroom 01 - Timer] - Bedroom 01 Timer FIRED
2019-09-24 16:36:22.985 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - all Living Color Lamps are switched OFF!
2019-09-24 16:36:22.991 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - let's see, if there's a running timer...
2019-09-24 16:36:23.002 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - no running Timers found
2019-09-24 16:36:23.021 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - all Living Color Lamps are switched OFF!
2019-09-24 16:36:23.026 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - let's see, if there's a running timer...
2019-09-24 16:36:23.032 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - no running Timers found
2019-09-24 16:36:30.252 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - all Living Color Lamps are switched OFF!
2019-09-24 16:36:30.257 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - let's see, if there's a running timer...
2019-09-24 16:36:30.262 [INFO ] [rthome.model.script.Bedroom 01 - OFF] - no running Timers found

so except for that the timer is fired once but the part with “all living color lamps are switched off!” is fired three times, it works like a charm!

i’ll put that off-part into the isLocked-Part. I think than i’ll get rid of firiing the Off-Part multiple times. at least i hope so ^.^

thank you so much! in the past few days i learned a lot!

kind regards
BaBa