[gelöst] Infos von einem Device dupliziert in ein zweites Logfile schreiben

Begonnen von Spook112, 04 März 2025, 22:05:35

Vorheriges Thema - Nächstes Thema

Spook112

Kurze Frage zum Thema Logging.

Ich habe zwei Devices (Wechselrichter) und alle Mitteilungen des jeweiligen Devices werden in ein jeweiliges Logfile geschrieben - wie üblich - also zwei separate Logfiles. Eines pro Wechselrichter.

Ist es möglich einige wenige der Logfileeinträge aus beiden Device Logfiles auch noch zusätzlich in ein drittes Logfile zu schreiben?
Hintergrund:
In diesem dritten (parallelen) Logfile möchte ich von den beiden Geräten gleichgeartete Werte loggen (produzierte Leistung vom jeweiligen Wechselrichter) und daraus - aus der Summe beider Werte - einen svg Plot generieren.

Ist das in der Form möglich und sinnvoll - oder gibt es einen besseren Weg?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

Otto123

#1
Du kannst Werte aus beliebigen Devices in ein Logfile schreiben.
Du kannst aber auch aus beliebigen Logfiles ein SVG Plot machen ;) insofern ist deine Idee aus meiner Sicht nicht sinnvoll :)

Einfach in der SVG Definition aus der ersten Klappliste das Logfile und aus der zweiten Klappliste den Wert auswählen. 8)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Spook112

Danke erstmal für die schnelle Antwort.

Ich bin nicht sicher, ob ich Dich richtig verstehe.
Einen kombinierten SVG Plot aus den zwei Device Logfiles habe ich hin bekommen - so wie Du es vermutlich gemeint hast.
Das jeweilige Logfile ausgewählt und dann den jeweiligen Wert des jeweiligen Logfiles.
Zwei schöne Plots übereinander - siehe Bild.

Die Frage die bleibt ist, wie ich jetzt eine weitere Linie als Summe der Einzelwerte aus den beiden Logfiles hin bekomme.
Dafür sehe ich noch keine Lösung.
Gibt es da eine denn der Summenwert über beide Devices steht ja in keinem der beiden Logfiles drin und wie ich direkt im SVG Editor die Summe bilden kann erschließt sich mir nicht?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

betateilchen

#3
Ungetestet, da ich nicht zuhause bin: sowas sollte doch mit logproxy funktionieren?

Man müsste doch nur $data{currval1} und $data{currval2} addieren?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

ich habe dazu den alten Thread gefunden. logProxy ist da auch die Idee. Werte im SVG direkt zu addieren funktioniert nach Rudis Aussage nur wenn sie in einem Event stehen. Oder eben die Werte über userReadings zusätzlich in eins der Logs schreiben.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Spook112

#5
Den Weg bin ich jetzt gegangen. Ein zusätzliches userReadings, in dem die Summenwerte der beiden Inverter addiert werden im Inverter EZ1_inverter_HWR.
Damit steht das in dem dazugehörigen Logfile drin und ich kann es für den Plot verwenden.

Das mit LogProxy sollte laut Doku auch funktionieren - da müsste ich mich aber erstmal länger mit beschäftigen.
Danke so weit für Eure Tipps.

Nun ist allerdings ein weiteres "Problem" aufgetaucht.
Da die LogFiles sehr schnell sehr groß werden und sich das auf das Antwortzeitverhalten auswirkt dachte ich mir - ein Logfile pro Tag reicht doch auch.
Ich habe also in dem Logfile Device über die Namenskonvention "eingestellt", dass jeden Tag ein neues Logfile gestartet wird.
Das funktioniert auch --> FileLog_EZ1_inverter_HWR-2025-03-06  beispielsweise.

Allerdings kommt das SVG Plot-Device damit irgendwie nicht zurecht. Es liest aus diesen neuen LogFiles mit Datum am Ende keine Werte aus.

