Seite 1 von 1

Stromverbrauch der letzten Tage berechnen

Verfasst: 12. Dez 2020 23:06
von Baumtasche
Hallo zusammen,

ich hänge seid längeren an ein Problem, das ich einfach nicht lösen kann. Ich habe den Wallplug von fibaro, der neben den aktuellen Stromverbrauch, auch den Stromverbrauch kummuliert - also den Gesamtverbrauch seit dem letzten Reset anzeigt.
Beide Werte kann man in einer Variable auslesen.

Jetzt habe ich mir folgendes überlegt, wenn ich den Gesamtverbrauch täglich persistiere und danach resete, dann sollte ich doch den Stromverbrauch über eine rule, für z.B. die letzten 7 Tage berechnen können. Das funktioniert leider nicht. Die Itemvariable "ItemOfficeEngeryDay" bleibt immer bei Null.

Ich hoffe mir kann jemand helfen

Code: Alles auswählen

strategies {
        everyMinute : "0 * * * * ?"
        everyHour   : "0 0 * * * ?"
        everyDay    : "0 0 0 * * ?"
        default = everyChange

}

Items {       
        
        Office_MeterKwh:     strategy = everyDay, restoreOnStartup // Gesantverbrauch wird gespeichert
            
} 
Rule:

Code: Alles auswählen


rule "Reset Office Stromverbrauch"  

when
        Time cron "2 0 0 * * ?"
then 
    
        Office_MeterReset.sendCommand(ON)  //reset Gesamtverbrauchs
        Office_MeterReset.sendCommand(OFF)


end


rule "Berechnung Stromverbrauch Office"

when
     Time cron "0 0 0 * * ?"
then
     var Number Office3Tage = Office_MeterKwh.sumSince(now.minusDays(3))
     ItemOfficeEngeryDay.postUpdate(Office3Tage)
     
end


Re: Stromverbrauch der letzten Tage berechnen

Verfasst: 12. Dez 2020 23:45
von udo1toni
Welche Persistence nutzt Du?

Re: Stromverbrauch der letzten Tage berechnen

Verfasst: 13. Dez 2020 17:36
von Baumtasche
Ich nutze rrdj4.

Re: Stromverbrauch der letzten Tage berechnen

Verfasst: 13. Dez 2020 17:57
von udo1toni
Dann geht das so nicht :)

rrd4j ist ein wenig zickig, wenn es um solche Berechnungen geht. Eigentlich müsstest Du den Momentanverbrauch minütlich persistieren und rrd4j müsste dann daraus den Verbrauch ermitteln. Da müsste man allerdings mal scharf vergleichen, ob die ermittelten Werte auch schlüssig sind.

Da Du den Tagesverbrauch bequem ermitteln kannst, wäre mein Tipp, die Werte manuell in vier Items zu halten, in der Art:

Code: Alles auswählen

rule "Berechnung Stromverbrauch Office"

when
     Time cron "0 0 0 * * ?"
then
    val nDay2 = OfficeEnergyDay2.state 
    val nDay1 = OfficeEnergyDay1.state
    val nDay0 = Office_MeterKwh.state
    OfficeEnergyDay2.postUpdate(nDay1)
    OfficeEnergyDay1.postUpdate(nDay0)
     ItemOfficeEngeryDay.postUpdate(nDay0+nDay1+nDay2)
     Office_MeterReset.sendCommand(ON)
     // Office_MeterReset.sendCommand(OFF) // sollte eigentlich gar nicht nötig sein
end
Das sieht zwar nicht sonderlich elegant aus, sollte aber funktionieren. die Items OfficeEnergyDay2 und OfficeEnergyDay1 halten dann die Werte des vorletzten und letzten Tags, Office_MeterKwh liefert die Summe des aktuell vergangenen Tags und ItemOfficeEngeryDay bekommt die Summe dieser drei Items. Gleichzeitig werden die Items mit dem jeweils neuen Wert gefüllt und der Zähler wird zurückgesetzt. Ich gehe stark davon aus, dass der Reset nicht manuell auf OFF gewechselt werden muss.

Ich habe hier im Code nicht abgefangen, dass die Items zunächst keinen gültigen Wert halten, Du musst die Items also einmal mit 0 beschreiben, damit die Rule nicht mit einem Fehler abbricht. Alternativ könnte man den Code auch noch erweitern...

Re: Stromverbrauch der letzten Tage berechnen

Verfasst: 14. Dez 2020 15:41
von Baumtasche
Super, vielen Dank. Ich werde das mal umsetzen und probieren.

Re: Stromverbrauch der letzten Tage berechnen

Verfasst: 14. Dez 2020 15:52
von Baumtasche
Eine Frage noch dazu, wenn rrdj4 zu zickig ist, gibt es dann überhaupt einen sinnvollen Einsatz für "everyday". Ich habe in einem anderen Thread auch gelesen, das wenn man mit everyday speichert, das Diagramm leer bleibt. :|

Re: Stromverbrauch der letzten Tage berechnen

Verfasst: 15. Dez 2020 12:35
von udo1toni
Wenn Du Diagrame verwenden willst, ist bei rrd4j everyMinute als Strategy zwingend. Das hängt mit der Datenstrukturen und dem Zugriff durch die Diagramm-Engine (keine Ahnung, wie die genau heißt...)

Grundsätzlich ist rrd4j schon in Ordnung, aber grade was lange auseinanderliegen Werte betrifft, ist rrd4j nicht die erste Wahl :) bei drei Tagen werden verschiedene Ebenen des Datenvorhalts benötigt, und rrd4j berechnet aus den Einzelwerten Durchschnittswerte für die nächste Stufe. Es kann gut sein, dass das mit so wenigen Werten (einer pro Tag) einfach nicht geht.


Gesendet von iPad mit Tapatalk

Re: Stromverbrauch der letzten Tage berechnen

Verfasst: 16. Dez 2020 21:54
von Baumtasche
Danke udo1toni