FHEM Forum

FHEM => Sonstiges => Thema gestartet von: noansi am 29 August 2025, 11:32:11

Titel: FileLog liefert mit CURRENT und grossem Range das erste statt das aktuelle Log
Beitrag von: noansi am 29 August 2025, 11:32:11
Hallo Rudolf,

ich logge diverse Sensordaten in monatlichen Logs, damit SVG Plots mit einem zeitlich aktzeptablem Aufwand generiert werden.
createGluedFile ist bei mir normalerweise aus.

Nun ist mir bei rauszoomen eines Plots auf ein Jahr aufgefallen, dass der Plot im Januar dargestellt wird und nicht im erwarteten aktuellen August.

Das ist irritierend, insbesondere bei jahreszeitlich wenig schwankenden Werten denkt man spontan an einen Plot Fehler.
Ich habe mal nachgeschaut, woran das liegt.
FileLog liefert in diesem Fall das erste verfügbare Log aus dem Jahresrange.

Ich denke, es sollte das aktuelle liefern, wenn createGluedFile aus ist.

Das ist in FileLog_Get auch z.B. durch Ergänzung von:
        if(AttrVal($name, 'createGluedFile', 0)) {
          ...
        }
        else {
          $to = (split(" ", TimeNow()))[0] if($to eq '9'); # Special
          if($to =~ m/^(....-..-..)$/ ||
             $to =~ m/^(....-..-..)_(..:..:..)/) {
            my $to_ymd = $1;
            my $to_hms = defined($2) ? $2 : '23:59:59';
            my $linf_to = ResolveDateWildcards($hash->{logfile},
                            localtime(time_str2num("$to_ymd $to_hms")));
            $linf = $linf_to; #noansi: we want the current log displayed, not the first one from from
          }
        }

ab Zeile 889 korrigierbar.

Viele Grüße, Ansgar.
Titel: Aw: FileLog liefert mit CURRENT und grossem Range das erste statt das aktuelle Log
Beitrag von: rudolfkoenig am 30 August 2025, 09:59:53
Zitatich logge diverse Sensordaten in monatlichen Logs, damit SVG Plots mit einem zeitlich aktzeptablem Aufwand generiert werden.
Die Aufteilung der Dateien in kleineren Einheiten duerfte keine Performance Probleme loesen, da die Suche in der Datei nach den Daten vernachlaessigbar ist im Vergleich mit den restlichen Operationen.

ZitatDas ist irritierend, insbesondere bei jahreszeitlich wenig schwankenden Werten denkt man spontan an einen Plot Fehler.
Ich verstehe das Problem noch nicht: $hash->{currentlogfile} sollte die aktuelle Logdatei enthalten.
Meine Hypothese: FHEM laeuft seit Januar, die letzten Daten wurden in Februar in die Datei geschrieben, und wenn man jetzt ein Monatslog anschauen will, dann werden Februar-Daten geliefert.
Passt aber nicht dazu, dass die Suche mit Jahr-Monat-Tag ablaeuft.

Bitte hilf mir das Problem zu verstehen.
Titel: Aw: FileLog liefert mit CURRENT und grossem Range das erste statt das aktuelle Log
Beitrag von: noansi am 30 August 2025, 21:57:52
Hallo Rudolf,

ok, vermutlich zu unpräzise.

Ausgangspunkt ist ein FileLog. Zu dem FileLog ist nur das Attribut logtype mit einem gplot File und text gesetzt (ok, als einziges weiteres Attribut auch noch room, aber das ist hier unerheblich).

FileLog präsentiert mir nun Monatslogs von Januar bis August mit Weblinks für Plot und Text.
Klicke ich auf einen Plot Link, z.B. vom Mai dann wird der Plot für August geöffnet in Tagesansicht heute. Das ist die erste Merkwürdigkeit aus Nutzersicht, denn der angeklickte Monatsplot hat nichts mit dem zu tun, was angezeigt wird, es sei denn, man klickt auf den aktuellen Monat (was ich für gewöhnlich tue). Wenn ich auf den Textlink klicke, dann wird das Log für Mai auch in Textform angezeigt, also der Erwartung entsprechend.

Es wird bei den Plots der aktuelle Tag angezeigt, egal welches der Monatslogs angeklickt wird.

Zoome ich diesen Plot nur raus bis zur Jahresansicht, dann wird in der Jahresansicht der Januar angezeigt. Während des schrittweisen Rauszoomens bis zur Monatsansicht jedoch noch der August. Und dieser Monatsansichtswechsel von August nach Januar ist richtig verwirrend.