Ich konnte auch im SVG Editor keine Möglichkeit finden diesen sich verändernden LogFile Namen irgendwo anzugeben.
Etwa in dieser Form: FileLog_EZ1_inverter_HWR-%Y-%m-%d   oder vielleicht so: FileLog_EZ1_inverter_HWR-%Y-%m-%d.log

Auswählen kann ich immer nur das entsprechende Device. Da hat sich der Name (des Devices) allerdings nicht geändert.
Der Name des Logfiles schon. Gestern FileLog_EZ1_inverter_HWR-2025-03-06.log    und heute  FileLog_EZ1_inverter_HWR-2025-03-07.log
In der DEF Sektion des SVG Devices steht hinten ....:CURRENT   was nach meinem Verständnis auf das aktuelle Logfile Bezug nehmen müsste.
Das wäre dann für heute ja FileLog_EZ1_inverter_HWR-2025-03-07.log

Irgendwei klappt das aber nicht.
Habt Ihr dazu eine Idee oder einen Tipp?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

betateilchen

Hast Du nach der Umstellung auf Tageslogs Dein FHEM schonmal neu gestartet?

Grundsätzlich ist es SVG wurscht, ob es sich um Tages-, Wochen- oder Monatslogs handelt, es wird immer das Logdevice selbst angegeben, kein Dateiname.

Und CURRENT kannst Du getrost durch HISTORY ersetzen, das wird aber auf das Ergebnis wenig Auswirkung haben. Bei CURRENT geht es nicht darum, welche Logdatei verwendet wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Spook112

Nein. FHEM habe ich danach nicht neu gestartet.
Ich habe das allerdings auch nur für das eine LogFile umgestellt und nicht global.
Einen Neustart werde ich heute Abend mal durchführen - oder reicht da auch ein rereadcfg ?

Andere Frage: Wofür stehet denn das CURRENT oder HISTORY ?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

Otto123

Ich dachte immer CURRENT und HISTORY haben nur bei dblog Bedeutung?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Spook112

Also ein shutdown / Neustart hat auch keine Veränderung gebracht.
Hier mal das Listing des Log-Devices:
Internals:
   DEF        %L/FileLog_EZ1_inverter_HWR-%Y-%m-%d.log EZ1_inverter_HWR
   FD         171
   FUUID      67b1d50c-f33f-5fc3-af3f-279da3f5b2310d97
   NAME       FileLog_EZ1_inverter_HWR
   NOTIFYDEV  EZ1_inverter_HWR
   NR         566
   NTFY_ORDER 50-FileLog_EZ1_inverter_HWR
   REGEXP     EZ1_inverter_HWR
   STATE      active
   TYPE       FileLog
   currentlogfile ./log/FileLog_EZ1_inverter_HWR-2025-03-08.log
   logfile    %L/FileLog_EZ1_inverter_HWR-%Y-%m-%d.log
   READINGS:
     2025-03-08 10:07:50   linesInTheFile  5719
   pos:
Attributes:
   group      LogFiles
   nrarchive  5
   room       Solar
   sortby     10


Und hier das des SVG Plots:
Internals:
   DEF        FileLog_EZ1_inverter_HWR:SVG_FileLog_EZ1_inverter_HWR_1:CURRENT
   FUUID      67b1d527-f33f-5fc3-d50d-9d26e1b413272204
   GPLOTFILE  SVG_FileLog_EZ1_inverter_HWR_1
   LOGDEVICE  FileLog_EZ1_inverter_HWR
   LOGFILE    CURRENT
   NAME       SVG_FileLog_EZ1_inverter_HWR_1
   NR         567
   STATE      initialized
   TYPE       SVG
Attributes:
   captionPos auto
   fixedrange 12hours
   group      Plots_Diagramme
   plotmode   SVG
   plotsize   600,450
   room       Solar
   sortby     10

Seltsamerweise zeigt der Plot aber nur die Graphen des zweiten Inverters EZ1_inverter_GaHa an - das sind im Editor die Zeilen 4 - 6
Die Graphen die auf dem Output von Device EZ1_inverter_HWR (dem Logfile dieses Devices) beruhen tauchen nicht auf.
Das wären die Zeilen 1 - 3 und Zeile 7 im Editor.

