@rlkoshak, it’s about 30 sets of 3 items each. The rule is quite simple it just substracts the set temperature from the current temperature and stores result in another NumberItem.
I have about 30 thermostats, each sends the current temperature every 5-10 minutes. The error occurs about 3 times a day.
If your reason of this error is correct, the error should disappear, because i added a guard before the item state calculation (if(actitem.state !== null && setitem.state !== null)
). And additionally the message of an undefined state should appear.
This is the latest version of the rule. All these comments are from trying to track this error down.
rule "calc diff temp"
when
Member of gActTemp changed
then
// logInfo(logger, "[ERROR] calc diff temp: trigger: " + triggeringItem.name)
Thread::sleep(100)
val NumberItem actitem = triggeringItem as NumberItem
// logInfo(logger, "[ERROR] calc diff temp: number: " + actitem.name)
if (actitem !== null)
{
val NumberItem setitem = gSetTemp.members.filter[ i | i.name==String::format("%s_SETTEMP",actitem.name.split("_").get(0)) ].last
// logInfo(logger, "[ERROR] calc diff temp: set: " + setitem.name)
val NumberItem diffitem = gDiffTemp.members.filter[ i | i.name==String::format("%s_DIFFTEMP",actitem.name.split("_").get(0)) ].last
// logInfo(logger, "[ERROR] calc diff temp: diff: " + diffitem.name)
if (setitem !== null && diffitem !== null)
{
if(actitem.state !== null && setitem.state !== null) {
var Number diff = (actitem.state as DecimalType) - (setitem.state as DecimalType)
diffitem.postUpdate(diff)
}
else
{
logInfo(logger, String::format("state undefined: %s", actitem.name) )
}
}
else
{
logError(logger, String::format("SET or DIFF undefined: %s", actitem.name))
}
} else {
logError(logger, "ACT undefined.")
}
end
This is one set of items (Believe me, all sets are similar defined):
Number AZHK_SETTEMP "AZHK (Soll)[%.1f °C]" <temperature> (gAZTemp,gSetTemp,gRestoreOnStartup,gPersist,gPersistNumber) { channel = "homematic:HG-HM-CC-RT-DN:homegear:NEQ0172836:4#SET_TEMPERATURE" }
Number AZHK_ACTUALTEMP "AZHK (Ist)[%.1f °C]" <temperature> (gAZTemp,AZHK_Heizung,gActTemp,gRestoreOnStartup,gPersist,gPersistNumber) { channel = "homematic:HG-HM-CC-RT-DN:homegear:NEQ0172836:4#ACTUAL_TEMPERATURE" }
Number AZHK_DIFFTEMP "Diff AZHK [%.1f °C]" <temperature> (gDiffTemp,gRestoreOnStartup,gPersist,gPersistNumber)
Here is the relevant log excerpt:
cat /var/log/openhab2/openhab.log | grep calc\ diff\ temp
2018-05-31 18:57:16.246 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-01 04:41:14.212 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-01 19:30:15.238 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-02 12:00:20.159 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-02 14:18:39.369 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-02 15:36:30.317 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-03 16:04:27.650 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-03 16:58:23.334 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-03 17:14:08.848 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-03 17:36:16.809 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-04 03:22:53.376 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-04 18:45:14.969 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-05 13:26:17.763 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-05 19:33:17.097 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-05 22:19:35.485 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-05 22:24:22.034 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-06 01:20:35.159 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-06 17:54:14.138 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-07 01:09:16.948 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-07 09:02:20.435 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-07 13:53:44.907 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-08 02:41:16.037 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-08 05:14:15.048 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null
2018-06-08 14:33:16.683 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'calc diff temp': null