Undokumentiertes Feature in FileLog ?

Begonnen von Prof. Dr. Peter Henning, 12 Juni 2015, 05:54:22

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Guten Morgen,

aus Sicherheitsgründen lasse ich ein jährliches Logfile (z.B. für den Energieverbrauch) monatlich neu anlegen, in der FileLog Definition steht also im Dateinamen ein "solarPVY_%Y-%m". Ergebnis ist eine Datei solarPVY_2015-06.log mit dem Inhalt


yearly data:               Month Wm    Wex Wy     Wy
2015-01-28_23:59:00 nt5000 W_M01 106.9 150  106.9   2.1  150.0  71.2
2015-02-28_23:59:00 nt5000 W_M02 241.7 240  348.6   6.8  390.0  89.3
2015-03-28_23:59:00 nt5000 W_M03 495.4 430  844.0  16.6  820.0 102.9
2015-04-28_23:59:00 nt5000 W_M04 658.7 600 1502.7  29.5 1420.0 105.8
2015-05-28_23:59:00 nt5000 W_M05 632.1 670 2134.8  42.0 2090.0 102.1
2015-06-28_05:16:48 nt5000 W_M06 228.2 650 2363.0  46.5 2740.0  86.2



Wenn ich nun einen Plot mit fixedrange=year anlegen möchte, holt sich SVG die Daten aus der Datei mit dem internen Aufruf
Zitatget SolarPVY CURRENT INT 2015-01-01_00:00:00 2016-01-01_00:00:01 4:nt5000.*:0: 6:nt5000.*:0:

(SolarPVY ist der Name des FileLog).

Leider bekommt man keinen Rückgabewert, wenn der Dateiname z.B. solarPVY_2015-06.log ist - nur, wenn er solarPVY_2015.log lautet. Das ist m.E. nirgendwo dokumentiert, eventuell also unbeabsichtigt.

LG

pah

rudolfkoenig

Ich gehe davon aus, dass die Probleme mit dem Inhalt, und nicht mit dem Dateinamen zusammenhaengenhaengen: Dateien mit Zeilen, die nicht mit dem Datum in FileLog Format anfangen (YYYY-MM-DD_HH:MM:SS) werden von FileLog nicht unterstuetzt.

Es gibt "neuerdings" ein reformatFn Attribut, allerdings muessen trotzdem alle Zeilen was "sinnvolles" zurueckliefern. Wenn ich mit meiner Einschaetzung irren sollte, und FileLog auch mit "sauberen" Dateien das Problem hat, dann haette ich gerne eine Beispieldatei.

Prof. Dr. Peter Henning

Guten Morgen Rudi,

das habe ich natürlich auch zuerst vermutet. Also das Logging gedoppelt:

define solarTHY FileLog    /home/fhem/fhemlogs/solarTHY_%Y.log HK.SOL:(W_M).*
define solarTHYa FileLog  /home/fhem/fhemlogs/solarTHY_%Y_%m.log HK.SOL:(W_M).*


Identischer content beider Log-Dateien:
2015-01-28_23:59:00 HK.SOL W_M01   4.0    4.0   0.4
2015-02-28_23:59:00 HK.SOL W_M02  29.0   33.0   3.3
2015-03-28_23:59:00 HK.SOL W_M03  61.0   94.0   9.4
2015-04-28_23:59:00 HK.SOL W_M04 102.0  196.0  19.6
2015-05-28_23:59:00 HK.SOL W_M05  82.0  278.0  27.8
2015-06-28_00:02:31 HK.SOL W_M06  71.0  349.0  34.9


Ergibt beim Aufruf durch "Show preprocessed input" im Plot-Editor

get SolarTHY CURRENT INT 2015-01-01_00:00:00 2016-01-01_00:00:01 4:HK.SOL.*:0: 5:HK.SOL.*:0:

2015-01-28_23:59:00 4.0
2015-02-28_23:59:00 29.0
2015-03-28_23:59:00 61.0
2015-04-28_23:59:00 102.0
2015-05-28_23:59:00 82.0
2015-06-28_00:02:31 71.0
#4:HK.SOL.*:0:
2015-01-28_23:59:00 4.0
2015-02-28_23:59:00 33.0
2015-03-28_23:59:00 94.0
2015-04-28_23:59:00 196.0
2015-05-28_23:59:00 278.0
2015-06-28_00:02:31 349.0
#5:HK.SOL.*:0:

get solarTHYa CURRENT INT 2015-01-01_00:00:00 2016-01-01_00:00:01 4:HK.SOL.*:0: 4:HK.SOL.*:0:

2015-01-01_00:00:00 0
#4:HK.SOL.*:0:
2015-01-01_00:00:00 0
#4:HK.SOL.*:0:


Tja, und der Plot bleibt für das zweite File leer.

Da ist jetzt wirklich der einzige Unterschied der Dateiname.

LG

pah

rudolfkoenig

In diesem Fall schlaegt wirklich ein undokumentiertes (und sehr altes) Feature zu: Falls der Dateiname CURRENT ist, dann oeffnet FileLog get die zum "from" (2015-01-01) passenden Dateinamen. Hilft beim zurueckblaettern mit SVG, auch wenn es auf manchen Zoomstufen nicht perfekt ist, da die Daten immer nur aus einer Datei stammen.

Ab sofort ist CURRENT auch dokumentiert.

Mit - referenziert man die Datei mit dem aktuellen Datum, oder man gibt einen konkreten Dateinamen an.
Aus dem zeitlichen  Abstand betrachtet sind die Namen nicht sehr konsequent.

Prof. Dr. Peter Henning

Danke, ich habe geahnt, dass es so etwas sein muss.

Allerdings müsste man noch an einer anderen Stelle etwas nachbessern. Denn das CURRENT wird hier in die Abfragen nicht von mir eingesetzt, sondern vom logProxy. Idealerweise sollte man das logProxy-Modul darauf umschießen, statt CURRENT ein "-" zu verwenden.

LG

pah

rudolfkoenig

Ich bin der Ansicht, dass das noch kein logProxy/SVG/FileLog Bug ist: wenn der FileLog Parameter %m enthaelt, dann sollte die dazugehoerige Datei nur Daten aus dem passenden Monat enthalten.

Prof. Dr. Peter Henning

Nun, abgesehen davon, dass dies bisher nirgendwo dokumentiert war, ist das nicht ganz konsequent: Im FileLog-Modul wird die Freiheit gewährt, "-" oder "CURRENT" zu verwenden. Im logProxy-Modul wird diese Freiheit stillschweigend wieder genommen.

Das Wort "Bug" habe ich übrigens nicht verwendet  ;)

LG

pah

justme1968

#7
bei logProxy lässt mir die syntax der devspec zeilen keine (elegante) möglichkeit CURRENT oder - spezifizieren zu können.

wenn ich als default - statt CURRENT verwende nehme ich statt dessen die möglichkeit zurück zu blättern. das würde vermutlich mehr anwender betreffen als das aktuelle verhalten.

ich denke aber das problem lässt sich etwas entschärfen in dem man in fileLog die heuristik so erweitert das bei nicht vorhanden sein des 'geratenen' files $hash->{currentlogfile} als fallback verwendet wird statt CURRENT als tatsächlichen filenamen zu probieren. damit würde zumindest der aktuelle zeitraum korrekt angezeigt.

das sollte auch an der/den anderen stellen helfen an denen CURRENT als default verwendet wird (z.b. FileLog_toSVG).

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Prof. Dr. Peter Henning

Das wäre in der Tat die richtige Lösung.

LG

pah

rudolfkoenig

Ich verstehe immer noch nicht, wieso man gezwungen ist, ein FileLog mit % Wildcards zu definieren, wenn man vor hat, Daten aus anderen Zeitraeumen reinzuschreiben.

Die Aenderung fuer den Vorschlag war allerdings so minimal, dass ich es vmtl. ohne Nebeneffekte implementieren konnte. Habs eingecheckt.

Prof. Dr. Peter Henning

Kann ich erklären: Um Änderungen in log-Dateien, die nicht durch FileLog selbst gemacht worden sind, gegenüber Fehlern etc. abzusichern.

Danke trotzdem

LG

pah