DOIF uiTable Card Daten Speicherung in „fhem.save“

Begonnen von Fhemotto, 22 Dezember 2022, 10:14:54

Vorheriges Thema - Nächstes Thema

Fhemotto

Hallo  Damian

Ich habe in den letzten Tagen etwas herumgespielt und nun versehentlich
falsche Wert (Ausreiser) in meinen uiTable Card (Werte)

Ich habe mein FHEM System heruntergefahren, die Datei ,,fhem.save" entsprechend abgeändert,
meinen PI neugestartet ( was auch FHEM startet).
Es waren aber wieder die alten (falschen) Daten vorhanden.

Fragen:
1.   Werden die Werte woanders zwischengehalten?
2.   Gibt es eine Möglichkeit, dies Daten händisch zu ändern?
3.   Aufgrund meiner Spielerei und momentan noch sporadischen abstürzen (Freeze von FHEM, anderes Thema) speichere ich nun die Datei ,,fhem.save" zyklisch über ein DOIF.

defmod DOIF_Helper_Save_Config DOIF ([+01:00]) \
({WriteStatefile()})
attr DOIF_Helper_Save_Config do always


Denn,    nach einem Absturz waren Daten nicht mehr vorhanden ( DOIF uiTable  Card)
Hier war ich der Annahme, die aktuellen Daten werden hier abgespeichert, was wohl nicht zu 100% zutrifft. Aber bei händischer Änderung werden die Daten nicht übernommen.
Ich verstehe es nicht.

Eventuell könnte man auch einen kleinen /weiteren Hinweis ins WIKI an der Stelle:
Zitat."Die Auflösung des Graphen nimmt mit der Zeitspanne ab - es werden immer maximal 72 Werte dargestellt. Daraus ergibt sich bei einer Stunde eine Auflösung von 3600/72 = 50 Sekunden/Eintrag, bei 6 Stunden sind es 6*60/72 = 5 Minuten/Eintrag, für eine Woche 7*24*60/72 = 140 Minuten/Eintrag usw. Die gesammelten Daten werden über den FHEM-Befehl save in versteckten Readings des jeweiligen DOIF-Moduls gespeichert."

zur Datenspeicherung / Sicherung/ Änderung aufnehmen.


Danke im Voraus für eine entsprechende Antwort.



Per

Soviel ich weiß, gibt es für die einzelnen Devices ein .log. Zumindest für die graphischen Auswertungen wird das genutzt. Ob die DOIF-uiCards das anders machen?

Damian

#2
Die Daten sind in versteckten Readings abgelegt. Die sieht man erst wenn man auf RAW-Definition klickt. Ändern kann man die in der save-Datei, aber nur, wenn das System nicht läuft.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fhemotto

Problem gelöst

Ich hatte wie beschrieben:
ZitatIch habe mein FHEM System heruntergefahren, die Datei ,,fhem.save" entsprechend abgeändert,
meinen PI neugestartet ( was auch FHEM startet).
Es waren aber wieder die alten (falschen) Daten vorhanden.
mein FHEM System beendet und danach die Datei bearbeitet, ohne Erfolg.

Da ein Shutdown wohl meine FHEM Instanz nicht richtig beendete, wurde wohl die
Datei ,,fhem.save" weiter beschrieben/überschrieben.
Ein ,, Killen" von FHEM über

sudo systemctl stop fhem.service
bzw.
sudo service fhem stop


brachte den Erfolg. ( und dies ist nun noch ein neues/weiteres Thema für mich)

Vielen Dank

Damian

Das ist klar, ein Shutdown reicht nicht aus, wenn das FHEM-System vom Service direkt wieder gestartet wird, dann läuft das System ja wieder. Nur das Beenden des Services kann hier erfolgreich sein, wie du bereits festgesellt hast.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fhemotto

Hallo  Damian

Ich muss das Thema nochmals aufgreifen.

Hatte heute wieder einen Absturz von FHEM.
Nach einem Neustart des Systems fehlten mir wieder die letzten Daten der DOIF uiTable  Cards.

Ich hatte damalig ein DOIF zur Speicherung der ,,fhem.save" erstellt.
Funktionierte nach damaligen Kenntnisstand auch soweit.
https://forum.fhem.de/index.php/topic,131094.msg1252890.html#msg1252890

In der aktuellen ,,fhem.save" sind, soweit ich überflogen habe, alle aktuellen Daten bis zum Absturz
bzw. der letzten Sicherung über das DOIF enthalten (10.01.2023).
Time Stamp der entsprechenden Einträge aktuell.
Selbst bei den ,,normalen DOIFs"

Nur bei allen DOIFs mit ,,uiTable  Card" sind die Datumswerte viel älter (6.1.2023).

