Wann wird eine readingsHistory gespeichert?

Begonnen von FunkOdyssey, 16 April 2018, 22:17:36

Vorheriges Thema - Nächstes Thema

FunkOdyssey

Ich dachte, dass ich ein Problem mit FHEM, Docker und dem statefile habe: https://forum.fhem.de/index.php/topic,87052.msg794678.html#msg794678

Aber ich vermute, dass ich falsch liege. Ich orientiere mich nach dem Start von FHEM anhand einer readingsHistory-Übersicht auf meiner Startseite. Ich dachte immer, die Zeilen stehen im statefile. War wohl falsch gedacht. :-)

Nach jedem Neustart schiebt mir mein FHEM-Docker-Container eine alte readingsHistory vor die Nase. Im statefile gibt es das Gerät nicht. Sogar wenn ich FHEM sauber beende und neu starte, habe ich oft die Werte vom letzten Neustart. Somit entstehen Lücken im Verlauf.

Hat jemand ne Idee wie die Readings/Arrays bzw. wo diese gespeichert werden?
Und evtl. auch warum ältere Zustände wiederhergestellt werden?

Danke.

FunkOdyssey

#1
Gefunden: ./log/readingsHistorys.dd.save
Da hätte ich auf drauf kommen können. justme1968 macht es bei LightScene ja ähnlich. 😄

Aber dennoch die Frage:
Die Datei wird doch beim FHEM-Save auch gesichert. So scheint es. Aber wieso habe ich sporadisch nach nem ,,shutdown restart" ne alte Version?




Nachtrag: Kann es sein, dass die Einstellungen beim "shutdown restart" nicht noch einmal gesichert werden?

FunkOdyssey

#2
Darf ich diesem Monolog noch einmal kurz hochholen?

Hat irgendjemand eine Idee warum die readingsHistory nach einem Neustart nicht wieder im zuletzt angezeigten Zustand wiederhergestellt werden?
Nach fast jedem Neustart fehlen mir ein paar Zeilen. Und vor dem Neustart via "shutdown restart" führe ich ein "Save config" durch.




Die Rechte auf /log/readingsHistorys.dd.save sind in Ordnung. Ab und zu klappt es ja auch.




Und vom Code her sollte es doch auch eigentlich funktionieren.

376   if( grep(m/^INITIALIZED$/, @{$dev->{CHANGED}}) ) {
377     readingsHistory_updateDevices($hash);
378     readingsHistory_Load($hash);
379     return undef;
380   } elsif( grep(m/^REREADCFG$/, @{$dev->{CHANGED}}) ) {
381     readingsHistory_updateDevices($hash);
382     readingsHistory_Load($hash);
383     return undef;
384   } elsif( grep(m/^SAVE$/, @{$dev->{CHANGED}}) ) {
385     readingsHistory_Save();
386   }
387


Ein "SAVE" scheint aber notwendig zu sein. Doch das mache ich ja auch bereits.




Ich kann irgendwie noch keinen Rhythmus erkennen. Gerade versucht zu reproduzieren und es klappt. :-)