I want to write a Rule in openHAB2, which increments a counter of all group items. The items:
Group counters
Number cnt1 (counters)
Number cnt2 (counters)
My try of a rule:
rule "Increase value .1 per minute"
when
Time cron "0 * * * * ?" or
System started
then
// Initialize. Necessary?
counters?.members.forEach(counter|
postUpdate(counter, 0.0)
)
counters?.members.forEach(counter|
postUpdate(counter, 0.1 + counter.state)
}
end
But that does not work. Exception:
Error during the execution of startup rule 'Increase value .1 per minute': Could not invoke method: org.eclipse.xtext.xbase.lib.DoubleExtensions.operator_plus(double,byte) on instance: null
I tried to explore the type of counter.state, and with logInfo(counter.state.class)
it correctly logs ...DecimalType
.
it seems the implicit type casting doesn't seem to work. If you'd change the rule to something like:
rule "Increase value .1 per minute"
when
Time cron "0 * * * * ?" or
System started
then
// Initialize. Necessary?
counters?.members.forEach(counter|
if (counter.state == null) {
postUpdate(counter, 0.0)
}
)
counters?.members.forEach(counter|
postUpdate(counter, 0.1 + (counter.state as DecimalType))
}
end
it should work. Hope this helps,
Thomas E.-E.