[Gelöst] PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6621)

Begonnen von sunrise, 19 November 2023, 16:41:48

Vorheriges Thema - Nächstes Thema

sunrise

Hallo zusammen!

Nachdem ich ausführlich überall gecheckt habe, dass der betreffende Parameter nicht "n.a." war/ist, komme ich bei dieser PERL Warnung nicht weiter und hoffe, Ihr könnt mir einen Hinweis geben, wo ich suchen muss:

2023.11.19 16:08:41 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6613) line 1, <GEN229> line 1904.
2023.11.19 16:08:41 3: eval: $fld[38]/3
2023.11.19 16:08:41 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6619) line 1, <GEN229> line 1931.
2023.11.19 16:08:41 3: eval: $fld[38]/3
2023.11.19 16:08:41 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6625) line 1, <GEN229> line 1946.
2023.11.19 16:08:41 3: eval: $fld[38]/3
2023.11.19 16:08:41 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6631) line 1, <GEN229> line 1971.
2023.11.19 16:08:41 3: eval: $fld[38]/3
2023.11.19 16:08:41 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6637) line 1, <GEN229> line 1984.
2023.11.19 16:08:41 3: eval: $fld[38]/3
2023.11.19 16:08:48 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6615) line 1, <GEN235> line 1904.
2023.11.19 16:08:48 3: eval: $fld[38]/3
2023.11.19 16:08:48 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6621) line 1, <GEN235> line 1931.
2023.11.19 16:08:48 3: eval: $fld[38]/3
2023.11.19 16:08:48 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6627) line 1, <GEN235> line 1946.
2023.11.19 16:08:48 3: eval: $fld[38]/3
2023.11.19 16:08:48 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6633) line 1, <GEN235> line 1971.
2023.11.19 16:08:48 3: eval: $fld[38]/3
2023.11.19 16:08:48 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 6639) line 1, <GEN235> line 1984.

Zumindest hatte ich bisher vermutet, dass die Warnung mit $fld[38]/3 (einer Funktion in einem Plot) zu tun hat, aber sicher bin ich mir nicht. Vielleicht liegt das Problem ganz woanders?

Wie muss ich diese Warnung richtig lesen? Ich verstehe, dass "n.a." ein String ist, der nicht geteilt werden kann ("division"), daher ja auch meine Vermutung, dass es mit der o.g. Funktion zu tun hat. Gleich mehr dazu. Was bedeuten eval <number> und GEN235 und auf welche Zeile bezieht sich die Nummer in z.B. line 1931?

Nun zur o.g. Funktion im Plot:
# Created by FHEM/98_SVG.pm, 2023-11-19 16:05:44
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 y2tics
set ylabel ""
set y2label "W"
set yrange [0:2]

#FileLog_Mythz 35:Mythz.sGlobal\x3a:0:$fld[34]/1.2
#FileLog_Mythz 37:Mythz.sGlobal\x3a:0:$fld[36]/1.5
#FileLog_Mythz 39:Mythz.sGlobal\x3a:0:$fld[38]/3
#FileLog_Mythz 41:Mythz.sGlobal\x3a:0:$fld[40]/4.5
#FileLog_Mythz 31:Mythz.sGlobal\x3a:0:$fld[30]
#FileLog_Mythz 29:Mythz.sGlobal\x3a:0:$fld[28]*1.2
#FileLog_Mythz 19:Mythz.sHC1\x3a::($fld[18]=~"summer"?0:1)/3
#FileLog_MyObis2 4:MyObis2.power\x3a::

plot "<IN>" using 1:2 axes x1y1 title 'Kompressor' ls l1fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Booster-Stufe 3' ls l0fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Booster-Stufe 2' ls l4fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Booster-Stufe 1' ls l3fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'HK-Pumpe' ls l5 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'WW-Pumpe' ls l7 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Winter-Modus' ls l2fill lw 0.2 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Elektrische Leistung Wärmepumpe (W)' ls l4 lw 1 with lines

Die 3. #FileLog_Mythz Zeile enthält $fld[38]/3. Weil das im FHEM Logfile stets über der o.g. PERL Warnung erscheint, dachte ich eben, es bestehe ein Zusammenhang. Daher schaute ich, ob FileLog_Mythz 39:Mythz.sGlobal\x3a:0:$fld[38] (00_THZ.pm) auch einmal (bzw. öfters) den Wert "n.a." enthielt, was aber nicht der Fall ist. Und daher bin ich mit meinem Latein am Ende. 🤔

Anbei das letzte Reading von sGlobal (betreffender Wert ist hervorgehoben):
Zitat2023-11-19_16:24:14 Mythz sGlobal: outsideTemp: 14 flowTemp: 26.6 returnTemp: 21 hotGasTemp: 22.2 dhwTemp: 46.5 flowTempHC2: 0 evaporatorTemp: 18.7 condenserTemp: 22.5 mixerOpen: 0 mixerClosed: 0 heatPipeValve: 0 diverterValve: 0 dhwPump: 0 heatingCircuitPump: 0 solarPump: 0 compressor: 0 boosterStage3: 0 boosterStage2: 0 boosterStage1: 0 highPressureSensor: 1 lowPressureSensor: 1 evaporatorIceMonitor: 1 signalAnode: 0 evuRelease: n.a. ovenFireplace: 0 STB: n.a. outputVentilatorPower: 57 inputVentilatorPower: 57 mainVentilatorPower: 0 outputVentilatorSpeed: 43 inputVentilatorSpeed: 28 mainVentilatorSpeed: 0 outsideTempFiltered: 14.8 relHumidity: n.a. dewPoint: n.a. P_Nd: n.a. P_Hd: n.a. actualPower_Qc: n.a. actualPower_Pel: n.a. collectorTemp: 76.2 insideTemp: 0

Da die anderen Werte korrekt ausgewertet und dargestellt werden, wüsste ich jetzt auch nicht, dass/weshalb ich mich ausgerechnet hier beim Auszählen der korrekten Position vertan habe. Ich habe alle nochmal durchgezählt, gestartet mit "2023-11-19_16:24:14" an Position Null und dann der Wert 0 an Position 38.

Hier der entsprechende Plot:
Du darfst diesen Dateianhang nicht ansehen.

Falls ich mit meiner Vermutung richtig liege, dass die PERL Warnung mit der o.g. Funktion zu tun hat, beträfe das den Plot von "Booster-Stufe 2" (im Plot leider in Gelb schlecht lesbar, da aber ohnehin Null, kein Plot-Verlauf).

Die Division durch 3 in der Plot-Definition dient (wie auch andere Divisionen) schlicht dazu, dass die Plot-Verläufe sich nicht zu sehr überlagern.

Danke für Eure Hilfe! :)
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

betateilchen

Schau doch einfach mal in den "preprocessed input" Deines SVG plots, da siehst Du doch genau, in welcher Abfrage der alphanumerische Wert auftritt.

Zitat von: sunrise am 19 November 2023, 16:41:48Was bedeuten eval <number> und GEN235 und auf welche Zeile bezieht sich die Nummer in z.B. line 1931?

Völlig irrelevant für die Ursachensuche zu Deiner Warnung. Das sind technische Informationen, die aus perl stammen, nicht aus FHEM.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoWiemann

Zitat von: sunrise am 21 November 2023, 13:31:02Hat wirklich niemand eine Idee, woher diese PERL Warnungen kommen?

Warum schaust Du nicht einfach mal in das FileLog, dass für den Plot genutzt wird. Dort werden Werte als n.a. (not available) auftauchen, die am langen Ende durch das Daten liefernde Device generiert werden. Der Rest der Fehlermeldung sind nicht relevat, da, wie betateilchen schon geschrieben hat, von Perl generiert.

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

sunrise

Zitat von: betateilchen am 21 November 2023, 13:37:54Schau doch einfach mal in den "preprocessed input" Deines SVG plots, da siehst Du doch genau, in welcher Abfrage der alphanumerische Wert auftritt.
Das hatte ich bereits gemacht und jetzt nochmal: Dort taucht kein "n.a." auf. Ich musste den Output für meinen Beitrag kürzen, weil ich ihn sonst nicht hätte abschicken können, aber es sind tatsächlich nur numerische Werte >= 0 vorhanden.

Suche ich an der falschen Stelle? Sorry, ich stehe noch auf dem Schlauch. 🤔

get FileLog_Mythz CURRENT INT 2023-11-20_20:00:00 2023-11-21_19:59:59 35:Mythz.sGlobal\x3a:0:$fld[34]/1.2 37:Mythz.sGlobal\x3a:0:$fld[36]/1.5 39:Mythz.sGlobal\x3a:0:$fld[38]/3 41:Mythz.sGlobal\x3a:0:$fld[40]/4.5 31:Mythz.sGlobal\x3a:0:$fld[30] 29:Mythz.sGlobal\x3a:0:$fld[28]*1.2 19:Mythz.sHC1\x3a::($fld[18]=~"summer"?0:1)/3

2023-11-20_20:00:31 0.833333333333333
2023-11-21_19:53:07 0.833333333333333
#35:Mythz.sGlobal\x3a:0:$fld[34]/1.2
2023-11-21_19:48:07 0
2023-11-21_19:53:07 0
#37:Mythz.sGlobal\x3a:0:$fld[36]/1.5
2023-11-20_20:00:31 0
2023-11-21_19:53:07 0
#39:Mythz.sGlobal\x3a:0:$fld[38]/3
2023-11-20_20:00:31 0
2023-11-21_19:53:07 0
#41:Mythz.sGlobal\x3a:0:$fld[40]/4.5
2023-11-20_20:00:31 1
2023-11-21_19:53:07 1
#31:Mythz.sGlobal\x3a:0:$fld[30]
2023-11-20_20:00:31 0
2023-11-21_14:01:31 0
2023-11-21_16:23:19 1.2
2023-11-21_19:53:07 0
#29:Mythz.sGlobal\x3a:0:$fld[28]*1.2
2023-11-20_20:00:15 0.333333333333333
2023-11-21_19:49:36 0.333333333333333
#19:Mythz.sHC1\x3a::($fld[18]=~"summer"?0:1)/3

get FileLog_MyObis2 CURRENT INT 2023-11-20_20:00:00 2023-11-21_19:59:59 4:MyObis2.power\x3a::

2023-11-20_20:00:19 1250
2023-11-21_04:36:29 0
2023-11-21_04:37:29 1244
2023-11-21_07:26:30 1323
2023-11-21_14:00:34 0
2023-11-21_14:03:34 1290
2023-11-21_14:39:34 1515
2023-11-21_14:40:34 0
2023-11-21_16:22:35 1349
2023-11-21_17:07:36 1509
2023-11-21_17:08:36 0
2023-11-21_18:50:53 0
2023-11-21_18:53:53 1237

#4:MyObis2.power\x3a::
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Zitat von: JoWiemann am 21 November 2023, 15:39:28Warum schaust Du nicht einfach mal in das FileLog, dass für den Plot genutzt wird. Dort werden Werte als n.a. (not available) auftauchen, die am langen Ende durch das Daten liefernde Device generiert werden. Der Rest der Fehlermeldung sind nicht relevat, da, wie betateilchen schon geschrieben hat, von Perl generiert.
Dito, auch schon gegengecheckt.

FHEM Filelog:

2023.11.21 17:27:07 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 15525) line 1, <GEN689> line 10916.
Mythz Filelog (~gleiche Zeit):

2023-11-21_17:26:51 Mythz pHeatProg: progHC1StartTime: 18:00 progHC1EndTime: 06:00 progHC1Monday: 1 progHC1Tuesday: 1 progHC1Wednesday: 1 progHC1Thursday: 1 progHC1Friday: 0 progHC1Saturday: 0 progHC1Sunday: 1 progHC1Enable: 0 progHC2StartTime: 19:00 progHC2EndTime: 07:00 progHC2Monday: 0 progHC2Tuesday: 0 progHC2Wednesday: 0 progHC2Thursday: 0 progHC2Friday: 1 progHC2Saturday: 1 progHC2Sunday: 0 progHC2Enable: 0
2023-11-21_17:26:51 Mythz progHC1EndTime: 06:00
2023-11-21_17:27:58 Mythz pSolar: p80EnableSolar: 0 p81DiffTempSolarLoading: 5 p82DelayCompStartSolar: 60 p84DHWTempSolarMode: 60 HystDiffTempSolar: 1 CollectLimitTempSolar: 60
2023-11-21_17:28:08 Mythz progHC1Saturday: 0B
(hier keine "n.a." Werte)

Es kommen durchaus "n.a." Werte im Mythz Filelog vor, aber eben zu anderen Zeiten und vor allem zu Strings aus sGlobal, welche ich im Plot gar nicht auslese.

In der "Nähe" von 17:27 Uhr z.B. (hier als Zitat der besseren Lesbarkeit wegen):

