Hello!
i have found various irrigation rules on this forum and on other sites and wrote (tried to adapt various examples) the following rule:
var Timer BW_Auto_Timer = null
var Timer BW_Z1_Timer = null
var Timer BW_Z2_StartTimer = null
var Timer BW_Z2_StopTimer = null
/* Bewässerung */
rule "Bewässerung Neu"
when
Item TestBewaesserung received command ON
then
// Tag aktiviert?
if (gWTWasser.members.filter(w | w.name=="WT_"+now.getDayOfWeek.toString && w.state==ON).size==0) {
logInfo("Garten","keine Bewässerung, Wochentag deaktiviert")
return
}
// Niederschlag?
var Number Niederschlag = (Niederschlag_WSK.state as DecimalType) + (Niederschlag_WSK_24h.state as DecimalType)
if (Niederschlag > 4) {
logInfo("Garten","keine Bewässerung, Summe Niederschlag = " + Niederschlag)
return
}
var DateTime startTime
var DateTime endTime
val LZ1 = (BW_Auto_LZ1.state as DecimalType).intValue
val LZ2 = (BW_Auto_LZ2.state as DecimalType).intValue
if (LZ1 > 0) {
endTime = now.plusMinutes(LZ1)
// var String tmpZ1 = endTime.state.format("%1$td.%1$tm %1$tH:%1$tM") this does not work...
BW_Z1.sendCommand(ON)
BW_Z1_state.postUpdate(ON)
logInfo("Garten","Zone 1 wird bis " + endTime + " bewässert")
BW_Z1_Timer = createTimer(endTime) [|
BW_Z1.sendCommand(OFF)
BW_Z1_state.postUpdate(OFF)
BW_Z1_LastRun.postUpdate(new DateTimeType())
logInfo("Garten","Bewässerung Zone 1 abgeschlossen")
]
startTime = endTime.plusMinutes(1)
logInfo("Garten", startTime + " = Start Zone 2")
}
if (LZ2 > 0) {
endTime = startTime.plusMinutes(LZ2)
BW_Z2_StartTimer = createTimer(startTime) [|
BW_Z2.sendCommand(ON)
BW_Z2_state.postUpdate(ON)
logInfo("Garten","Zone 2 wird bis " + endTime + " bewässert")
]
BW_Z2_StopTimer = createTimer(endTime) [|
BW_Z2.sendCommand(OFF)
BW_Z2_state.postUpdate(OFF)
BW_Z2_LastRun.postUpdate(new DateTimeType())
logInfo("Garten","Bewässerung Zone 2 abgeschlossen")
TestBewaesserung.postUpdate(OFF)
]
}
end
rule "Bewässerung Abbrechen" // abort Timers
when
Item TestBewaesserung received command OFF
then
// Beregnung abbrechen, wenn sie gestartet wurde
if (BW_Z1_Timer !== null) {
BW_Z1_Timer.cancel
BW_Z1_Timer = null
logInfo("Garten", "Zone 1 Bewässerung deaktiviert")
}
if (BW_Z2_StartTimer !== null) {
BW_Z2_StartTimer.cancel
BW_Z2_StartTimer = null
logInfo("Garten", "Zone 2 Bewässerung deaktiviert")
}
if (BW_Z2_StopTimer !== null) {
BW_Z2_StopTimer.cancel
BW_Z2_StopTimer = null
}
if (BW_Z1.state == ON) {
BW_Z1.sendCommand(OFF)
}
if (BW_Z2.state == ON) {
BW_Z2.sendCommand(OFF)
}
end
both rules seem to work, but after several minutes i get a ton of these errors:
2021-03-26 13:36:57.070 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.Timer 27 2021-03-26T13:36:57.068+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
sendCommand(<XFeatureCallImplCustom>,<XFeatureCallImplCustom>)
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.model.script.engine.ScriptError.<init>(ScriptError.java:65) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:991) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:954) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:235) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1205) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1135) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:1081) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:991) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:954) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:235) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:239) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:201) ~[?:?]
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.$Proxy534.apply(Unknown Source) ~[?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:48) ~[?:?]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [bundleFile:?]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [bundleFile:?]
2021-03-26 13:36:57.101 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.Timer 27 2021-03-26T13:36:57.068+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
sendCommand(<XFeatureCallImplCustom>,<XFeatureCallImplCustom>)
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [bundleFile:?]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [bundleFile:?]
Caused by: java.lang.NullPointerException
at org.eclipse.smarthome.model.script.engine.ScriptError.<init>(ScriptError.java:65) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:991) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:954) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:235) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1205) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1135) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:1081) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:991) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:954) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:235) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:239) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:201) ~[?:?]
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.$Proxy534.apply(Unknown Source) ~[?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:48) ~[?:?]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[?:?]
... 1 more
i don’t understand what started “Job DEFAULT.Timer 27” and i don’t understand at all what this error means.
i’ve been looking for related threads on this problem but i still don’t have the slightest idea whats happening.
any help would be appreciated!