FileLog liefert mit CURRENT und grossem Range das erste statt das aktuelle Log

Begonnen von noansi, 29 August 2025, 11:32:11

Vorheriges Thema - Nächstes Thema

noansi

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.

rudolfkoenig

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.

noansi

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.