Autor Thema: Heizungsplot bringt PERL WARNUNG im Logfile  (Gelesen 6993 mal)

Offline frober

  • Hero Member
  • *****
  • Beiträge: 1171
  • Was man nicht kann, kann man lernen...
Heizungsplot bringt PERL WARNUNG im Logfile
« am: 12 Oktober 2014, 12:47:26 »
Hallo Leute,

ich habe mir ein Plot von meiner Heizung (Luxtronik 2) erzeugt, damit ich die Schaltzeiten der Wärme-und Zirkulationonspumpen überwachen kann.
Soweit funktioniert alles super, jedoch bekomme ich im Logfile dauernd eine "PERL WARNINGS":


2014.10.12 12:30:20 1: PERL WARNING: Use of uninitialized value $fld[4] in pattern match (m//) at (eval 14676) line 1, <GEN526> line 1467.
2014.10.12 12:30:20 1: PERL WARNING: Use of uninitialized value $fld[4] in pattern match (m//) at (eval 14679) line 1, <GEN526> line 1480.
2014.10.12 12:32:06 1: PERL WARNING: Use of uninitialized value $fld[4] in pattern match (m//) at (eval 15478) line 1, <GEN534> line 1467.
2014.10.12 12:32:06 1: PERL WARNING: Use of uninitialized value $fld[4] in pattern match (m//) at (eval 15481) line 1, <GEN534> line 1480.
2014.10.12 12:33:01 1: PERL WARNING: Use of uninitialized value $fld[4] in pattern match (m//) at (eval 16280) line 1, <GEN538> line 1467.
2014.10.12 12:33:01 1: PERL WARNING: Use of uninitialized value $fld[4] in pattern match (m//) at (eval 16283) line 1, <GEN538> line 1480.

Hier noch meine Plotdatei:
# Created by FHEM/98_SVG.pm, 2014-10-11 17:22:41
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 'Zirkulationspumpe'
set ytics ("Aus" 0, "An" 1)
set y2tics
set grid
set ylabel "Status"
set y2label "Durchfluß L/h"
set yrange [0.0:1.1]

#FileLog 4:Heizung.flowRate\x3a:0:
#FileLog 4:Heizung.hotWaterSwitchingValve\x3a:0:$fld[3]=~"on"?1:0
#FileLog 4:Heizung.hotWaterCircPumpExtern\x3a:0:$fld[3]=~"on"?1:0
#FileLog 4:Heizung.opStateHeatPump1\x3a:0:$fld[4]=~"laeuft"?1:0

plot "<IN>" using 1:2 axes x1y2 title 'Heizungszirkulation' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Warmwasserumschaltung' ls l2fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Warmwasserzirkulation' ls l1fill_stripe lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Wärmepumpe' ls l6fill lw 1 with steps

Hat jemand eine Idee, woran das liegt?

Danke und Gruß
Bernd
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18513
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #1 am: 12 Oktober 2014, 13:10:57 »
Du arbeitest mit einer Variablen $fld[4] die es im jeweiligen Datensatz aber nicht gibt.
-----------------------
Möchte man beruflich "etwas mit Menschen" machen, ohne etwas mit deren Dummheit zu tun haben zu müssen,
bleibt eigentlich nur der Beruf des Bestatters übrig.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25832
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #2 am: 12 Oktober 2014, 13:34:34 »
... also es gibt Zeilen im Logfile mit Heizung.opStateHeatPump1, aber ohne $fld[4], was Umgangssprachlich als Spalte 5 bezeichnet wird. Ich habe FileLog ergaenzt, damit nach der Warnung das betreffende eval (in diesem Fall
$fld[4]=~"laeuft"?1:0) angezeigt wird.

Offline frober

  • Hero Member
  • *****
  • Beiträge: 1171
  • Was man nicht kann, kann man lernen...
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #3 am: 12 Oktober 2014, 16:20:08 »
Hallo,

danke für die Antworten.

Betateilchen:
Wenn es diese Variable nicht gibt, wieso funktioniert es bis auf die Fehlermeldung? Die Schaltzyklen der WP werden im Plot angezeigt.

Bei Heizung.opStateHeatPump1 steht im Logfile "Waermepumpe steht" oder "Waermepumpe laeuft" , da dadurch ein weiteres Leerzeichen vorhanden ist und nur steht oder laeuft zu unterscheiden ist, habe ich Spalte 5 angenommen.

Heisst das, ich muß Spalte 4 ($fld[3]) annehmem und dafür den ganzen Text mit Leerzeichen vergleichen, geht das?
Falls ja, wie wird das Leerzeichen dargestellt?
Mit  "Waermepumpe laeuft"  funktioniert es nicht.

Danke und Gruß
Bernd

« Letzte Änderung: 12 Oktober 2014, 19:09:34 von frober »
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25832
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #4 am: 13 Oktober 2014, 09:36:58 »
@frober: bitte meinen Beitrag auch/genau lesen.
Deine Vorschlaege funktionieren nicht (oder ich verstehe sie nicht).
Die direkte Loesung waere
$fld[4]=~"laeuft"?1:0
durch
$fld[4]&&$fld[4]=~"laeuft"?1:0zu ersetzen. Die bessere Loesung ist zu pruefen, wieso Zeilen mit Heizung.opStateHeatPump1 aber ohne 5. Spalte im Log stehen, und das vermeiden.

Offline frober

  • Hero Member
  • *****
  • Beiträge: 1171
  • Was man nicht kann, kann man lernen...
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #5 am: 13 Oktober 2014, 10:34:45 »
Hallo rudolfkoenig,

In meinem Logfile steht:
2014-10-01_00:08:13 Heizung opStateHeatPump1: Waermepumpe steht
Die Daten kommen direkt von Luxtronik2.pm bzw. von der WP.

Ich habe deinen Beitrag gelesen, wenn ich es richtig verstanden habe , gibt es keine Spalte 5. D.h. " Waermepumpe steht" wäre nur eine Spalte.

Ich habe dein Vorschlag umgesetzt, die Fehlermeldungen sind weg.
Nur verstehe ich es nicht, übersetzt heißt das 'wenn in Spalte 5 und Spalte 5  laeuft steht dann 1 ansonsten 0' .
Wieso zweimal die gleiche Spalte?


Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25832
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #6 am: 13 Oktober 2014, 10:56:36 »
Ich formuliere deutlicher: es gibt einige Zeilen mit Heizung.opStateHeatPump1 im Log ohne Spalte 5. Andere Zeilen mit Heizung.opStateHeatPump1 haben eine Spalte 5, deswegen sieht man was im Plot.

Mein Vorschlag ist so zu lesen:
((falls Spalte 5 exisitert, ist nicht 0 und ist kein leerstring) und (Spalte 5 beinhaltet laeuft)), dann 1 sonst 0"

Wobei "ist nicht 0 und ist kein leerstring" in diesem Fall irrelevant ist.
$fld[X] wird nie Leerzeichen enthalten, weil @fld so entsteht, dass die Log-Zeile bei Leerzeichen aufgeteilt wird.
« Letzte Änderung: 13 Oktober 2014, 10:59:34 von rudolfkoenig »

Offline frober

  • Hero Member
  • *****
  • Beiträge: 1171
  • Was man nicht kann, kann man lernen...
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #7 am: 13 Oktober 2014, 11:02:18 »
Super, danke,
jetzt habe ich es verstanden.
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline topfi

  • Full Member
  • ***
  • Beiträge: 421
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #8 am: 13 Oktober 2014, 11:32:54 »
Puuuh, mein Log habt ihr auch mit Warnungen geflutet.

Glücklicherweise steht ja hier die genaue Erklärung, sonst hätte ich mir einen Wolf gesucht. Danke dafür. Es ist doch eher die Regel als die Ausnahme, dass manche Werte mehrfach in verschiedenen Spalten auftauchen. Mit dem thread hier ist das kein Problem und erzieht tatsächlich zum sauberen Scripten, keine Frage.

Aber von allein findet doch kein Mensch den Grund und in ein paar Tagen ist der Thread in den Tiefen verschwunden.

Offline Bartimaus

  • Hero Member
  • *****
  • Beiträge: 1443
Antw:Heizungsplot bringt PERL WARNUNG im Logfile
« Antwort #9 am: 25 Dezember 2014, 13:59:47 »
@frober: bitte meinen Beitrag auch/genau lesen.
Deine Vorschlaege funktionieren nicht (oder ich verstehe sie nicht).
Die direkte Loesung waere
$fld[4]=~"laeuft"?1:0
durch
$fld[4]&&$fld[4]=~"laeuft"?1:0zu ersetzen. Die bessere Loesung ist zu pruefen, wieso Zeilen mit Heizung.opStateHeatPump1 aber ohne 5. Spalte im Log stehen, und das vermeiden.


Danke für den Tip. Mein Syslog wurde auch zugemüllt. Bis ich dann die Korrektur von Rudolf König in den Plot eines Fensterkontakts eingebaut habe, seitdem ist Ruhe.
LG
B.


RaspberryP4-4G - Raspbian-Buster, RootFS@256GB-USB-SSD, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs

 

decade-submarginal