Kleiner Auszug:
Datum ,,fhem.save" 10.01.2023
setstate DOIF_Action_Abfall 2023-01-10 11:30:05 Device MeinKalenderCalview
setstate DOIF_Action_KellerLueftung 2023-01-10 11:36:15 e_OREGON_Garten_2_humidity 57
setstate DOIF_Es_ist_Franzi_da 2023-01-10 11:23:37 Device handy_franzi
setstate Fritzbox 2023-01-10 11:43:51 .box_TodayBytesReceivedLow 976955291
setstate Dummy_Gaszaehler 2023-01-10 11:22:10 Counter_Act_Day 2.46
setstate DOIF_UI_Daten 2023-01-06 15:43:13 .col_72_DOIF_UI_Daten_KellerF_96_times ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1672854357,,1672867176,1672867480,1672876311,,1672883577,,,,,1672907266,1672910446,1672915311,1672920758,1672924924,1672929750,1672934567,1672940313,1672944009,1672949063,1672954168,,,,,,,,,1673000975,1673002751,1673006485,1673012707,1673016151
setstate DOIF_UI_Aussen 2023-01-06 15:43:13 .col_72_DarkSky_Wetter_Erfurt_fc1_apparentTempHigh_240_times 1672171389,1672182319,1672188391,1672200137,1672223001,1672234301,1672236159,1672253763,1672268940,1672276236,1672287176,1672296076,1672315128,1672330934,1672332148,1672355226,1672359475,1672377098,1672380137,1672392181,1672404044,1672416123,1672428123,1672441488,1672453037,1672464058,1672476135,1672497284,1672500181,1672512494,1672527672,1672538608,1672553186,1672560125,1672572029,1672593328,1672598189,1672614588,1672621887,1672632220,1672644383,1672656533,1672669591,,,,,,,,,,,,,,,1672854356,1672860199,1672876841,1672884142,1672897514,1672908457,1672920009,1672932126,1672944009,1672967410,1672969232,1672980176,1672992217,1673004288,1673016151


Fragen dazu:
1.   Gibt es einen Unterschied / Besonderheit der Datenspeicherung bzw. ist hier die Perlfunktion ,,({WriteStatefile()})" nicht wirksam ?

2.   Wenn ich über FHEM ,,Save Config" klicke, werden die Daten, also das Datum (Time Stamp der Daten; ,,uiTable  Card") aktuell gespeichert.
Wie im WIKI beschrieben ....
,,Die gesammelten Daten werden über den FHEM-Befehl save in versteckten Readings des jeweiligen DOIF-Moduls gespeichert."
Welche Möglichkeit zum Speichern würde es außerdem noch geben?
( automatisches speichern der gesamten Konfig über FHEM Befehle ,,save Config" würde ich ungern verwenden)

3.   Was für ein Zeitformat benutzt du zum Speichern in ,,setstate"?
setstate DOIF_UI_Daten 2023-01-06 15:43:13 .col_72_DOIF_UI_Daten_KellerF_96_times ,1672854357,
Ist ,,1672854357"  eine Angabe in sec/min ab Zeitraum xxx ?

Merkwürdig, ich habe noch nichts im Forum dazu gefunden.
Laufen alle Systeme sonst zu 100%, keine Stromausfälle oder ähnliches oder sind die Daten für andere nicht so interessant?

Vielen Dank

Damian

#6
Im DOIF werden nur die Standard-FHEM-Mechanismen benutzt.

Eventuell hat es was damit zu tun: https://wiki.fhem.de/wiki/Global#autosave

Ich speichere bei mir im System stündlich per fhem"save"

autosave ist bei mir in global auf 1 gesetzt - hatte aber auch keine Abstürze gehabt.

Zukünftig wird es eine Funktion geben, mit der man Daten aus dem Filelog übernehmen kann.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fhemotto

Hallo Damian

Vielen Dank

autosave ist bei mir in global auch auf 1 gesetzt.

ZitatIch speichere bei mir im System stündlich per fhem"save"
Dies wolle ich vermeiden, wie beschrieben.
Also ist dir keine andere Möglichkeit bekannt.
Demzufolge kannst du über die Perlfunktion ,,({WriteStatefile()})" keine weiteren Angaben machen.

Die Besonderheit bei mir mit den Abstürzen ist ein anderes Thema.
Mir ging es um das Prinzipielle.
Kann bei einem sauberen System ja auch mal zum Stromausfall kommen.
(Allgemein für alle: einfach mal Stecker ziehen... schauen was passiert...)


Offen ist noch die Frage nach dem Zeitformat, Interessehalber eventuell für händische Manipulation.

Vielen Dank

Damian

Zitat von: Fhemotto am 10 Januar 2023, 22:21:44
Hallo Damian

Vielen Dank

autosave ist bei mir in global auch auf 1 gesetzt.
Dies wolle ich vermeiden, wie beschrieben.
Also ist dir keine andere Möglichkeit bekannt.
Demzufolge kannst du über die Perlfunktion ,,({WriteStatefile()})" keine weiteren Angaben machen.

Die Besonderheit bei mir mit den Abstürzen ist ein anderes Thema.
Mir ging es um das Prinzipielle.
Kann bei einem sauberen System ja auch mal zum Stromausfall kommen.
(Allgemein für alle: einfach mal Stecker ziehen... schauen was passiert...)


Offen ist noch die Frage nach dem Zeitformat, Interessehalber eventuell für händische Manipulation.

Vielen Dank

Warum ich {WriteStatefile()} nicht genommen habe, kann ich dir nicht mehr sagen - bin bei save geblieben.

Intern werden Sekunden wie vom linux-System geliefert gespeichert.

So sollen zukünftig nach Bedarf die Daten aus dem Filelog oder einer eigenen Liste kommen:

DOIF_setCol ([dev:reading:col],<liste>)

Das funktioniert z. B. schon mal für die künftigen bars in einer Entwicklungsversion:


{{::DOIF_setBar("di",ReadingsVal("di","test",""),fhem("get log.counter.MQTT2_DVES_C58DCB.total_gas ./log/counter.MQTT2_DVES_C58DCB.total_gas.log - 2022-01-01 2023-12-01 4:last_month"))}}


hier wurde für die Liste der zu importierenden Daten einfach der Standard "get log"-Befehl benutzt.



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF