FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: walter56 am 19 März 2017, 17:33:34

Titel: PERL WARNING: Useless use of private variable in void context at
Beitrag von: walter56 am 19 März 2017, 17:33:34
Hallo zusammen :)
Ich versuche zur Zeit Fehler und Warnungen im System Log zu beseitigen. Dabei ist aber eine Warnung sehr hartnäckig :(. Die Warnung tritt insgesamt 208 mal auf :-[. Ich kann aber nur feststellen, dass es in einem readingsGroup passiert. Alle anderen Fehler und Warnungen habe ich beseitigt. Vielleicht kann mir jemand einen Tipp geben oder  vielleicht mache ich auch irgend etwas falsch. Ich habe auch keine Ahnung an welcher Stelle in der FHEM.cfg der Fehler auftritt.


2017.03.19 15:01:58 1: PERL WARNING: Useless use of private variable in void context at (eval 4334) line 1.
2017.03.19 15:01:58 1: stacktrace:
2017.03.19 15:01:58 1:     main::__ANON__                      called by (eval 4334) (1)
2017.03.19 15:01:58 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (343)
2017.03.19 15:01:58 1:     main::lookup2                       called by ./FHEM/33_readingsGroup.pm (526)
2017.03.19 15:01:58 1:     main::readingsGroup_value2html      called by ./FHEM/33_readingsGroup.pm (1066)
2017.03.19 15:01:58 1:     main::readingsGroup_2html           called by ./FHEM/33_readingsGroup.pm (1165)
2017.03.19 15:01:58 1:     main::readingsGroup_detailFn        called by ./FHEM/01_FHEMWEB.pm (3014)
2017.03.19 15:01:58 1:     main::FW_devState                   called by ./FHEM/01_FHEMWEB.pm (1672)
2017.03.19 15:01:58 1:     main::FW_makeDeviceLine             called by ./FHEM/01_FHEMWEB.pm (1807)
2017.03.19 15:01:58 1:     main::FW_showRoom                   called by ./FHEM/01_FHEMWEB.pm (1043)
2017.03.19 15:01:58 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (535)
2017.03.19 15:01:58 1:     main::FW_Read                       called by fhem.pl (3314)
2017.03.19 15:01:58 1:     main::CallFn                        called by fhem.pl (676)
2017.03.19 15:01:58 1: PERL WARNING: Useless use of private variable in void context at (eval 4336) line 1.
2017.03.19 15:01:58 1: stacktrace:
2017.03.19 15:01:58 1:     main::__ANON__                      called by (eval 4336) (1)
2017.03.19 15:01:58 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (343)
2017.03.19 15:01:58 1:     main::lookup2                       called by ./FHEM/33_readingsGroup.pm (526)
2017.03.19 15:01:58 1:     main::readingsGroup_value2html      called by ./FHEM/33_readingsGroup.pm (1066)
2017.03.19 15:01:58 1:     main::readingsGroup_2html           called by ./FHEM/33_readingsGroup.pm (1165)
2017.03.19 15:01:58 1:     main::readingsGroup_detailFn        called by ./FHEM/01_FHEMWEB.pm (3014)
2017.03.19 15:01:58 1:     main::FW_devState                   called by ./FHEM/01_FHEMWEB.pm (1672)
2017.03.19 15:01:58 1:     main::FW_makeDeviceLine             called by ./FHEM/01_FHEMWEB.pm (1807)
2017.03.19 15:01:58 1:     main::FW_showRoom                   called by ./FHEM/01_FHEMWEB.pm (1043)
2017.03.19 15:01:58 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (535)
2017.03.19 15:01:58 1:     main::FW_Read                       called by fhem.pl (3314)
2017.03.19 15:01:58 1:     main::CallFn                        called by fhem.pl (676)
2017.03.19 15:01:58 1: PERL WARNING: Useless use of private variable in void context at (eval 4338) line 1.
2017.03.19 15:01:58 1: stacktrace:
2017.03.19 15:01:58 1:     main::__ANON__                      called by (eval 4338) (1)
2017.03.19 15:01:58 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (343)
2017.03.19 15:01:58 1:     main::lookup2                       called by ./FHEM/33_readingsGroup.pm (526)
2017.03.19 15:01:58 1:     main::readingsGroup_value2html      called by ./FHEM/33_readingsGroup.pm (1066)
2017.03.19 15:01:58 1:     main::readingsGroup_2html           called by ./FHEM/33_readingsGroup.pm (1165)
2017.03.19 15:01:58 1:     main::readingsGroup_detailFn        called by ./FHEM/01_FHEMWEB.pm (3014)
2017.03.19 15:01:58 1:     main::FW_devState                   called by ./FHEM/01_FHEMWEB.pm (1672)
2017.03.19 15:01:58 1:     main::FW_makeDeviceLine             called by ./FHEM/01_FHEMWEB.pm (1807)
2017.03.19 15:01:58 1:     main::FW_showRoom                   called by ./FHEM/01_FHEMWEB.pm (1043)
2017.03.19 15:01:58 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (535)
2017.03.19 15:01:58 1:     main::FW_Read                       called by fhem.pl (3314)
2017.03.19 15:01:58 1:     main::CallFn                        called by fhem.pl (676)




  :) Vielen Dank schon mal im vorraus und noch einen schönen Sonntag!
Gruß Walter
Titel: Antw:PERL WARNING: Useless use of private variable in void context at
Beitrag von: viegener am 19 März 2017, 17:48:40
Hast Du soviele Readingsroups, dass Du sie nicht zeitweise deaktivieren kannst?

Ansonsten kannst Du durch Anzeige der Readingsgroups in FHEMWeb doch vielleicht einschränken welche Readingsgroup es ist

Oder gar beides?
Titel: Antw:PERL WARNING: Useless use of private variable in void context at
Beitrag von: walter56 am 19 März 2017, 22:25:25
Hallo
Danke erst mal für Deine Antwort. :) Ich habe nicht so viele ReadingsGroups es sind ca. 33 define. Da aber manche define öffters zum tragen kommen sind es so viele Warnungen. Natürlich kann ich die Readings deaktivieren, nur verstehe nich noch nicht was es mir bringen soll. :-\ Wie soll ich dadurch den Fehler finden?

