FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Spook112 am 04 März 2025, 22:05:35

Titel: [gelöst] Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 04 März 2025, 22:05:35
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?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Otto123 am 04 März 2025, 23:19:55
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)
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 05 März 2025, 08:18:59
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?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: betateilchen am 05 März 2025, 12:56:35
Ungetestet, da ich nicht zuhause bin: sowas sollte doch mit logproxy funktionieren?

Man müsste doch nur $data{currval1} und $data{currval2} addieren?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Otto123 am 06 März 2025, 23:33:51
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.
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 07 März 2025, 11:11:07
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?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: betateilchen am 07 März 2025, 11:21:05
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.
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 07 März 2025, 13:00:23
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 ?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Otto123 am 07 März 2025, 16:46:41
Ich dachte immer CURRENT und HISTORY haben nur bei dblog Bedeutung?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 08 März 2025, 10:20:42
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?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Otto123 am 08 März 2025, 10:36:25
kannst Du bitte mal den Inhalt vom Gplotfile posten?
Den bekommst Du wenn Du hinter dem Internal GPLOTFILE auf den Link klickst ;)
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 08 März 2025, 11:43:53
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
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 08 März 2025, 12:42:41
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.
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: RalfRog am 08 März 2025, 18:53:31
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
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 09 März 2025, 22:29:04
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 (https://forum.fhem.de/index.php?topic=41791.msg340417#msg340417)

Damit wäre das Problem auch bei meinen täglich rollierenden Logs gelöst.
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 10 März 2025, 15:59:48
Nachdem alle zwischenzeitlich aufgetretenen "Probleme" mit den rollierenden LogFiles und dem Berücksichtigen der Summe der Werte aus 2 Devises durch Eure Tipps gelöst werden konnten möchte ich noch einmal auf die ursprünfliche Frage zurück kommen:

Ist es (überhaupt) möglich dieselben Daten aus/von einem Device in zwei eigenständige LogFiles zu schreiben.

Szenario:
Inverter EZ1_inverter_HWR schreibt alle zu loggenden Daten in das LogFile FileLog_EZ1_inverter_HWR
Dieses Logfile wird sehr schnell sehr groß und damit für SVG zum Performancekiller.
Ist es möglich zusätzlich noch die Daten für die augenblickliche Stromproduktion pro Solarpanel (hier Readings p1 und Readings p2) in ein zweites LogFile zu schreiben, in dem nur diese beiden Werte dokumentiert werden, um dieses sehr viel kleiner LogFile dann für den SVG Plot zu verwenden.

Das würde bedeuten, dass FHEM dieselben Werte in 2 verschiedene LogFiles schreiben würde/müsste.
Kann FHEM das ?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Otto123 am 10 März 2025, 16:19:00
Ja klar. Jedes LogFile ist doch eine Definition und welche Events Du in welches LogFile schreibst steht im regExp.
Du kannst beliebig oft ein neues logFile definieren und die gleichen werte reinschreiben. Über set xxx addRegexpPart geht das sogar Menügeführt :)

Die Antwort stand doch quasi schon in #1 ;)
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 11 März 2025, 09:29:01
Hm. Ich hatte Deinen Kommentar etwas anders verstanden
ZitatDu 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 :)
Werte aus beliebigen Devices in ein "zentrales" Logfile - ok, klar geht.
Aus beliebigen Logfiles einen "kombinierten" SVG Plot - ok, habe ich hin bekommen. Ein kombinierter SVG Plot aus den Logs der beiden Inverter.

Dasselbe "Datum" in zwei unterschiedliche Logfiles zu schreiben - es also zweimal zu loggen - das habe ich allerdings noch nicht geschafft.
Ich habe das mit den entsprechenden regExp menügeführt in den beiden Logfiles angegeben.
In beiden LogDevices stand also dieselbe regExp drin und referenzierte auf dasselbe Inverter Device und dasselbe userReadings in dem Device.
Der bzw. die Werte wurden aber nur in eines der beiden Logfiles geschrieben.

Muss man da noch auf etwas Besonderes achten?
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Otto123 am 11 März 2025, 11:15:03
Vielleicht sagt ein Beispiel mehr als viele Worte? ;)
defmod dummy1 dummy
attr dummy1 room Test
attr dummy1 setExtensionsEvent 1
attr dummy1 setList on off

defmod dummy1log1 FileLog ./log/dummy1log1.log dummy1
attr dummy1log1 room Test

defmod dummy1log2 FileLog ./log/dummy1log2.log dummy1
attr dummy1log2 room Test

Wenn man den dummy ein und ausschaltet steht es anschließend in beiden Logs.
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: rabehd am 11 März 2025, 12:26:04
Zitat von: Spook112 am 11 März 2025, 09:29:01Der bzw. die Werte wurden aber nur in eines der beiden Logfiles geschrieben.
Ein list Deiner Logfiles wäre toll, dann muss Otto nicht so raten.  :(
Titel: Aw: Infos von einem Device dupliziert in ein zweites Logfile schreiben
Beitrag von: Spook112 am 15 März 2025, 23:35:07
Nachdem ich jetzt endlich dazu gekommen bin es noch einmal auszuprobieren.

Es funktioniert wie Otto schon beschrieben hatte.
Da muss ich wohl vorher etwas falsch gemacht haben.
Danke noch einmal für die Hilfe.