Zitat2023-11-21_17:23:21 Mythz sGlobal: outsideTemp: 10.5 flowTemp: 26.4 returnTemp: 23.3 hotGasTemp: 44.4 dhwTemp: 48.5 flowTempHC2: 0 evaporatorTemp: 15.3 condenserTemp: 24.7 mixerOpen: 0 mixerClosed: 0 heatPipeValve: 0 diverterValve: 0 dhwPump: 0 heatingCircuitPump: 0 solarPump: 0 compressor: 0 boosterStage3: 0 boosterStage2: 0 boosterStage1: 0 highPressureSensor: 1 lowPressureSensor: 1 evaporatorIceMonitor: 1 signalAnode: 0 evuRelease: n.a. ovenFireplace: 0 STB: n.a. outputVentilatorPower: 57 inputVentilatorPower: 57 mainVentilatorPower: 0 outputVentilatorSpeed: 44 inputVentilatorSpeed: 28 mainVentilatorSpeed: 0 outsideTempFiltered: 11.4 relHumidity: n.a. dewPoint: n.a. P_Nd: n.a. P_Hd: n.a. actualPower_Qc: n.a. actualPower_Pel: n.a. collectorTemp: 76.2 insideTemp: 0

Wieso führt ein "n.a." Wert von hier über meine Plot-Definition ...

# Created by FHEM/98_SVG.pm, 2023-11-19 16:05:44
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 y2tics
set ylabel ""
set y2label "W"
set yrange [0:2]

#FileLog_Mythz 35:Mythz.sGlobal\x3a:0:$fld[34]/1.2
#FileLog_Mythz 37:Mythz.sGlobal\x3a:0:$fld[36]/1.5
#FileLog_Mythz 39:Mythz.sGlobal\x3a:0:$fld[38]/3
#FileLog_Mythz 41:Mythz.sGlobal\x3a:0:$fld[40]/4.5
#FileLog_Mythz 31:Mythz.sGlobal\x3a:0:$fld[30]
#FileLog_Mythz 29:Mythz.sGlobal\x3a:0:$fld[28]*1.2
#FileLog_Mythz 19:Mythz.sHC1\x3a::($fld[18]=~"summer"?0:1)/3
#FileLog_MyObis2 4:MyObis2.power\x3a::

plot "<IN>" using 1:2 axes x1y1 title 'Kompressor' ls l1fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Booster-Stufe 3' ls l0fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Booster-Stufe 2' ls l4fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Booster-Stufe 1' ls l3fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'HK-Pumpe' ls l5 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'WW-Pumpe' ls l7 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Winter-Modus' ls l2fill lw 0.2 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Elektrische Leistung Wärmepumpe (W)' ls l4 lw 1 with lines

... zu dieser PERL Warnung:

2023.11.21 17:27:07 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 15525) line 1, <GEN689> line 10916.
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

betateilchen

Zitat von: sunrise am 21 November 2023, 20:01:35Suche ich an der falschen Stelle? Sorry, ich stehe noch auf dem Schlauch. 🤔

Vielleicht suchst Du einfach im falschen SVG device.

Hast Du schonmal darüber nachgedacht, in Deinem FHEM das stacktrace zu aktivieren? Das hilft nicht immer, aber manchmal bekommt man dadurch doch hilfreiche Informationen, um einem Fehler auf die Spur zu komme.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sunrise

Ich habe alle SVG devices nochmal durchgeschaut, aber nichts relevantes gefunden. Stacktrace sagt mir (noch) nichts, aber danke schonmal für Deinen Hinweis dazu - schaue ich mir demnächst an.

PS: Die letzte PERL Warnung bzgl. des Arguments "n.a." ist immer noch von 17:27, d.h. seither kam keine neue dazu. Auch das behalte ich mal im Auge.
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

betateilchen

Zitat von: sunrise am 21 November 2023, 21:29:05Die letzte PERL Warnung bzgl. des Arguments "n.a." ist immer noch von 17:27, d.h. seither kam keine neue dazu. Auch das behalte ich mal im Auge.

Die Meldung wird nur generiert, wenn der SVG plot irgendwo angezeigt (oder abgerufen) wird. Solange die Daten nicht für die Anzeige verarbeitet werden, wirst Du die Meldung nicht im Log finden.

Zitat von: sunrise am 21 November 2023, 21:29:05Ich habe alle SVG devices nochmal durchgeschaut, aber nichts relevantes gefunden.

Niemand weiß, was Du in diesem Zusammenhang als "relevant" ansiehst  8)

Zitat von: sunrise am 21 November 2023, 21:29:05Stacktrace sagt mir (noch) nichts, aber danke schonmal für Deinen Hinweis dazu

attr global stacktrace 1
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sunrise

