FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: satprofi am 01 Oktober 2024, 09:51:29

Titel: PERL WARNING
Beitrag von: satprofi am 01 Oktober 2024, 09:51:29
Hallo.
Kann man herausfinden bei welchem define da der Fehler ist? "eval xxxxxx" bedeutet was?

PERL WARNING: Argument "" isn't numeric in numeric lt (<) at (eval 8718806) line 1
Titel: Aw: PERL WARNING
Beitrag von: MadMax-FHEM am 01 Oktober 2024, 10:05:40
Bissi mau die gelieferten Infos...

Wie wäre es denn die tatsächlichen WARN-Meldungen zu posten, also eine Kopie aus dem Log, statt "einen Auszug nachzuformulieren"?
Und wenn Logs/WARN/etc. posten, dann besser code-Tags :)

Setz doch mal das Attribut stacktrace bei global auf 1, dann bekommst du mehr Angaben zu dem WARN...

Vermutlich hast du irgendwo einen Vergleich "eingebaut", wo du einen "numerischen Vergleichsoperator" ('< > ==') nutzt, aber eine Zeichenkette vorliegt...

Gruß, Joachim
Titel: Aw: PERL WARNING
Beitrag von: satprofi am 01 Oktober 2024, 11:53:54
Danke für den tipp.
Ok, eines hab ich gefunden, RSS. Aber zweites?
2024.10.01 11:48:43 1: PERL WARNING: Invalid conversion in sprintf: end of string at /opt/fhem/lib/FHEM/HTTPMOD/Utils.pm line 436.
2024.10.01 11:48:43 1: stacktrace:
2024.10.01 11:48:43 1:     main::__ANON__                      called by /opt/fhem/lib/FHEM/HTTPMOD/Utils.pm (436)
2024.10.01 11:48:43 1:     FHEM::HTTPMOD::Utils::FormatVal     called by /opt/fhem/FHEM/98_Modbus.pm (2988)
2024.10.01 11:48:43 1:     Modbus::CreateDataObjects           called by /opt/fhem/FHEM/98_Modbus.pm (3027)
2024.10.01 11:48:43 1:     Modbus::ParseDataString             called by /opt/fhem/FHEM/98_Modbus.pm (2383)
2024.10.01 11:48:43 1:     Modbus::HandleResponse              called by /opt/fhem/FHEM/98_Modbus.pm (2040)
2024.10.01 11:48:43 1:     Modbus::ReadFn                      called by fhem.pl (3985)
2024.10.01 11:48:43 1:     main::CallFn                        called by fhem.pl (786)

2024.10.01 11:49:01 1: PERL WARNING: Argument "" isn't numeric in numeric lt (<) at (eval 8917178) line 1.
2024.10.01 11:49:01 1: eval: {(ReadingsVal('Strompreis_heute','07-08h','')) < (ReadingsVal('Strompreis','Durchschnitt',''))}
2024.10.01 11:49:01 1: stacktrace:
2024.10.01 11:49:01 1:     main::__ANON__                      called by (eval 8917178) (1)
2024.10.01 11:49:01 1:     (eval)                              called by fhem.pl (1177)
2024.10.01 11:49:01 1:     main::AnalyzePerlCommand            called by /opt/fhem/FHEM/02_RSS.pm (593)
2024.10.01 11:49:01 1:     main::RSS_analyzePerl               called by /opt/fhem/FHEM/02_RSS.pm (667)
2024.10.01 11:49:01 1:     main::RSS_evalLayout                called by /opt/fhem/FHEM/02_RSS.pm (1036)
2024.10.01 11:49:01 1:     (eval)                              called by /opt/fhem/FHEM/02_RSS.pm (930)
2024.10.01 11:49:01 1:     main::RSS_returnIMG                 called by /opt/fhem/FHEM/02_RSS.pm (1088)
2024.10.01 11:49:01 1:     main::RSS_CGI                       called by /opt/fhem/FHEM/01_FHEMWEB.pm (1011)
2024.10.01 11:49:01 1:     main::FW_answerCall                 called by /opt/fhem/FHEM/01_FHEMWEB.pm (609)
2024.10.01 11:49:01 1:     main::FW_Read                       called by fhem.pl (3985)
2024.10.01 11:49:01 1:     main::CallFn                        called by fhem.pl (786)
Titel: Aw: PERL WARNING
Beitrag von: betateilchen am 01 Oktober 2024, 12:50:42
Zitat von: satprofi am 01 Oktober 2024, 11:53:54Ok, eines hab ich gefunden, RSS. Aber zweites?

Das zweite kommt aus einem Modbus device. Wenn Du in dem device verbose=5 setzt, bekommst Du einen Logeintrag, der Dir den fehlerhaften Aufruf komplett zeigt.


Übrigens - zurück zu Deinem RSS: wenn man Werte aus readings numerisch auf größer oder kleiner vergleicht, sollte man besser ReadingsNum() verwenden anstatt ReadingsVal(). Daß in Deinem Vergleich einige überflüssige Klammern sind, lasse ich jetzt mal außen vor.