FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tfhem am 18 Juli 2018, 22:35:00

Titel: PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: tfhem am 18 Juli 2018, 22:35:00
Guten Abend,

ich habe bei mir eine Vielzahl von PEARL WARNING, die wie folgt aussehen. Dies ist nur ein kleiner Auszug.


2018.07.18 22:30:04 1: PERL WARNING: Argument "normal" isn't numeric in subtraction (-) at (eval 117) line 1, <GEN17> line 37.
2018.07.18 22:30:04 3: eval: 100-$fld[3]
2018.07.18 22:30:04 1: stacktrace:
2018.07.18 22:30:04 1:     main::__ANON__                      called by (eval 117) (1)
2018.07.18 22:30:04 1:     (eval)                              called by ./FHEM/92_FileLog.pm (813)
2018.07.18 22:30:04 1:     main::FileLog_Get                   called by fhem.pl (3584)
2018.07.18 22:30:04 1:     main::CallFn                        called by fhem.pl (1861)
2018.07.18 22:30:04 1:     main::CommandGet                    called by fhem.pl (1209)
2018.07.18 22:30:04 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2525)
2018.07.18 22:30:04 1:     main::FW_fC                         called by ./FHEM/98_SVG.pm (1246)
2018.07.18 22:30:04 1:     main::SVG_getData                   called by ./FHEM/98_SVG.pm (1214)
2018.07.18 22:30:04 1:     main::SVG_doShowLog                 called by ./FHEM/98_SVG.pm (1108)
2018.07.18 22:30:04 1:     main::SVG_showLog                   called by ./FHEM/01_FHEMWEB.pm (884)
2018.07.18 22:30:04 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (538)
2018.07.18 22:30:04 1:     main::FW_Read                       called by fhem.pl (3584)
2018.07.18 22:30:04 1:     main::CallFn                        called by fhem.pl (723)
2018.07.18 22:30:04 1: PERL WARNING: Argument "normal" isn't numeric in subtraction (-) at (eval 119) line 1, <GEN17> line 44.
2018.07.18 22:30:04 3: eval: 100-$fld[3]
2018.07.18 22:30:04 1: stacktrace:
2018.07.18 22:30:04 1:     main::__ANON__                      called by (eval 119) (1)
2018.07.18 22:30:04 1:     (eval)                              called by ./FHEM/92_FileLog.pm (813)
2018.07.18 22:30:04 1:     main::FileLog_Get                   called by fhem.pl (3584)
2018.07.18 22:30:04 1:     main::CallFn                        called by fhem.pl (1861)
2018.07.18 22:30:04 1:     main::CommandGet                    called by fhem.pl (1209)
2018.07.18 22:30:04 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2525)
2018.07.18 22:30:04 1:     main::FW_fC                         called by ./FHEM/98_SVG.pm (1246)
2018.07.18 22:30:04 1:     main::SVG_getData                   called by ./FHEM/98_SVG.pm (1214)
2018.07.18 22:30:04 1:     main::SVG_doShowLog                 called by ./FHEM/98_SVG.pm (1108)
2018.07.18 22:30:04 1:     main::SVG_showLog                   called by ./FHEM/01_FHEMWEB.pm (884)
2018.07.18 22:30:04 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (538)
2018.07.18 22:30:04 1:     main::FW_Read                       called by fhem.pl (3584)
2018.07.18 22:30:04 1:     main::CallFn                        called by fhem.pl (723)


Wie bekomme ich heraus, welche Datei hierfür verantwortlich ist? Eine Datei 92_FileLog.pm gibt es bei mir nicht.

VG
tfhem
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: nils_ am 19 Juli 2018, 09:34:03
Zitat von: tfhem am 18 Juli 2018, 22:35:00
Wie bekomme ich heraus, welche Datei hierfür verantwortlich ist? Eine Datei 92_FileLog.pm gibt es bei mir nicht.
das kann ich nicht glauben.... und du solltest es nochmal wirklich kontrollieren!!



sieht für mich nach einem SVG problem aus, bzw. die Daten die er zusammenbauen will
eval: 100-$fld[3]
und da wird vermutlich $fld[3] -> normal sein, und das kann er nicht rechnen.
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: betateilchen am 19 Juli 2018, 10:20:34
Zitat von: nils_ am 19 Juli 2018, 09:34:03
und da wird vermutlich $fld[3] -> normal sein, und das kann er nicht rechnen.

numerische Operationen mit Texten sind immer schwierig  8)
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: nils_ am 19 Juli 2018, 10:48:07
Zitat von: betateilchen am 19 Juli 2018, 10:20:34
numerische Operationen mit Texten sind immer schwierig  8)
:P :P :P


"eins" + "drei" = "acht"
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: betateilchen am 19 Juli 2018, 16:51:23
Zitat von: nils_ am 19 Juli 2018, 10:48:07
"eins" + "drei" = "acht"

Und "Polizist" + 3 = 11, weil ein Polizist ja immer acht gibt...
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: tfhem am 19 Juli 2018, 21:06:45
 ::) Das war wohl  gestern zu spät für mich. Wenn man im richtigen Ordner schaut, gibt es die Datei natürlich. Aber wie komme ich nun dahinter, was den Fehler verursacht?

