Hallo zusammen,
aufgrund der Berechnungsweise der Delta-Werte in DbLog können unerwartet große (und mMn. aus Sicht des Endnutzers falsche) Delta-Werte entstehen. Im Anhang befindet sich ein Patch (00-DbLog-delta.patch) welcher das Problem löst.
Beispiel:
- Für einen Tag T existiert nur ein Log-Wert V zur Uhrzeit 14:15
- Tag T wird für die delta-h Berechnung in 24 1-Stunden Blöcke gruppiert (GROUP BY)
- Der Maximalwert eines jeden Blocks wird gesucht (MAX)
- Für Tag T gibt es also nur einen Maximalwert V, welcher dem Block 14:00-15:00 zugeordnet ist
- Die delta-h Berechnung im Perl-Modul versucht vom Maximalwert von 14:00-15:00 den Maximalwert von 13:00-14:00 abzuziehen
- Der Maximalwert von 13:00-14:00 existiert nicht, wodurch als Ersatz der kleinstmöglich darstellbare Wert verwendet wird (~0 >> 1)
- Somit ist die berechnete Differenz: V - (~0 >> 1) ≅ -(~0 >> 1)
Der Endnutzer sieht das Ergebnis der Berechnung in mindestens zwei Arten (siehe Anhang fhem-dblog-delta-broken.png):
- Die automatische Skalierung im Plot ist nicht mehr sinnvoll
- Variablen wie $data{sum2} sind nicht mehr sinnvoll gefüllt
Der sich im Anhang befindende Patch verändert die Berechnungslogik der Delta-Werte dahingehend, dass das Ergebnis einer Delta-Berechnung ohne Vorgängerwert einen 0-Wert ist. Ich halte es für nicht sinnvoll die interne Darstellungsweise eines fehlenden Wertes ±(~0 >> 1) an den Endnutzer durchzureichen.
Anhang fhem-dblog-delta-fixed.png zeigt das Verhalten nach der Anwendung des Patches.
Danke Kaarsten für den Patch.
Ich nehme es mir die kommenden Tage vor ins DbLog einzubauen und zu testen.
Melde mich wieder.
LG,
Heiko
Hallo Kaarsten,
ich habe deinen Patch integriert und angetestet.
Negative Dinge konnte ich nicht bemerken.
Die neue DbLog Version liegt in meinem Contrib (siehe Fußnote).
Bitte teste die V auch nochmal bei dir.
Grüße,
Heiko
Hallo Heiko,
vielen Dank für die schnelle Antwort! Ich habe deine Version seit gestern in Betrieb und konnte auch keine Fehler feststellen, sieht gut aus!
Viele Grüße,
kaarsten
Habs eingecheckt. Ist morgen früh im update.
LG