I think, I need to solve the existing problems firstā¦after 12h running the rule, I receive some errors from time to time:
2019-03-01 09:09:41.218 [INFO ] [.eclipse.smarthome.model.script.Test] - Running Window openNEW Rule: EG_Vi_hkpump == ON
2019-03-01 09:09:41.225 [INFO ] [.eclipse.smarthome.model.script.Test] - stopMotionTimer is null, proceeding to create the timer
2019-03-01 09:09:41.233 [INFO ] [.eclipse.smarthome.model.script.Test] - Rule is done
2019-03-01 09:10:32.078 [INFO ] [.smarthome.model.script.system.rules] - Uptime updated to 2 Tage / 6 Std. / 9 Min.
2019-03-01 09:10:41.231 [INFO ] [.eclipse.smarthome.model.script.Test] - Inside the timer
2019-03-01 09:10:41.356 [INFO ] [.eclipse.smarthome.model.script.Test] - Open window Items: [DB_fe_te (Type=ContactItem, State=OPEN, Label=Technik Fenster, Category=null, Groups=[gHFenster, gDB, gDBFenster, gTE, gHContacts])]
2019-03-01 09:10:41.426 [INFO ] [.eclipse.smarthome.model.script.Test] - Open window names: [Technikraum im Dachboden]
2019-03-01 09:10:41.489 [INFO ] [.eclipse.smarthome.model.script.Test] - Open window message: Technikraum im Dachboden
2019-03-01 09:10:41.495 [INFO ] [.eclipse.smarthome.model.script.Test] - Sent message to the Echo
2019-03-01 09:10:41.499 [INFO ] [.eclipse.smarthome.model.script.Test] - Set the Timer to null
2019-03-01 09:11:21.158 [INFO ] [.eclipse.smarthome.model.script.Test] - Inside the timer
2019-03-01 09:11:21.166 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2019-03-01T09:11:21.155+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>)
var openWins
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
var openWinsNames
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
var openWinsMsg
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
<null>.openWinsMsg = <XMemberFeatureCallImplCustom>
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
<XFeatureCallImplCustom>.sendCommand(<XBinaryOperationImplCustom>)
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>)
<null>.stopMotionTimer = <XNullLiteralImplCustom>
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>)
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.model.script.engine.ScriptError.<init>(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:772) ~[?:?]
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._doEvaluate(XbaseInterpreter.java:827) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:264) ~[?:?]
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.$Proxy150.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-03-01 09:11:21.340 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2019-03-01T09:11:21.155+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>)
var openWins
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
var openWinsNames
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
var openWinsMsg
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
<null>.openWinsMsg = <XMemberFeatureCallImplCustom>
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
<XFeatureCallImplCustom>.sendCommand(<XBinaryOperationImplCustom>)
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>)
<null>.stopMotionTimer = <XNullLiteralImplCustom>
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>)
} ] 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.<init>(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:772) ~[?:?]
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._doEvaluate(XbaseInterpreter.java:827) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:264) ~[?:?]
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.$Proxy150.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 rule is actually like this:
rule "Window state announcement"
when
Member of gHContacts changed
then
if(previousState == NULL) return;
if(gHContacts.members.filter[ w | w.state == OPEN ].size == 0) {
stopMotionTimer?.cancel
stopMotionTimer = null
logInfo("Test","All windows closed. Ending...")
Echo_TTS.sendCommand("Ich registriere, dass alle Fenster nun geschlossen sind. Danke!")
return;
}
var Number TimerLength = 1
logInfo("Test", "Running Window openNEW Rule: EG_Vi_hkpump == " + EG_Vi_hkpump.state.toString)
if(EG_Vi_hkpump.state == OFF) return;
if(triggeringItem.state == CLOSED)
TimerLength = 1
if(stopMotionTimer !== null)
stopMotionTimer.reschedule(now.plusMinutes(TimerLength.intValue))
else {
logInfo("Test", "stopMotionTimer is null, proceeding to create the timer")
// Set the timer
stopMotionTimer = createTimer(now.plusMinutes(TimerLength.intValue), [|
logInfo("Test", "Inside the timer")
// Generate a list of all the open windows
var openWins = gHContacts.members.filter[ w | w.state == OPEN ]
logInfo("Test", "Open window Items: " + openWins)
var openWinsNames = openWins.map[ transform("MAP", "windows.map", name) ]
logInfo("Test", "Open window names: " + openWinsNames)
var openWinsMsg = openWinsNames.reduce[ msg, winName | msg + " und " + winName ]
logInfo("Test", "Open window message: " + openWinsMsg)
//openWinsMsg = openWinsMsg.replaceFirst(" und ", "") // delete the first comma
//logInfo("Test", "Deleted the first und: " + openWinsMsg)
// openWinsMsg = openWinsMsg.replaceLast(", ", "und ") // replace the last comma with "und"
// logInfo("Test", "Replaced last comma with und: " + openWinsMsg)
Echo_TTS.sendCommand("Die Heizung ist an. Bitte Fenster schlieĆen im " + openWinsMsg + ".")
logInfo("Test", "Sent message to the Echo")
stopMotionTimer = null
logInfo("Test", "Set the Timer to null")
])
}
logInfo("Test", "Rule is done")
end
Any idea what the problem is?