FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Feinfinger am 10 Februar 2021, 07:43:46

Titel: DOIF PERL WARNING
Beitrag von: Feinfinger am 10 Februar 2021, 07:43:46
Hallo zusammen,

Bekomme seit dem letzten Update folgende PERL Warmings im Log angezeigt.

PERL WARNING: Argument "16:30" isn't numeric in subroutine entry at (eval 132721) line 1.
2021.02.10 07:22:18 1: eval: {max("16:30","17:18:41")}
2021.02.10 07:22:18 1: stacktrace:
2021.02.10 07:22:18 1:     main::__ANON__                      called by (eval 132721) (1)
2021.02.10 07:22:18 1:     (eval)                              called by fhem.pl (1146)
2021.02.10 07:22:18 1:     main::AnalyzePerlCommand            called by fhem.pl (1175)
2021.02.10 07:22:18 1:     main::AnalyzeCommand                called by fhem.pl (3639)
2021.02.10 07:22:18 1:     main::GetTimeSpec                   called by ./FHEM/98_DOIF.pm (2911)
2021.02.10 07:22:18 1:     main::DOIF_DetTime                  called by ./FHEM/98_DOIF.pm (2991)
2021.02.10 07:22:18 1:     main::DOIF_CalcTime                 called by ./FHEM/98_DOIF.pm (3039)
2021.02.10 07:22:18 1:     main::DOIF_SetTimer                 called by ./FHEM/98_DOIF.pm (2685)
2021.02.10 07:22:18 1:     main::DOIF_Notify                   called by fhem.pl (3818)
2021.02.10 07:22:18 1:     main::CallFn                        called by fhem.pl (3735)
2021.02.10 07:22:18 1:     main::DoTrigger                     called by fhem.pl (4820)
2021.02.10 07:22:18 1:     main::readingsEndUpdate             called by ./FHEM/59_Twilight.pm (368)
2021.02.10 07:22:18 1:     FHEM::Twilight::Twilight_HandleWeatherData called by ./FHEM/59_Twilight.pm (240)
2021.02.10 07:22:18 1:     FHEM::Twilight::Twilight_Notify     called by fhem.pl (3818)
2021.02.10 07:22:18 1:     main::CallFn                        called by fhem.pl (3735)
2021.02.10 07:22:18 1:     main::DoTrigger                     called by fhem.pl (4820)
2021.02.10 07:22:18 1:     main::readingsEndUpdate             called by ./FHEM/59_Weather.pm (510)
2021.02.10 07:22:18 1:     main::Weather_WriteReadings         called by ./FHEM/59_Weather.pm (322)
2021.02.10 07:22:18 1:     main::Weather_RetrieveCallbackFn    called by FHEM/DarkSkyAPI.pm (754)
2021.02.10 07:22:18 1:     DarkSkyAPI::Weather::_CallWeatherCallbackFn called by FHEM/DarkSkyAPI.pm (747)
2021.02.10 07:22:18 1:     DarkSkyAPI::Weather::_ProcessingRetrieveData called by FHEM/DarkSkyAPI.pm (298)
2021.02.10 07:22:18 1:     DarkSkyAPI::Weather::_RetrieveDataFinished called by FHEM/HttpUtils.pm (639)


Wenn ich das richtig deute liegt der Fehler darin, das dass Twilight Modul ein Reading erzeugt, was ich im DOIF nutze:

defmod wohnzimmerzimmer_leuchtkugel_di DOIF ([([{max("16:30","[Balve:ss_weather]")}]+int(rand(30)))] and [?16:30-21:45]) (set Gosund2 on) DOELSEIF ([23:00]) (set Gosund2 off)


Hat aber bis jetzt immer so einwandfrei funktioniert.

Wo liegt denn jetzt der Fehler?

Bin für Tipps dankbar
Titel: Antw:DOIF PERL WARNING
Beitrag von: Damian am 10 Februar 2021, 10:34:20
Zitat von: Feinfinger am 10 Februar 2021, 07:43:46
Hallo zusammen,

Bekomme seit dem letzten Update folgende PERL Warmings im Log angezeigt.

