[gelöst] PERL WARNING bei SVG: fehlendes Feld

Begonnen von Gisbert, 10 März 2025, 19:36:59

Vorheriges Thema - Nächstes Thema

Gisbert

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
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

JoWiemann

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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

rudolfkoenig

@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.

Gisbert

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
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

JoWiemann

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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Gisbert

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
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Gisbert

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
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome