All,
I am using a Raspberry pi 3B with openhabian, but don’t get the following rule solved (I guess it’s since 2.5 stable).
The rule tries to get the distance between the car and two potential drivers:
rule "Check for Driver (Engine ON)"
when
Item CarEngine changed to ON
then
logInfo("*** DEBUG ***", "*** Pulpo Engine STARTED ***")
if(previousState == NULL) return; // failing fast
// set distance threshold
val int dist = 400
// create a delay for the distance values to settle !?
createTimer(now.plusSeconds(60)) [
// ***************** Trip START *************************
val Number distDNA = (CarDistDNA.minimumSince(now.minusMinutes(10)).state as DecimalType)
val Number distNCO = (CarDistNCO.minimumSince(now.minusMinutes(10)).state as DecimalType)
/ // Plausibiilty Check
if(distDNA < 0 && distNCO < 0) {
logInfo("CAR_TRIP:", "Engine started Dist calc returned -1\nNo valid Vehicle position?")
return;
}
logInfo("CAR_TRIP:", "Pulpo STARTED - distDNA: " + distDNA + " distNCO: " + distNCO)
// initialize Driver
CarTripDriver.postUpdate("-")
// both leaving...
if(distDNA <= dist && distNCO <= dist) {
CarTripDriver.postUpdate("DNA & NCO")
}
// DNA leaving...
else if(distDNA <= dist && distNCO > dist) {
CarTripDriver.postUpdate("DNA")
}
// NCO leaving...
else if(distDNA > dist && distNCO <= dist) {
CarTripDriver.postUpdate("NCO")
}
// driver unknown
else {
CarTripDriver.postUpdate("unbekannt")
}
logInfo("CAR_TRIP:", "Pulpo START - CarTripDriver: " + CarTripDriver.state.toString + " distDNA: " + distDNA + " distNCO: " + distNCO)
]
end
When the rule is triggered (and the timer expired), I get:
2020-01-20 12:34:38.508 [INFO ] [smarthome.model.script.*** DEBUG ***] - *** Pulpo Engine STARTED ***
2020-01-20 12:35:38.568 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.Timer 8 2020-01-20T12:35:38.515+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
val distDNA
val distNCO
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
<XFeatureCallImplCustom>.postUpdate(<XStringLiteralImpl>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@18830d0 (conditionalExpression: false)
logInfo(<XStringLiteralImpl>,<XBinaryOperationImplCustom>)
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.core.library.types.QuantityType.divide(QuantityType.java:396) ~[?:?]
at org.eclipse.smarthome.model.script.lib.NumberExtensions.operator_divide(NumberExtensions.java:290) ~[?:?]
at org.eclipse.smarthome.model.script.lib.NumberExtensions.operator_divide(NumberExtensions.java:286) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1175) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1150) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1136) ~[?:?]
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:237) ~[?:?]
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:916) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:275) ~[?:?]
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.$Proxy151.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:?]
I have looked into the history of this rule and this setup used to work
EDIT:
I guess it’s related to the persistence request!?
(default is influxdb, the dist items are member of Group G_Dist, which is persisted on everyChange)