Hallo zusammen
Nicht unbedingt eine Anfängerfrage, aber ich wusste nicht welches der korrekte Bereich für meine Frage ist. Frage kann also gerne verschoben werden.
Ich speichere immer am Ende des Tages den Wert (Total_Energy) eines Shellys mit setreading in einem eigenen Reading ab. Bevor ich das mache lese ich aber den Wert des Vortages aus und bilde die Differenz und schreibe die in eine Logdatei. Diese Logdatei ist dann Grundlage einer Grafik welche mir die Dif. Werte der vergangenen Tage und Woche anzeigt. Das Ganze funktioniert eigentlich ganz gut.
Aber gelegentlich zeigt die Grafik einen unerklärlichen Ausreisser.
Das Problem, das Lesen des Vortages Wert, ReadingsVal(...), bringt gelegentlich einen falschen Wert. Wieso dies in unregelmässigen Abständen immer wieder auftritt, ist mir ein Rätsel.
Inzwischen lese ich den Wert immer nach dem Schreiben nochmals aus. Zu diesem Zeitpunkt ist der Wert noch ok. Wird er aber 24 Std. später noch einmal ausgelesen, erhalte ich gelegentlich einen falschen Wert. Das interessante ist, der falsche Wert ist ein alter Wert der 5 Tage früher in dieses Reading geschrieben wurde.
Hat jemand eine Idee wo das Problem liegen könnte, oder zumindest wie man es eingrenzen kann.
Tipp: statistics-Modul verwenden.
LG
pah
Zitat von: birdy am 20 Mai 2025, 18:40:25Zu diesem Zeitpunkt ist der Wert noch ok. Wird er aber 24 Std. später noch einmal ausgelesen, erhalte ich gelegentlich einen falschen Wert. Das interessante ist, der falsche Wert ist ein alter Wert der 5 Tage früher in dieses Reading geschrieben wurde.
Hat jemand eine Idee wo das Problem liegen könnte, oder zumindest wie man es eingrenzen kann.
Klingt danach als ob das System crashed, FHEM neu gestartet wird und ein altes statefile eingelesen wird?
Hallo Otto
Ja genau, so muss es sein. Vielen Dank für den Hinweis.
Ich habe mir jetzt über einen AT einen periodischen Save definiert.
Gruss birdy
Tipp: DbLog verwenden und den Wert für die Berechnung aus dem Log lesen statt aus den readings. Im Log wird der Wert beim Setzen mit setreading automatisch zeitnah abgespeichert.
Zitat von: birdy am 21 Mai 2025, 20:26:59Ich habe mir jetzt über einen AT einen periodischen Save definiert.
Unschöner Workaround.
naja vor allem würde ich schauen warum FHEM offenbar regelmäßig crashed?
An dieser Variante der Problemlösung scheint aber offenbar kein allzu großes Interesse seitens des Anwenders zu bestehen 8)
Zitat von: betateilchen am 21 Mai 2025, 20:41:41Tipp: DbLog verwenden und den Wert für die Berechnung aus dem Log lesen statt aus den readings. Im Log wird der Wert beim Setzen mit setreading automatisch zeitnah abgespeichert.
.......
Danke für den Tipp. Weil ich den Aufwand für die Umstellung scheue, habe ich die Verwendung von DbLog bisher immer vor mir hergeschoben.
Evtl. sollte ich das doch einmal anpacken.
Welche DB verwendest Du, was ist deine Empfehlung?
Zitat von: betateilchen am 22 Mai 2025, 08:54:52An dieser Variante der Problemlösung scheint aber offenbar kein allzu großes Interesse seitens des Anwenders zu bestehen 8)
Eine Annahme ... ;)
Liegt wohl eher an der Komplexität (fehlendem Know How). Wie findet man das Problem, und falls gefunden wie kann man es beheben..... Aufwand und Ertrag ...
Zitat von: birdy am 22 Mai 2025, 12:04:07Wie findet man das Problem,
- Im System mit journalctl -u fhem.service schauen wann und wie oft das passiert
- Im FHEM Log den Punkt suchen wo der Absturz war, manchmal geben die letzten Einträge schon eine Idee.
Ich vermute, dass das Problem bei Proxmox liegt. Weil ich Proxmox aber schon mehrfach neu installiert habe, habe ich die HW in Verdacht.