Zitat von: betateilchen am 21 November 2023, 21:37:50Die Meldung wird nur generiert, wenn der SVG plot irgendwo angezeigt (oder abgerufen) wird. Solange die Daten nicht für die Anzeige verarbeitet werden, wirst Du die Meldung nicht im Log finden.
Klar, aber ich lade die Plots ständig neu.

Zitat von: betateilchen am 21 November 2023, 21:37:50Niemand weiß, was Du in diesem Zusammenhang als "relevant" ansiehst  (https://forum.fhem.de/Smileys/fugue/cool.png)
Im Moment als ich es schrieb, dachte ich mir schon, was kommt. ;D Also ich meinte damit "n.a." Werte.

Zu stacktrace steht dort (und auch in der CommandRef) aber fast nichts: https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Stacktrace
Egal, ich aktiviere es mal und schaue, was bei der nächste PERL Warnung an zusätzlicher Info kommt.

Ich dachte auch daran, verbose auf 5 zu setzen, aber dann läuft mein Logfile (über Nacht?) sehr voll, oder ist das erstmal egal?
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Seither sehe ich keine der zuvor genannten PERL Warnungen mehr, aber das liegt wohl auch daran, dass ich die Plots seither nicht neu geladen habe. Mache ich jetzt noch ein paar Mal und sehe dann später nochmal nach. Es muss ja auch einen Zusammenhang mit irgendwelchen Werten geben. Und die ändern sich über die Zeit. Solange kein Trigger ("n.a." Wert) auftritt (warum auch immer), werde ich auch keine Warnungen sehen.
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Hallo nochmal!

Diese Warnung ist seither nicht nochmal aufgetreten:

2023.11.21 17:27:07 1: PERL WARNING: Argument "n.a." isn't numeric in division (/) at (eval 15525) line 1, <GEN689> line 10916.
Aber dafür finde ich nun (nach Aktivierung von stacktrace) PERL Warnungen dieser Art:

2023.11.23 14:15:37 1: PERL WARNING: Use of uninitialized value in subtraction (-) at (eval 31609) line 1, <GEN1887> line 986.
2023.11.23 14:15:37 3: eval: $fld[16]-$fld[14]
2023.11.23 14:15:37 1: stacktrace:
2023.11.23 14:15:37 1:     main::__ANON__                      called by (eval 31609) (1)
2023.11.23 14:15:37 1:     (eval)                              called by ./FHEM/92_FileLog.pm (1037)
2023.11.23 14:15:37 1:     main::FileLog_Get                   called by fhem.pl (3982)
2023.11.23 14:15:37 1:     main::CallFn                        called by fhem.pl (2033)
2023.11.23 14:15:37 1:     main::CommandGet                    called by fhem.pl (1280)
2023.11.23 14:15:37 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2859)
2023.11.23 14:15:37 1:     main::FW_fC                         called by ./FHEM/98_SVG.pm (1270)
2023.11.23 14:15:37 1:     main::SVG_getData                   called by ./FHEM/98_SVG.pm (1234)
2023.11.23 14:15:37 1:     main::SVG_doShowLog                 called by ./FHEM/98_SVG.pm (1127)
2023.11.23 14:15:37 1:     main::SVG_showLog                   called by ./FHEM/01_FHEMWEB.pm (1011)
2023.11.23 14:15:37 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (609)
2023.11.23 14:15:37 1:     main::FW_Read                       called by fhem.pl (3982)
2023.11.23 14:15:37 1:     main::CallFn                        called by fhem.pl (784)
2023.11.23 14:15:37 1: PERL WARNING: Use of uninitialized value $fld[18] in pattern match (m//) at (eval 32074) line 1, <GEN1887> line 986.
2023.11.23 14:15:37 3: eval: ($fld[18]=~"summer"?0:1)/3
2023.11.23 14:15:37 1: stacktrace:
2023.11.23 14:15:37 1:     main::__ANON__                      called by (eval 32074) (1)
2023.11.23 14:15:37 1:     (eval)                              called by ./FHEM/92_FileLog.pm (1037)
2023.11.23 14:15:37 1:     main::FileLog_Get                   called by fhem.pl (3982)
2023.11.23 14:15:37 1:     main::CallFn                        called by fhem.pl (2033)
2023.11.23 14:15:37 1:     main::CommandGet                    called by fhem.pl (1280)
2023.11.23 14:15:37 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2859)
2023.11.23 14:15:37 1:     main::FW_fC                         called by ./FHEM/98_SVG.pm (1270)
2023.11.23 14:15:37 1:     main::SVG_getData                   called by ./FHEM/98_SVG.pm (1234)
2023.11.23 14:15:37 1:     main::SVG_doShowLog                 called by ./FHEM/98_SVG.pm (1127)
2023.11.23 14:15:37 1:     main::SVG_showLog                   called by ./FHEM/01_FHEMWEB.pm (1011)
2023.11.23 14:15:37 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (609)
2023.11.23 14:15:37 1:     main::FW_Read                       called by fhem.pl (3982)
2023.11.23 14:15:37 1:     main::CallFn                        called by fhem.pl (784)