Folgendes steht in dem Abschnitt der Datei, der zu Zeile 813 gehört.


RESCAN:
  for(;;) {
    my $l;

    if($rescan) {
      last if($rescanIdx<1 || !$rescanNum);
      $l = $rescanArr[$rescanIdx--];
    } else {
      $l = <$ifh> if($ifh);
      last if(!$l);
      if($reformatFn) { no strict; $l = &$reformatFn($l); use strict; }
    }

    next if($l lt $from && !$rescan);
    last if($l gt $to);
    my @fld = split("[ \r\n]+", $l);     # 40% CPU

    for my $i (0..int(@a)-1) {           # Process each req. field
      my $h = $d[$i];
      next if($rescan && $h->{ret});
      my @missingvals;
      next if($h->{re} && $l !~ m/$h->{re}/);      # 20% CPU

      my $col = $h->{col};
      my $t = $h->{type};

      my $val = undef;
      my $dte = $fld[0];

      if($t == 0) {                         # Fixed text
        $val = $col;

      } elsif($t == 1) {                    # The column
        $val = $fld[$col] if(defined($fld[$col]));

      } elsif($t == 2) {                    # delta-h  or delta-d

        next if($rescan);

        my $hd = $h->{didx};                # TimeStamp-Length
        my $ld = substr($fld[0],0,$hd);     # TimeStamp-Part (hour or date)
        if(!defined($h->{last1}) || $h->{last3} ne $ld) {
          if(defined($h->{last1})) {
            my @lda = split("[_:]", $lastdate{$hd});
            my $ts = "12:00:00";            # middle timestamp
            $ts = "$lda[1]:30:00" if($hd == 13);
            my $v = $fld[$col]-$h->{last1};
#            $v = 0 if($v < 0);              # Skip negative delta (why?)
            $dte = "$lda[0]_$ts";
            $val = sprintf("%g", $v);
            if($hd == 13) {                 # Generate missing 0 values / hour
              my @cda = split("[_:]", $ld);
              for(my $mi = $lda[1]+1; $mi < $cda[1]; $mi++) {
                push @missingvals, sprintf("%s_%02d:30:00 0\n", $lda[0], $mi);
              }
            }
          }
          $h->{last1} = $fld[$col];
          $h->{last3} = $ld;
        }
        $h->{last2} = $fld[$col];
        $lastdate{$hd} = $fld[0];

      } elsif($t == 3) {                    # int function
        $val = $1 if($fld[$col] =~ m/^(\d+).*/o);

      } else {                              # evaluate
        $cmdFromAnalyze = $h->{fn};
        $val = eval($cmdFromAnalyze)
        $cmdFromAnalyze = undef;

      }


Zeile 813 ist  $val = eval($cmdFromAnalyze)   

Oder sollte ich besser die ganze Datei hier einfügen?
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: betateilchen am 19 Juli 2018, 21:14:01
Das Problem ist nicht das FileLog.

Die Ursache für Deine perl Warnung ist Dein Versuch, einen Reading-Wert, der ein Text ist ("normal") zum Rechnen (100 - "normal") zu verwenden. Das ganze passiert beim Erzeugen des SVG plots.

Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: tfhem am 19 Juli 2018, 21:31:21
Dann wird es wohl an diesem liegen?

Nur, was muss ich da ändern um den Fehler zu vermeiden? Ich meine der Plot wurde automatisch angelegt.
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: betateilchen am 19 Juli 2018, 21:37:14
Zitat von: tfhem am 19 Juli 2018, 21:31:21
Dann wird es wohl an diesem liegen?

Glaube ich nicht, da wird mit dem Reading "position" gerechnet, und da stehen numerische Werte drin.
Das "normal" steht aber in positionMode und das kommt in dem von Dir gezeigten Plot nicht vor.

Zitat von: tfhem am 19 Juli 2018, 21:31:21
Nur, was muss ich da ändern um den Fehler zu vermeiden? Ich meine der Plot wurde automatisch angelegt.

Das glaube ich auch nicht.
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: tfhem am 19 Juli 2018, 21:52:55
Ich dachte der wäre es, weil er in der Nach so seltsame Werte anzeigt.

Es gibt nur zwei weitere Plots. Ist es einer von diesen?
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: tfhem am 21 Juli 2018, 07:13:05
Es lag wohl doch an dem ersten von mir geposteten Plot. Nachdem ich diesen geloescht hatte, kommen keine Fehlermeldungen mehr. Nur, was war daran falsch?
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: frank am 21 Juli 2018, 08:05:09
wahrscheinlich liegt es nicht nur am ersten svg, sondern an allen.

der eintrag "position" in der spalte regex ist in diesem filelog nicht eindeutig. du suchst eigentlich nach dem string "position:". allerdings matched die regex auch auf "positionMode:".

da in der spalte regex kein doppelpunkt erlaubt ist, setze ersatzweise folgendes ein:
position\x3a

aktuell ist der fehler wahrscheinlich fort, da im angezeigten plotzeitraum kein eintrag "positionMode:" im filelog existiert.
Titel: Antw:PEARL WARNING called by ./FHEM/92_FileLog.pm
Beitrag von: tfhem am 24 Juli 2018, 21:59:40
Auch nach ein paar Tagen der Entfernung des SVGs erfolgt keine Fehlermeldung mehr.