Check when statet changed

I have an array of mysensors around the house. Sometimes bad things happen and i want OH2 to notify me if the sensors hasn’e sent any update for a set period of time. Searching throught the forums and examples i’ve built up a rule below.
At first it didn’t work but i figured that was due to rrd4 as a default persistance. So i’ve changed it to mysql which i use. Now i get a long error shown below

rule "Check sensors"   
when
Time cron "* */30 * * * ?"
then
if(!sense_bedro_temp.changedSince(now.minusMinutes(50)))
{
    sendTelegram("botX","Mysensor bedroom")
    logDebug("SENSOR SPAL")
}
if(!sense_child_temp.changedSince(now.minusMinutes(50)))
{
    sendTelegram("botX","Mysensor kid")
    logDebug("SENSOR KID")
}
if(!sense_balko_temp.changedSince(now.minusMinutes(50)))
{
    sendTelegram("botX","Mysensor balc")
    logDebug("SENSOR BALK")
}
if(!sense_kitch_temp.changedSince(now.minusMinutes(50)))
{
    sendTelegram("botX","Mysensor kitch")
    logDebug("SENSOR KITCH")
}
end

log

2016-06-26 09:30:59.026 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule Check sensors
org.eclipse.emf.common.util.BasicEList$BasicIndexOutOfBoundsException: index=1, size=1
    at org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:346)[64:org.eclipse.emf.common:2.11.0.v20150805-0538]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1114)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1045)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:991)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:114)[124:org.eclipse.smarthome.model.script:0.8.0.b5]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:901)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:864)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:223)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:459)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:243)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:189)[140:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
    at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:77)[125:org.eclipse.smarthome.model.script.runtime:0.8.0.b5]
    at org.eclipse.smarthome.model.rule.runtime.internal.engine.ExecuteRuleJob.execute(ExecuteRuleJob.java:60)[123:org.eclipse.smarthome.model.rule.runtime:0.8.0.b5]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)[103:org.eclipse.smarthome.core.scheduler:0.8.0.b5]
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)[103:org.eclipse.smarthome.core.scheduler:0.8.0.b5]

:slight_smile: First thing is, the Time cron expression is wrong.

I think it should be

Time cron "0 0/30 * * * ?"

to execute the rule every half hour, beginning @ xx:00:00.

The second thing is, the logDebug is also not correct, as the log has to be like

logDebug("logger","Log Message")

where “logger” is the logger name (which you can set to DEBUG level) and “Log Message” is the information to log, so for you it should be something like

logDebug("sensorCheck","Sensor SPAL")

Furthermore to see any logging, you will have to login to karaf console and

log:set DEBUG org.eclipse.smarthome.model.script.sensorCheck