PERL WARNING: Argument "16:30" isn't numeric in subroutine entry at (eval 132721) line 1.
2021.02.10 07:22:18 1: eval: {max("16:30","17:18:41")}
2021.02.10 07:22:18 1: stacktrace:
2021.02.10 07:22:18 1:     main::__ANON__                      called by (eval 132721) (1)
2021.02.10 07:22:18 1:     (eval)                              called by fhem.pl (1146)
2021.02.10 07:22:18 1:     main::AnalyzePerlCommand            called by fhem.pl (1175)
2021.02.10 07:22:18 1:     main::AnalyzeCommand                called by fhem.pl (3639)
2021.02.10 07:22:18 1:     main::GetTimeSpec                   called by ./FHEM/98_DOIF.pm (2911)
2021.02.10 07:22:18 1:     main::DOIF_DetTime                  called by ./FHEM/98_DOIF.pm (2991)
2021.02.10 07:22:18 1:     main::DOIF_CalcTime                 called by ./FHEM/98_DOIF.pm (3039)
2021.02.10 07:22:18 1:     main::DOIF_SetTimer                 called by ./FHEM/98_DOIF.pm (2685)
2021.02.10 07:22:18 1:     main::DOIF_Notify                   called by fhem.pl (3818)
2021.02.10 07:22:18 1:     main::CallFn                        called by fhem.pl (3735)
2021.02.10 07:22:18 1:     main::DoTrigger                     called by fhem.pl (4820)
2021.02.10 07:22:18 1:     main::readingsEndUpdate             called by ./FHEM/59_Twilight.pm (368)
2021.02.10 07:22:18 1:     FHEM::Twilight::Twilight_HandleWeatherData called by ./FHEM/59_Twilight.pm (240)
2021.02.10 07:22:18 1:     FHEM::Twilight::Twilight_Notify     called by fhem.pl (3818)
2021.02.10 07:22:18 1:     main::CallFn                        called by fhem.pl (3735)
2021.02.10 07:22:18 1:     main::DoTrigger                     called by fhem.pl (4820)
2021.02.10 07:22:18 1:     main::readingsEndUpdate             called by ./FHEM/59_Weather.pm (510)
2021.02.10 07:22:18 1:     main::Weather_WriteReadings         called by ./FHEM/59_Weather.pm (322)
2021.02.10 07:22:18 1:     main::Weather_RetrieveCallbackFn    called by FHEM/DarkSkyAPI.pm (754)
2021.02.10 07:22:18 1:     DarkSkyAPI::Weather::_CallWeatherCallbackFn called by FHEM/DarkSkyAPI.pm (747)
2021.02.10 07:22:18 1:     DarkSkyAPI::Weather::_ProcessingRetrieveData called by FHEM/DarkSkyAPI.pm (298)
2021.02.10 07:22:18 1:     DarkSkyAPI::Weather::_RetrieveDataFinished called by FHEM/HttpUtils.pm (639)


Wenn ich das richtig deute liegt der Fehler darin, das dass Twilight Modul ein Reading erzeugt, was ich im DOIF nutze:

defmod wohnzimmerzimmer_leuchtkugel_di DOIF ([([{max("16:30","[Balve:ss_weather]")}]+int(rand(30)))] and [?16:30-21:45]) (set Gosund2 on) DOELSEIF ([23:00]) (set Gosund2 off)


Hat aber bis jetzt immer so einwandfrei funktioniert.

Wo liegt denn jetzt der Fehler?

Bin für Tipps dankbar

Hier wird offenbar die max-Routine angemeckert. Diese ist kein Bestandteil von DOIF. Vielleicht hast du dir irgendwo in FHEM eine max-Funktion definiert oder kopiert, die jetzt angezogen wird und numerische Werte erwartet.
Titel: Antw:DOIF PERL WARNING
Beitrag von: Feinfinger am 10 Februar 2021, 12:06:54
Ich habe mehrere DOIF die mit max-Routinen laufen.

Hatte das seinerzeit so verstanden, das ich damit den Zeitbereich einschränke, genauer gesagt, das DOIF soll zum Zeitpunkt des Twilight Readings Trichtern, jedoch frühestens um 16:30 Uhr.

Wie kann man das denn noch lösen im DOIF?
Titel: Antw:DOIF PERL WARNING
Beitrag von: Damian am 10 Februar 2021, 12:22:10
Zitat von: Feinfinger am 10 Februar 2021, 12:06:54
Ich habe mehrere DOIF die mit max-Routinen laufen.

Hatte das seinerzeit so verstanden, das ich damit den Zeitbereich einschränke, genauer gesagt, das DOIF soll zum Zeitpunkt des Twilight Readings Trichtern, jedoch frühestens um 16:30 Uhr.

Wie kann man das denn noch lösen im DOIF?

Wahrscheinlich mit der richtigen max-Funktion.

ZitatPERL WARNING: Argument "16:30" isn't numeric in subroutine entry at (eval 132721) line 1.
2021.02.10 07:22:18 1: eval: {max("16:30","17:18:41")}

bedeutet für mich, dass max "16:30" als String nicht verträgt.