FHEM Forum

FHEM => Frontends => SVG / Plots / logProxy => Thema gestartet von: Gisbert am 10 März 2025, 19:36:59

Titel: [gelöst] PERL WARNING bei SVG: fehlendes Feld
Beitrag von: Gisbert am 10 März 2025, 19:36:59
Hallo Rudi,

ich erhalte folgende Log-Einträge, die von einem SVG-Plot stammen:
2025.03.10 19:08:48.666 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10805078) line 1, <GEN31257> line 144.
2025.03.10 19:08:48.667 3: eval: $fld[3]=~m/ON/?2.5:-0.1
2025.03.10 19:08:48.684 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10805118) line 1, <GEN31257> line 289.
2025.03.10 19:08:48.684 3: eval: $fld[3]=~m/ON/?2.5:-0.1
2025.03.10 19:08:48.794 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10805376) line 1, <GEN31257> line 1344.
2025.03.10 19:08:48.794 3: eval: $fld[3]=~m/ON/?2.5:-0.1
2025.03.10 19:08:48.951 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10805789) line 1, <GEN31257> line 2978.
2025.03.10 19:08:48.952 3: eval: $fld[3]=~m/ON/?2.5:-0.1
2025.03.10 19:09:12.317 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10808317) line 1, <GEN31269> line 144.
2025.03.10 19:09:12.318 3: eval: $fld[3]=~m/ON/?2.5:-0.1
2025.03.10 19:09:12.338 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10808357) line 1, <GEN31269> line 289.
2025.03.10 19:09:12.338 3: eval: $fld[3]=~m/ON/?2.5:-0.1
2025.03.10 19:09:12.458 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10808615) line 1, <GEN31269> line 1344.
2025.03.10 19:09:12.458 3: eval: $fld[3]=~m/ON/?2.5:-0.1
2025.03.10 19:09:12.623 1: PERL WARNING: Use of uninitialized value $fld[3] in pattern match (m//) at (eval 10809028) line 1, <GEN31269> line 2978.
2025.03.10 19:09:12.623 3: eval: $fld[3]=~m/ON/?2.5:-0.1

SVG_FileLog_Lichtstaerke_1.gplot:
# Created by FHEM/98_SVG.pm, 2025-03-10 13:29:52
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 '<L1>'
set ytics
set y2tics
set grid ytics
set ylabel "Lichtsärke lx"
set y2label "Vcc"
set y2range [0:10]

#FileLog_Lichtstaerke 4:Lichtstaerke.BH1750_Illuminance\x3a::
#FileLog_Lichtstaerke 4:Lichtstaerke.Lichtstaerke.Ostseite.Lux.Av\x3a::
#FileLog_Lichtstaerke 4:Lichtstaerke.West.MAX44009_Illuminance\x3a::
#FileLog_Lichtstaerke 4:Lichtstaerke.West.Lichtstaerke.Westseite.Lux.Av\x3a::
#FileLog_Lichtstaerke 4:Lichtstaerke.West.Direkteinstrahlung\x3a::
#FileLog_Lichtstaerke 4:Lichtstaerke.West.quot\x3a::$fld[3]*1000
#FileLog_Lichtstaerke 4:Lichtstaerke.PIR\x3a::$fld[3]=~m/ON/?2.0:-0.1
#FileLog_Lichtstaerke 4:Lichtstaerke.POWER\x3a::$fld[3]=~m/ON/?2.5:-0.1

plot "<IN>" using 1:2 axes x1y1 title 'Ostseite' ls l4 lw 0.2 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Ostseite Durchschnitt' ls l4 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Westseite' ls l2 lw 0.2 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Westseite Durchschnitt' ls l2 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'direkt(av)' ls l0 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'direkt/diffus(av)*1000' ls l1 lw 2 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'PIR Garage' ls l5fill lw 3 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Flutlicht Garage' ls l3fill lw 3 with steps

Logfile:
2025-03-10_19:05:52 Lichtstaerke POWER: OFF
2025-03-10_19:06:05 Lichtstaerke POWER: ON
2025-03-10_19:06:39 Lichtstaerke.West MAX44009_Illuminance: 1.53
2025-03-10_19:06:39 Lichtstaerke.West Lichtstaerke.Westseite.Lux.Av: 2
2025-03-10_19:06:39 Lichtstaerke.West Direkteinstrahlung: 2
2025-03-10_19:07:00 Lichtstaerke PIR: ON
2025-03-10_19:07:03 Lichtstaerke PIR: OFF
2025-03-10_19:07:04 Lichtstaerke PIR: ON
2025-03-10_19:07:07 Lichtstaerke PIR: OFF
2025-03-10_19:07:10 Lichtstaerke PIR: ON
2025-03-10_19:07:14 Lichtstaerke PIR: OFF
2025-03-10_19:07:17 Lichtstaerke PIR: ON
2025-03-10_19:07:19 Lichtstaerke PIR: OFF
2025-03-10_19:07:25 Lichtstaerke PIR: ON
2025-03-10_19:07:27 Lichtstaerke PIR: OFF
2025-03-10_19:07:52 Lichtstaerke BH1750_Illuminance: 0
2025-03-10_19:07:52 Lichtstaerke Lichtstaerke.Ostseite.Lux.Av: 0
2025-03-10_19:08:39 Lichtstaerke.West quot: 0
2025-03-10_19:08:40 Lichtstaerke.West MAX44009_Illuminance: 1.1475
2025-03-10_19:09:25 Lichtstaerke POWER: OFF

Bei anderen Plots mit der gleichen Definition ($fld[3]=~m/ON/?2.5:-0.1) bekomme ich keine Meldungen in der Logdatei. Was mache ich falsch, bzw. wie mache ich es richtig?

Viele Grüße Gisbert
Titel: Aw: PERL WARNING bei SVG
Beitrag von: JoWiemann am 10 März 2025, 20:04:00
Hallo Gisbert,

Deine Frage und das Problem der Definition wurde hier schon einmal besprochen: https://forum.fhem.de/index.php?topic=59396.0

Auch wenn es immer wieder wiederholt wird. Eine Suche mit "Fhem $fld" bei Google führte mich direkt zum Thema.

Grüße Jörg
Titel: Aw: PERL WARNING bei SVG
Beitrag von: rudolfkoenig am 10 März 2025, 21:26:17
@Gisbert: ich vermute, dass einige Zeilen in der Datei weniger als 4 Felder haben.

Im verlinkten Artikel gab es Leerzeilen in der Datei, das ist fuer FileLog auch nicht optimal.
Titel: Aw: PERL WARNING bei SVG
Beitrag von: Gisbert am 11 März 2025, 12:47:58
Zitat von: rudolfkoenig am 10 März 2025, 21:26:17@Gisbert: ich vermute, dass einige Zeilen in der Datei weniger als 4 Felder haben.

Im verlinkten Artikel gab es Leerzeilen in der Datei, das ist fuer FileLog auch nicht optimal.

Hallo Rudi,
hallo Jörg,

das ist wohl die Ursache.
Gibt es irgendeine Möglichkeit, in einem Device oder in der Log-Datei, zu verhindern, dass leere Readings erzeugt bzw. gespeichert werden? Leider passiert es täglich 1-2mal, dass ein leeres Reading in der Log-Datei gespeichert wird.

Viele Grüße Gisbert
Titel: Aw: PERL WARNING bei SVG
Beitrag von: JoWiemann am 11 März 2025, 17:14:07
Hallo Gisbert,

Versuch mal folgendes:

$fld[3]&&$fld[3]=~m/ON/?2.5:-0.1

Durch das erste $fld[3] wird auf Existenz geprüft und der Parameter vom && nicht mehr ausgeführt, da ja schon der Erste false ergibt. Damit sollte kein Warning mehr entstehen.

Grüße Jörg
Titel: Aw: PERL WARNING bei SVG
Beitrag von: Gisbert am 11 März 2025, 21:56:11
Hallo Jörg,

ich hab deinen Vorschlag jetzt umgesetzt und warte auf einen Eintrag mit fehlendem Feld. Ich berichte dann wieder, wenn ich etwas weiß.

Viele Grüße Gisbert
Titel: Aw: PERL WARNING bei SVG
Beitrag von: Gisbert am 13 März 2025, 11:48:05
Zitat von: JoWiemann am 11 März 2025, 17:14:07Hallo Gisbert,

Versuch mal folgendes:

$fld[3]&&$fld[3]=~m/ON/?2.5:-0.1

Durch das erste $fld[3] wird auf Existenz geprüft und der Parameter vom && nicht mehr ausgeführt, da ja schon der Erste false ergibt. Damit sollte kein Warning mehr entstehen.

Grüße Jörg

Hallo Jörg,

dein Vorschlag funktioniert. Die Grafik wird nach wie vor richtig angezeigt, und gleichzeitig gibt es kein PERL WARNING im Logfile.

Vielen Dank und viele Grüße
Gisbert