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
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.
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
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.
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
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.
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
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
Das wäre in der Tat die richtige Lösung.
LG
pah
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.
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