Ankündigung

Einklappen
Keine Ankündigung bisher.

Regel fürs Zählen von Item Changes

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Regel fürs Zählen von Item Changes

    Hi Zusammen,

    ich Versuche mir gerade eine Regel zu bauen, die mir anzeigt, wie oft sich an einem Tag der Wert eines ITEMs ändert.

    Dazu bin ich die Sache wie folgt angegangen:

    Code:
    rule "Reset Count Brenner Starts 24 Hrs"
    	when 
    		Time cron "0 00 00 * * ?"
    	then
    		// Setze Zaehler auf 0 zurueck
    		postUpdate(HEIZUNG_BRENNER_STARTS_DAILY_COUNT, 0)
    end
    
    rule "Count Brenner Starts 24 Hrs"
    	when
    		// Fuehrt Regel aus wenn ITEM Wert sich aendert
    		Item HEIZUNG_BRENNER_STARTS changed
    	then
    		// Kopiere alten Wert in Variable
    		var oldcount = (HEIZUNG_BRENNER_STARTS_DAILY_COUNT.state as DecimalType).intValue
    		// Addiere 1 zu alter Variable
    		var newcount = oldcount.intValue + 1
    		// Schreibe neuen Wert in ITEM
    		HEIZUNG_BRENNER_STARTS_DAILY_COUNT.postUpdate(newcount)
    end

    Hintergrund Infos:
    Das Item "HEIZUNG_BRENNER_STARTS" hat einen fortlaufenden Wert. Bsp.: 100. Dieser Wert erhöht sich jedes mal um 1 wenn der Brenner gestartet wurde.

    Leider ist das ungenau, da openhab manchmal ein Update als change registriert und damit den Wert erhöht.


    Andere Möglichkeit:

    Man könnte ja den den Wert der Brennerstarts täglich um 0.00 Uhr speichern, und dann immer die Differenz zum Startwert errechnen.
    Nur hier komme ich irgendwie nicht weiter:

    Bsp:

    Code:
    rule "TEST Reset Count Brenner Starts 24 Hrs"
    	when 
    		Time cron "0 00 00 * * ?"
    	then
    		// Setze Zaehler auf 0 zurueck
    		postUpdate(HEIZUNG_BRENNER_STARTS_DAILY_COUNT, 0)
    end
    
    rule "TEST Count Brenner Starts 24 Hrs"
    	when
    		// Fuehrt Regel aus wenn ITEM Wert sich aendert
    		Item HEIZUNG_BRENNER_STARTS changed
    	then
    		var oldcount = ???
    		var currentcount = (HEIZUNG_BRENNER_STARTS.state as DecimalType).intValue
    		
    		var newcount.intValue = currencount - oldcount.intValue
    		
    		HEIZUNG_BRENNER_STARTS_DAILY_COUNT.postUpdate(newcount)
    end
    Gibt es also eine Möglichkeit den Wert eines Items mit seinem Vorherigem Wert zu vergleichen?
    Oder gibt es eine andere Möglichkeit?

    Danke schon mal für eure Inupts

    Grüße

    #2
    Nun, warum auch immer scheint es jetzt mit "if item state changed" zu funktionieren.

    Damit ist das für mich erledigt ;-)

    Kommentar

    Lädt...
    X