ZitatMeine Hypothese: FHEM laeuft seit Januar, die letzten Daten wurden in Februar in die Datei geschrieben, und wenn man jetzt ein Monatslog anschauen will, dann werden Februar-Daten geliefert.
Ich vermute, du glaubst, ich hätte ein SVG device erstellt. Habe ich aber nicht, sondern nur das LogFile device, weil ich mehr normalerweise nicht brauche.
Und nein, wie oben beschrieben. Monatslogs liegen von Januar bis zum aktuellen August vollständig im log Verzeichnis.

SVG_getData ruft in diesem Fall des Monatsplots FileLog_Get mit Infile 'CURRENT' auf, da LogFile kein Internal LOGDEVICE und FILELOG hat.
from jedoch mit dem Anfang der Plotansicht (Zoom), was bei Jahresansicht nunmal beim 1.1. los geht. Und damit liefert FileLog_Get die Januar Daten, die dann im Jahresplot angezeigt werden, nach der Rauszoomvorgeschichte unerwartet.

Viele Grüße, Ansgar.
Titel: Aw: FileLog liefert mit CURRENT und grossem Range das erste statt das aktuelle Log
Beitrag von: rudolfkoenig am 31 August 2025, 11:13:01
Danke fuer die Erklaerung.

ZitatKlicke ich auf einen Plot Link, z.B. vom Mai dann wird der Plot für August geöffnet in Tagesansicht heute.
Das ist tatsaechlich kaputt. Ich ueberlege noch wie (und ob) ich das Problem behebe.
Meiner Ansicht nach sollte man immer eine SVG Instanz anlegen: dieser Weg ist getestet und flexibler als die Ad-Hoc Verwendung von vorgefertigten .gplot Dateien.

ZitatZoome ich diesen Plot nur raus bis zur Jahresansicht, dann wird in der Jahresansicht der Januar angezeigt. Während des schrittweisen Rauszoomens bis zur Monatsansicht jedoch noch der August. Und dieser Monatsansichtswechsel von August nach Januar ist richtig verwirrend.
Dein Vorschlag wuerde dem Benutzer bei Jahresansicht das aktuelle Monat statt Januar zeigen.
Ich finde beide Alternativen falsch, ich wuerde eher createGluedFile per Voreinstellung aktiv stellen.

Andere Meinungen zum Thema?
Titel: Aw: FileLog liefert mit CURRENT und grossem Range das erste statt das aktuelle Log
Beitrag von: betateilchen am 31 August 2025, 11:23:23
Zitat von: rudolfkoenig am 31 August 2025, 11:13:01Andere Meinungen zum Thema?

Meiner Ansicht nach sollte man immer eine SVG Instanz anlegen: dieser Weg ist getestet und flexibler als die Ad-Hoc Verwendung von vorgefertigten .gplot Dateien.

Die Meinung teile ich zu 100%.

Zitat von: rudolfkoenig am 31 August 2025, 11:13:01ich wuerde eher createGluedFile per Voreinstellung aktiv stellen.

Bitte nicht.

Erstens ist createGluedFile nicht sonderlich perfomant und zum Zweiten benötigt es eine Menge zusätzlichen Speicherplatz, was insbesondere bei großen Logdateien zu anderen Problemen führen könnte.

Man teilt doch als Benutzer die Logdateien nicht explizit in Monate auf, um dann per default (!) eine zusätzliche Datei zu erzeugen, in der dann wieder das gesamte Jahr enthalten ist.
Titel: Aw: FileLog liefert mit CURRENT und grossem Range das erste statt das aktuelle Log
Beitrag von: noansi am 31 August 2025, 12:24:41
Hallo Rudolf,

ZitatMeiner Ansicht nach sollte man immer eine SVG Instanz anlegen: dieser Weg ist getestet und flexibler als die Ad-Hoc Verwendung von vorgefertigten .gplot Dateien.
Die kreierte SVG Instanz nimmt den angeklickten Monat aus dem FileLog via LOGDEVICE mit. In der initialen Darstellung bleibt es jedoch bei der aktuellen Woche (oder liegt an meiner Änderung von oben?), so dass man erst mal hinzoomen, hinschieben muss.
Es fehlt dann auch ein delete Button, um die Instanz abschließend wieder los zu werden oder noch besser wäre aus meiner Sicht eine temporäre Instanz, die dann wieder verschwindet, wenn man den Browsertab schließt.
Zumindest meine Nutzung ist in der Regel, den Verlauf des Tages oder der Woche mal eben anzuschauen. Der Blick auf's Jahr kommt selten vor. Dafür möchte ich keine Instanzgräber in unsorted anlegen.

ZitatBitte nicht.
Dem schließe ich mich an.

Muss es unbedingt ein gluefile sein? Dient wohl nur dazu, die Datensuche/-extraktion zu vereinfachen, wenn ich es richtig sehe. Oder habe ich einen weiteren Sinn noch nicht kennen gelernt?

Viele Grüße, Ansgar.