Hauptmenü

PERL WARNING

Begonnen von Riverghost, 09 März 2017, 19:23:11

Vorheriges Thema - Nächstes Thema

Riverghost

Hallo,

seit einiger Zeit bekomme ich solche Einträge im Log:


2017.03.09 05:36:19 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at ./FHEM/31_HUEDevice.pm line 387.


2017.03.08 17:03:44 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/74_AMAD.pm line 180.

2017.03.07 19:01:37 1: PERL WARNING: Use of uninitialized value $FW_CSRF in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 3000.


Sind das Meldungen, die auf die "neue" Syntaxprüfung basieren?

Mir fehlt irgendwie der Hinweis an welcher Stelle in der fhem.cfg das Problem aufgefallen ist. Die Fehlersuche gestaltet sich so sehr mühselig, wenn eigentlich alles Funktioniert.

Gruß
Riverghost

Thorsten Pferdekaemper

Hi,
Wann hast Du Dein letztes update gemacht? Zumindest beim dritten Problem könnte es sein, dass ein update es behebt.
Bei den anderen beiden: Schau mal nach dem angemeckerten coding und stell es hier rein, inklusive ein paar Zeilen darüber und darunter.
Gruß,
   Thorsten
FUIP

Riverghost

Hallo Thorsten,

ich habe gestern noch ein Update gemacht und nach dem Neustart kam gleich wieder folgende Meldung im Log:


2017.03.09 21:21:59 1: PERL WARNING: Use of uninitialized value $FW_CSRF in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 3000.


Das Update hat in diesem Fall offensichtlich nicht geholfen.


Hier das Coding der zwei anderen Meldungen aus dem Log.

Ich weiß nicht genau wie man am besten ein coding mit Zeilennummern hier reinstellt. Daher zuerst die angemeckerte Zeile und dann inkl. ein paar Zeilen darüber und darunter.
(Zeilennummern laut Notepad++)

Für folgende Meldung:

2017.03.09 05:36:19 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at ./FHEM/31_HUEDevice.pm line 387.


Zeile 387:

  $cmd = "off" if($cmd eq "pct" && $value == 0 );



if( $cmd eq "color" ) {
    $value = int(1000000/$value);
    $cmd = 'ct';
  } elsif( $name && $cmd eq "toggle" ) {
    $cmd = ReadingsVal($name,"onoff",1) ? "off" :"on";
  } elsif( $cmd =~ m/^dim(\d+)/ ) {
    $value2 = $value;
    $value = $1;
    $value =   0 if( $value <   0 );
    $value = 100 if( $value > 100 );
    $cmd = 'pct';
  } elsif( !defined($value) && $cmd =~ m/^(\d+)/) {
    $value2 = $value;
    $value = $1;
    $value =   0 if( $value < 0 );
    $value = 254 if( $value > 254 );
    $cmd = 'bri';
  }

  $cmd = "off" if($cmd eq "pct" && $value == 0 );

  if($cmd eq 'on') {
    $obj->{'on'}  = JSON::true;
    # temporary disablea for everything. hast do be disabled for groups.
    # see https://forum.fhem.de/index.php/topic,11020.msg497825.html#msg497825
    #$obj->{'bri'} = 254 if( $name && ReadingsVal($name,"bri","0") eq 0 && AttrVal($name, 'subType', 'dimmer') ne 'switch'  );
    $obj->{'transitiontime'} = $value * 10 if( defined($value) );

  } elsif($cmd eq 'off') {
    $obj->{'on'}  = JSON::false;
    $obj->{'transitiontime'} = $value * 10 if( defined($value) );

  } elsif($cmd eq "pct") {



Für Meldung:

2017.03.08 17:03:44 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/74_AMAD.pm line 180.


Zeile 180:

    if( $hash->{BRIDGE} or $hash->{TEMPORARY} == 1 ) {



sub AMAD_Undef($$) {

    my ( $hash, $arg ) = @_;
   
    if( $hash->{BRIDGE} or $hash->{TEMPORARY} == 1 ) {
        delete $modules{AMAD}{defptr}{BRIDGE} if( defined($modules{AMAD}{defptr}{BRIDGE}) and $hash->{BRIDGE} );
        TcpServer_Close( $hash );
    }
   
    elsif( $hash->{HOST} ) {

        delete $modules{AMAD}{defptr}{$hash->{HOST}};
        RemoveInternalTimer( $hash );
   
        foreach my $d(sort keys %{$modules{AMAD}{defptr}}) {
            my $hash = $modules{AMAD}{defptr}{$d};
            my $host = $hash->{HOST};

            return if( $host );
            my $name = $hash->{NAME};
            CommandDelete( undef, $name );
        }
    }
   
    return undef;
}



Kann man bei diesen Meldungen davon ausgehen, daß es Fehler in den Modulen sind?

Gruß
Riverghost

Thorsten Pferdekaemper

Zitat von: Riverghost am 10 März 2017, 17:31:41ich habe gestern noch ein Update gemacht und nach dem Neustart kam gleich wieder folgende Meldung im Log:
Mach nochmal ein update. FHEMWEB sieht jetzt wieder anders aus.

Zitat
Für folgende Meldung:

2017.03.09 05:36:19 1: PERL WARNING: Argument "off" isn't numeric in numeric eq (==) at ./FHEM/31_HUEDevice.pm line 387.

Das sieht für mich so aus, als ob da irgendwas ein Kommando "set <device> pct off" sendet. Schau mal nach, was Deine ats, notifies, DOIFs etc. so treiben.


Zitat
Für Meldung:

2017.03.08 17:03:44 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/74_AMAD.pm line 180.

Das riecht tatsächlich eher nach einem Problem im Modul. Da würde ich an Deiner Stelle einen Thread im richtigen Bereich aufmachen.
Gruß,
   Thorsten
FUIP

Riverghost

Hallo Thorsten,

Zitat von: Thorsten Pferdekaemper am 10 März 2017, 20:24:57
Das sieht für mich so aus, als ob da irgendwas ein Kommando "set <device> pct off" sendet. Schau mal nach, was Deine ats, notifies, DOIFs etc. so treiben.
Ich habe mal bewusst ein "set <device> pct off" eingegeben und es erscheint die Perl Warnung, aber in Zeile 388.

Zitat von: Thorsten Pferdekaemper am 10 März 2017, 20:24:57
Mach nochmal ein update. FHEMWEB sieht jetzt wieder anders aus.

Noch einem Update von Freitagabend sind bislang keine Fehlermeldungen mehr aufgetaucht. Ich werde das jetzt erst einmal beobachten und ggf. im entsprechenden Forum posten.

Vielen Dank Thosten!

Gruß
Riverghost

Thorsten Pferdekaemper

Zitat von: Riverghost am 12 März 2017, 15:30:11
Ich habe mal bewusst ein "set <device> pct off" eingegeben und es erscheint die Perl Warnung, aber in Zeile 388.
Na und? Da hat sich halt durch das Update was geändert. Bei mir ist die entsprechende Zeile auch 388 und nicht 387.
Gruß,
    Thorsten
FUIP