Rollierende + kumulierte Werte aufschlüsseln

Begonnen von Speedy68, 06 März 2019, 09:39:47

Vorheriges Thema - Nächstes Thema

Speedy68

Hallo,

ich bekomme von meiner Heizung leider nur rollierende, kumulierte Messwerte der letzten 52 Wochen. Montag um 0:00 Uhr werden die Werte jeweils aktualisiert. Solange die Heizung neu ist, habe ich das Delta zur Vorwoche und damit den jeweiligen Wochenverbrauch.
Was mache ich nach einem Jahr? Hat jemand eine Idee? Ich müsste ja jetzt schon anfangen, die selbstermittelten Delta-Werte in irgendwelche Logs zu schreiben um in einem Jahr vorbereitet zu sein...

Die Excel Berechnung in einem Jahr sähe so aus:
(aktueller 52-Wochen-Wert der Heizung) - (52-Wochenwert-Wochen-Wert der Heizung Vorwoche) + (ermittelter Delta-Wert der Heizung in der äquivalenten Vorjahreswoche)

Ich hoffe, dass ist jetzt nicht zu kompliziert geschrieben, ich mache noch mal ein Beispiel mit nur 3 rollierenden Werten:
Woche 1: 3 -> Verbrauch 3
Woche 2: -> kumuliert übermittelt -> 10 -> Delta (=Verbrauch) 7
Woche 3: -> kumuliert übermittelt -> 16 -> Delta (=Verbrauch) 6
---
neue Woche 1: -> kumuliert übermittelt -> 15 -> Delta also -1 aber "Verbrauch der ("Vorjahres-") Woche 1 "weggefallen" -> +3 hinzuzurechnen-> echtes Delta also 2

Für Tipps und Lösungen bin ich sehr dankbar!


yersinia

Hallo,

ja, das ist schwierig. Hast du mal versucht das grafisch aufzuarbeiten?
Deine Heizung speichert nur 52 Wochen (bzw. Perioden; maximal). Das Delta zwischen den Perioden kannst du berechnen. Alles beginnt mit der Woche 0 und dem Delta 0 (kein Verbrauch). Danach die Woche 1 mit Verbrauch 3 (kumuliert), Woche 2 mit 10 (kumuliert; Delta 7) usw. Nach 52 Einträgen ist der Speicher voll (bzw das Periodenende erreicht) und mit dem 53. Wert (neue Woche 1) fällt der 1. Wert (alte Woche 1) raus. Demnach verschiebt sich die Periode. MMn musst du dann auch die Periode mit verschieben und die Deltas der (neuen) Periode addieren.

Im Prinzip musst du die Berechnung der Heizung nachstellen.

Das Delta der neuen Woche 1 berechnet sich aus den Deltas der Wochen 2 bis 52; die das Delta der neuen Woche 2 aus Wochen 1 bis 52 plus neue 1:
Woche 1: 3 (Abweichung zu Summe aus Deltas der Woche 0) -> Delta 3
Woche 2: 10 (Abweichung zu Summe aus Deltas der  Woche 0 + Woche 1) -> Delta 7
Woche 3: 16 (Abweichung zu Summe aus Deltas der  Woche 0 + Woche 1 + Woche 2) -> Delta 6
...
Woche 52: 98 (Abweichung zu Summe aus Deltas der Woche 0 + Woche 1 + ... + Woche 51) -> Delta x (fiktiv)
Woche 1 neu: 96 (Abweichung zu Summe aus Deltas der Woche 0 + Woche 2 + ... + Woche 52) -> Delta y (fiktiv)
Woche 2 neu: 98 (Abweichung zu Summe aus Deltas der Woche 0 + Woche 3 + ... + Woche 52 + Woche 1 neu) -> Delta z (fiktiv)

Ich bin mir nicht ganz sicher, ob es so funktionieren würde, aber ein Denkanstoß wäre es sicherlich.
Ich hab mal versucht das in Excel anchzustellen mit einer Periode von vier Wochen (nach vier Wochen beginnt es wieder bei Woche 1; also neues Jahr), siehe Bild.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Speedy68

Hallo yersinia,

zunächst mal vielen Dank für Deine Antwort!
Ja, die Darstellung ist richtig. Was mir fehlt, ist die Idee, das mit FHEM abzubilden. Ich hätte gedacht, ich käme da evtl. ohne 53 User-Readings durch, die jeweils die Wochenwerte speichern... Ausserdem bin ich mir ganz sicher, wie ich die wochenweise Zuweisung zu den User-Readings machen soll. Kalenderwochen selbst ermitteln? Dann muss ich auch Jahre mit 53 Wochen abfangen (2020...)

yersinia

Speichert die Heizung überhaupt eine 53. Woche oder sind es immer nur 52 Werte welche 7 Tage umfassen?
Man könnte es über UserAttribute machen (damit rettet man diese auch über einen FHEM Shutdown), aber du musst dann gucken, dass die Werte entsprechen verschoben werden wenn die Heizung einen neuen Wert liefert. Also (Wert = Delta der Woche):
Wert neu wird Wert 52
Wert 52 wird Wert 51
...
Wert 2 wird Wert 1
Wert 1 wird gelöscht

Das verschieben der Readings müsstest du wohl oder übel über eine eigene Funktion (myUtils) machen.
Du könntest dann noch andere USerAttribute/Readings hernehmen um dann dort (dauerhafte) Wochen-, Monats- oder Jahreswerte aufzunehmen. Die Berechnung müsste auch über eigene Funktionen machen.
Oder du schaust mal, ob ein anderes Modul wie zB das statistics (commandref) sowas kann. Vielleicht kann man dann in dem forum nachfragen, wie eine Lösung aussehen könnte. Ggf diesen Thread dahin verschieben, vielleicht fällt tupol was ein...
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

yersinia

Hab zufällig im Wiki noch diesen Artikel gefunden:
https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen
Vielleicht hilft dir dieser ein bisschen. :)
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Speedy68

Vielen Dank. Da war ich auch schon drüber gestolpert. M. E. ist es aber genau dass, was die Heizung schon für mich übernimmt und ich nur rückgängig machen will...