Ich habe mal ein typisches ReadingsGroup deaktiviert, in dem ich alle HomeMatic Batterien teste. Wenn ein Sensor niedriegen Batteriestatus meldet wird eine Anzeige und Sound ausgegeben.
Zur Zeit meldet ein Sensor niedrigen Batteriestatus und die Meldung wurde angezeigt und auch per Sprache angesagt! :)


define Anz_BatterieStatus readingsGroup < <b>Batteriesensor</b>>,< <b>Batteriestatus</b>> TYPE=CUL_HM.*:([B|b]attery)
attr Anz_BatterieStatus alias Batteriestatus
attr Anz_BatterieStatus mapping %ALIAS
attr Anz_BatterieStatus nameStyle style="color:black"
attr Anz_BatterieStatus noheading 1
attr Anz_BatterieStatus nolinks 1
attr Anz_BatterieStatus room Monitoring
attr Anz_BatterieStatus valueFormat {\
  BatterieEvent ($DEVICE);; \
  return "0"   if( $VALUE eq "low" );;\
  return undef if( $VALUE eq "ok" );;\
  return "25"  if( $VALUE < 2.1 );;\
  return "50"  if( $VALUE < 2.3 );;\
  return "75"  if( $VALUE < 2.5 );;\
  return undef\
}
attr Anz_BatterieStatus valueIcon {\
  'battery.0'        => 'measure_battery_0@red',\
  'battery.100'      => 'measure_battery_100@green',\
  'Battery.0'        => 'measure_battery_0@red',\
  'Battery.100'      => 'measure_battery_100@green',\
  'batteryLevel.0'   => 'measure_battery_0@red',\
  'batteryLevel.25'  => 'measure_battery_25@red',\
  'batteryLevel.50'  => 'measure_battery_50@orange',\
  'batteryLevel.75'  => 'measure_battery_75@green',\
  'batteryLevel.100' => 'measure_battery_100@green'\
}
attr Anz_BatterieStatus valuePrefix &nbsp&nbsp&nbsp


und schon sind die Anzahl der Fehler um deutlich gefallen ;). Übrigens das  BatterieEvent ($DEVICE) dient zur Soundausgabe ("Sensor xyz meldet niedrigen Batteriestatus").
Ich kann aber in dem Code keine Fehler finden und es funktioniert ja auch.
Vielleicht findet jemand einen Fehler.

Gruß Walter  :)


Titel: Antw:PERL WARNING: Useless use of private variable in void context at
Beitrag von: viegener am 19 März 2017, 23:06:07
Du hast ja schon gemerkt, warum das deaktivieren etwas bringt, denn der Fehler tritt ja weniger oft auf. Das war die Idee zu wissen wo er auftritt.

Ohne den Code der zugehörigen Routinen kann ich nur Google (oder perl-bücher) empfehlen ;)

Die Begründung es funktioniert ja hilft da nicht, denn das ist bei einer Warnung relativ normal...