Was bedeuten die Hinweise auf nicht initialisierte Werte? Es sind zwar "nur" Warnungen, aber ich möchte gerne wissen, ob ich etwas verbessern kann, damit sie nicht mehr auftauchen.

Nochmals vielen Dank! 👍
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

JoWiemann

Hallo,

Du hast im gplot $fld[18] als Datenlieferant angegeben. Es wird wohl eine oder mehrere Zeilen im fileLog geben, in der das Feld 18 oder auch die Spalte 18 nicht existiert. Daher ist $fld[18] nicht vorhanden.

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

sunrise

Hallo Jörg,

Der Wert (im aktuellen Beispiel "winter", sonst "summer") soll aus dem Output sHC1 analysiert werden:

ZitatMythz sHC1: outsideTemp: 8.5 x08: -34.1 returnTemp: 21.8 integralHeat: -41 flowTemp: 27.2 heatSetTemp: 25.8 heatTemp: 23.3 seasonMode: winter integralSwitch: 150 hcOpMode: normal roomSetTemp: 20 x60: 0 x64: 0 insideTempRC: 0 x72: 51.2 x76: 0 onHysteresisNo: 0 offHysteresisNo: 1 hcBoosterStage: 0

Die Zeile in der .gplot Datei dafür sieht so aus (der gefragte Wert befindet sich in Spalte 18):

#FileLog_Mythz 19:Mythz.sHC1\x3a::($fld[18]=~"summer"?0:1)/3
So allmählich schwant mir, was das Problem ist:
Ich hatte die Division durch 3 anfangs nicht verwendet, aber für andere Plots anderer Parameter, die numerische Werte haben. Mit der Division wollte ich den Plot etwas "runterdrücken", damit er nicht andere (wichtigere) Plots überlagert.

Aber jetzt vermute ich, dass meine Syntax dafür schlicht falsch ist bzw. es so nicht funktioniert.

So sieht der Plot momentan aus (und ist auch so gewollt):

Du darfst diesen Dateianhang nicht ansehen.
Nachdem ich das "/3" entfernt habe, sieht der Plot so aus (so nicht gewollt):

Du darfst diesen Dateianhang nicht ansehen.

Also scheint die Division durch 3 durchaus optisch zu funktionieren, aber zu einer PERL Warnung zu führen.

Oder bin ich da auf dem Holzweg, und die Ursache des Problems liegt doch woanders? Dann habe ich Deine Erläuterung vermutlich missverstanden. Denn ich verstehe nicht, wie Spalte 18 jemals leer sein kann. 🤔


PS:
Der preprocessed input sieht so aus (die Zeile mit dem Wert 0.333333333333333 wiederholt sich alle 5 Minuten und ist m.E. so ok):

2023-11-23_17:26:07 0.333333333333333
#19:Mythz.sHC1\x3a::($fld[18]=~"summer"?0:1)/3

Wie/wo würde man denn nicht vorhandene Werte erkennen, wenn sie eben nicht vorhanden wären? Sorry, falls die frage blöd und die Antwort offensichtlich ist. 🫢
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

betateilchen

Das ganze Rumgerechne kannst Du Dir doch komplett schenken, wenn Du den Wert stattdessen einfach an einer zusätzlichen (passenden) y-Achse plottest, die nicht zwingend sichtbar sein muss.

Außerdem verstehe ich nicht, warum Du die zwei einzig möglichen Werte 0 oder 1 überhaupt durch 3 dividierst, wenn dabei als Ergebnis ohnehin nur 0 oder 0,33 rauskommen kann. Dann kannst Du doch die Werte auch direkt angeben.

Zitat von: sunrise am 23 November 2023, 17:27:11Wie/wo würde man denn nicht vorhandene Werte erkennen, wenn sie eben nicht vorhanden wären?

Man kann z.B. prüfen, wieviele Elemente das array @fld überhaupt enthält. Wenn dabei nur sechzehn Elemente rauskommen, kannst Du logischerweise kein achtzehntes Element abfragen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!