ich möchte gerne den Verbrauch zwischen dem aktuellen Zeitpunkt und einem Zeitpunkt in der Vergangenheit ermitteln (Datum der Zählerablesung.) Die entsprechende Variable wird als „Zähler“ geloggt.
Das soll dann für den Hauptzähler und einzelne Verbrauchszähler passieren, so dass ich deren Prozentsatz vom Gesamtverbrauch ermitteln und mit einem Pie-Chart darstellen kann.
Wie kann man sowas umsetzen? Mit der Funktion AC_AggregatedValues bin ich da nicht weitergekommen.
bei AC_GetAggregatedValues lagst du schon ganz richtig. Hiermit könntest du die ganzen Tagesaggregation auslesen und alle Avg-Werte aufsummieren. Bei Zähler-Variablen enthält Avg nämlich den Anstieg des Zählers im Verlaufe des Tages. Wenn du das über alle Tage summierst, hast du also den Anstieg seit dem vorgegebenen Datum.
Wenn du sonst schon einen Ansatz hast, dann kannst du den gerne hier posten. Dann können wir uns den gemeinsam anschauen und eventuelle Probleme erkennen.
Mit welcher Aggregationsstufe müsste ich denn da arbeiten? Je nach dem wie groß der Zeitunterschied zwischen Ablesung und aktuellem Datum ist kommen ja entweder ganz wenig oder ganz viele Avg-Werte raus, die dann beim Aufruf des Graphen berechnet/summiert werden müssen.
Alternativ hatte ich daran gedacht, „irgendwie“ einen Wert zum Ablesedatum aus dem Archiv zu holen. Und zusätzlich noch den letzten Wert vor dem aktuellen Datum. Darüber könnte man dann „einfach“ die Differenz bilden.
Ginge das über AC_GetLoggedValues? Aber wie stelle ich es an, dass ich genau einen Wert zum Ablesedatum bekomme und nicht mehrere?
Danke! Schaue ich mir nochmal genau an.
Da geht es zwar immer um die letzten x Stunden/Tage wobei sich in meinem Fall das ja ändert, da ich den Verbrauch ab einem bestimmten Datum bis zum aktuellen Zeitpunkt ermitteln möchte. Aber vielleicht lässt sich was übertragen.
GetLoggedValues ist auch eine Möglichkeit, hat aber leider ein paar Nachteile.
Zum einen kann die Menge der ausgelesenen Werte deutlich höher sein, als bei GetAggregatedValues. Wird der Zähler eventuell mehrmals in der Minute aktualisiert, wird das sehr schnell eine sehr große Menge an Werten. Aber falls der Wert nicht so häufig, beispielsweise täglich oder auch halbtäglich, aktualisiert wird, wäre das kein Problem. Was „nicht so häufig“ bedeutet, hängt natürlich von der betrachteten Zeit ab.
Zum anderen kannst du beim Vergleich vom ersten und letzten geloggten Wert im Gegensatz zu GetAggregatedValues kein Zurücksetzen des Zählers betrachten. Bei GetAggregatedValues wird ein Zurücksetzen auf 0 nicht betrachtet, da nur positive Unterschiede aufsummiert werden. Wenn du natürlich sicherstellen kannst, dass der Zähler nicht zurückgesetzt wird, wäre das allerdings auch kein Problem.
Ich würde daher zu GetAggregatedValues tendieren. Selbst wenn du hier eine Zeit über drei Jahre betrachtest, sind das „nur“ ~1000 Werte, das sollte für deinen Rechner kein Problem darstellen.