Hat da jemand eine Erklärung oder Idee?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

Otto123

kannst Du bitte mal den Inhalt vom Gplotfile posten?
Den bekommst Du wenn Du hinter dem Internal GPLOTFILE auf den Link klickst ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Spook112

#11
Hier der Inhalt von GPLOTFILE

# Created by FHEM/98_SVG.pm, 2025-03-08 10:36:12
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Solar Panels Energy Production'
set ytics ("800W" 900, "600W" 800 , "400W" 700, "200W" 600, "0W" 500, "800W" 400, "600W" 300 , "400W" 200, "200W" 100, "0W" 0)
set y2tics ("800W" 900, "600W" 800 , "400W" 700, "200W" 600, "0W" 500, "800W" 400, "600W" 300 , "400W" 200, "200W" 100, "0W" 0)
set grid ytics y2tics
set ylabel "Power HWR"
set y2label "Power GaHa"
set yrange [0:1000]
set y2range [0:1000]

#FileLog_EZ1_inverter_HWR 4:EZ1_inverter_HWR.total_power\x3a:0:(0.5*$fld[3])
#FileLog_EZ1_inverter_HWR 4:EZ1_inverter_HWR.p1\x3a:0:(0.5*$fld[3])
#FileLog_EZ1_inverter_HWR 4:EZ1_inverter_HWR.p2\x3a:0:(0.5*$fld[3])
#FileLog_EZ1_inverter_GaHa 4:EZ1_inverter_GaHa.total_power\x3a:0:(0.5*$fld[3])+500
#FileLog_EZ1_inverter_GaHa 4:EZ1_inverter_GaHa.Panel_1\x3a:0:(0.5*$fld[3])+500
#FileLog_EZ1_inverter_GaHa 4:EZ1_inverter_GaHa.Panel_2\x3a:0:(0.5*$fld[3])+500
#FileLog_EZ1_inverter_HWR 4:EZ1_inverter_HWR.total_power_all_inverters\x3a:0:(0.5*$fld[3])

plot "<IN>" using 1:2 axes x1y1 title 'Total Power HWR' ls l5 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Panel 1' ls l2 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Panel 2' ls l1 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Total Power GaHa' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Panel 1' ls l6 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Panel 2' ls l2 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'TP HWR&GaHa' ls l3 lw 1.5 with lines

Im Anhang noch einen Ansicht der Logfile Devices und Inhalt der Logfiles
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

Spook112

Neue Erkenntnis.
Es scheint so  zu sein, dass FHEM für die Erstellung des Plots für den Inverter EZ1_inverter_HWR (der mit den täglich wechselnden Logfiles) nur die Daten aus dem Logfile des Vortages für die Erstellung des Plots nimmt und anzeigt - warum auch immer.
Aus heutiger Sicht also FileLog_EZ1_inverter_HWR-2025-03-07
Für den Inverter EZ1_inverter_GaHa (der mit nur einem fortlaufenden Logfile) wird der Plot komplett angezeigt - heute, gestern vorgestern etc.

Siehe hierzu das Bild im Anhang.
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

RalfRog

Bei täglich neuen Logfiles müsstest du vermutlich das Attribut (im Filelog) setzen:
createGluedFile
Falls gesetzt (1), und im SVG-Plot ein Zeitbereich abgefragt wird,
was in mehreren Logdateien gespeichert ist, dann wird für die
Anfrage eine temporäre Datei mit dem Inhalt aller Dateien erzeugt.


Gruß Ralf
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

Spook112

#14
Danke @RalfRog und alle anderen Tipp-Geber.
Bei rollierenden Logs ist das Attribut CreateGluedFile = 1 im Log-Device die Lösung.

Zwischenzeitlich habe ich darauf auch noch einen Hinweis von Boris aus 2015 gefunden. SVG: Darstellungsfehler bei rollierenden Logs und Plot mit Monatswechsel

Damit wäre das Problem auch bei meinen täglich rollierenden Logs gelöst.
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren