Motion Rule dont Count?

Hello,

why this rule dont count my motions?

rule “Bewegungen zählen (inklusive ausser Haus)“
when
Item eyemove changed from 0 to 1
then
if (nog_tag.state == ON && eyemove.state == 1) {
sum = sum + 1;
eyemovegesamt.postUpdate(sum)
}
else
if (nog_tag.state == OFF && eyemove.state == 1) {
suma = suma + 1;
eyemovegesamta.postUpdate(suma)
pushover(”[openHAB - ALARM!] Bewegung ohne Präsenz registiert!”)
}
end

Thanks for help

Daniel

Where did you define sum and suma? Is eyemove of type number? Why do you double check state of eyemove? (rule trigger is only to trigger if changed from 0 to 1, so eyemove.state is 1)

I would suggest to simplify the rule:

rule "Bewegungen zählen (inklusive ausser Haus)"
when
    Item eyemove changed to 1                                            // could could be NULL to 1 either
then
    if (!(eyemovegesamt.state instanceof Number))
        eyemovegesamt.postUpdate(0)                                      // ensure the item is initialized
    if (!(eyemovegesamta.state instanceof Number)) 
        eyemovegesamta.postUpdate(0)                                     // ensure the item is initialized
    if (nog_tag.state == ON) 
        eyemovegesamt.postUpdate((eyemovegesamt.state as Number) + 1)    // add 1 to actual state 
    else {
        eyemovegesamta.postUpdate((eyemovegesamta.state as Number) + 1)  // add 1 to actual state
        pushover("[openHAB - ALARM!] Bewegung ohne Präsenz registiert!")
    }
end

You won’t need the first two if clauses if you do a persistence with restoreOnStartup strategy (of course after a initial initializing) :wink:

Thanks for help. Now it works:

//_________________________________________________________________________________________
rule "Bewegungen zählen (inklusive ausser Haus)"
when
	Item eyemove changed from 0 to 1
then
 	if (nog_tag.state == "ON") 
        eyemovegesamt.postUpdate((eyemovegesamt.state as Number) + 1) 
    else {
        eyemovegesamta.postUpdate((eyemovegesamta.state as Number) + 1)
        pushover("[openHAB - ALARM!] Bewegung ohne Präsenz registiert!")
    }

end

eyemovegesamt/a is define as Number Item and set to 0 on startup :wink: