Как написать правило openHAB, которое увеличивает число?

Я хочу написать правило в openHAB2, которое увеличивает счетчик всех элементов группы. Предметы:

Group counters
Number cnt1 (counters)
Number cnt2 (counters)

Моя попытка правила:

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

Но это не работает. Исключение: 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

Я пытался исследовать тип counter.state, и с logInfo(counter.state.class) он правильно регистрирует ...DecimalType.


person sja    schedule 12.03.2015    source источник


Ответы (1)


кажется, что неявное приведение типов не работает. Если бы вы изменили правило на что-то вроде:

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

он должен работать. Надеюсь это поможет,

Томас Э.-Э.

person thomasee    schedule 13.03.2015