FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Fixel2012 am 30 November 2017, 02:58:21

Titel: Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Fixel2012 am 30 November 2017, 02:58:21
Hi,

habe seit Monaten ein Perl Warning bezüglich eines DOIF's. Habe es selber nicht lösen können. Wahrscheinlich ist es etwas ganz banales.


2017.11.29 18:32:14 1: PERL WARNING: Argument "" isn't numeric in numeric eq (==) at (eval 973) line 1.
2017.11.29 18:32:14 3: eval: Abfall_Benachrichtungen: warning in condition c01
2017.11.29 18:32:14 1: stacktrace:
2017.11.29 18:32:14 1:     main::__ANON__                      called by (eval 973) (1)
2017.11.29 18:32:14 1:     (eval)                              called by ./FHEM/98_DOIF.pm (1341)
2017.11.29 18:32:14 1:     main::DOIF_CheckCond                called by ./FHEM/98_DOIF.pm (1615)
2017.11.29 18:32:14 1:     main::DOIF_Trigger                  called by ./FHEM/98_DOIF.pm (1736)
2017.11.29 18:32:14 1:     main::DOIF_Notify                   called by fhem.pl (3498)
2017.11.29 18:32:14 1:     main::CallFn                        called by fhem.pl (3418)
2017.11.29 18:32:14 1:     main::DoTrigger                     called by fhem.pl (4392)
2017.11.29 18:32:14 1:     main::readingsEndUpdate             called by FHEM/ABFALL_setUpdate.pm (220)
2017.11.29 18:32:14 1:     main::ABFALL_setUpdate              called by fhem.pl (3077)
2017.11.29 18:32:14 1:     main::HandleTimeout                 called by fhem.pl (628)


Hier ein etwas abgeschnittenes list(Stadt und Straße abgeschnitten):

Internals:
   DEF        ([AbfallcalenderModul:next_days:d] == 1 and [15:00]) (set teleBot message @#FhemGruppe Morgen wird [AbfallcalenderModul:next_text] abgeholt) DOELSEIF ([AbfallcalenderModul:now_text] ne "" and [06:00]) (set teleBot message @#FhemGruppe Heute wird [AbfallcalenderModul:now_text] abgeholt)
   NAME       Abfall_Benachrichtungen
   NR         227
   NTFY_ORDER 50-Abfall_Benachrichtungen
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-11-30 00:32:18   Device          AbfallcalenderModul
     2017-11-29 15:00:00   cmd             1
     2017-11-29 15:00:00   cmd_event       timer_1
     2017-11-29 15:00:00   cmd_nr          1
     2017-11-30 00:32:18   e_AbfallcalenderModul_next_days 4
     2017-11-30 00:32:18   e_AbfallcalenderModul_now_text Hausmüll
     2017-11-29 15:00:00   state           cmd_1
     2017-11-29 18:32:08   timer_01_c01    30.11.2017 15:00:00
     2017-11-29 18:32:08   timer_02_c02    30.11.2017 06:00:00
   condition:
     0          ReadingValDoIf($hash,'AbfallcalenderModul','next_days','','d') == 1 and DOIF_time_once($hash,0,$wday)
     1          ReadingValDoIf($hash,'AbfallcalenderModul','now_text') ne "" and DOIF_time_once($hash,1,$wday)
   days:
   devices:
     0           AbfallcalenderModul
     1           AbfallcalenderModul
     all         AbfallcalenderModul
   do:
     0:
       0          set teleBot message @#FhemGruppe Morgen wird [AbfallcalenderModul:next_text] abgeholt
     1:
       0          set teleBot message @#FhemGruppe Heute wird [AbfallcalenderModul:now_text] abgeholt
     2:


Hat jemand eine Idee was an der ersten Bedingung(c01) dieses Problem auslesen könnte?

Würde mich echt freuen, dieses Warning aus dem Log zu haben  ;D
Danke und Gruß,

Fixel
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Brockmann am 30 November 2017, 08:21:43
Ich würde mal tippen, dass das Reading next_days beim Systemstart noch nicht vorhanden ist. Dann solltest Du einen Ersatzwert dafür angeben.
https://fhem.de/commandref_DE.html#DOIF_notexist
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: nils_ am 30 November 2017, 09:20:31
was machst du denn beim systemstart?

irgendwas triggert deinen Kalender und damit dein DOIF
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Damian am 30 November 2017, 09:30:10
Zitat von: Brockmann am 30 November 2017, 08:21:43
Ich würde mal tippen, dass das Reading next_days beim Systemstart noch nicht vorhanden ist. Dann solltest Du einen Ersatzwert dafür angeben.
https://fhem.de/commandref_DE.html#DOIF_notexist

Das wird das Problem sein.

Weitere Möglichkeiten sind:

attr  checkReadingEvent

oder

[AbfallcalenderModul:next_days:d,0] == 1

oder

[AbfallcalenderModul:next_days:d] eq "1"

Es gibt beliebig viele Möglichkeiten ;)
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Fixel2012 am 30 November 2017, 11:24:53
Super, Danke euch.

Habe mich mal für notExists entschieden  :D

Aber warum das DOIF am start von Fhem getriggert wird verstehe ich nicht...  :o
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Damian am 30 November 2017, 11:27:25
Zitat von: Fixel2012 am 30 November 2017, 11:24:53
Super, Danke euch.

Habe mich mal für notExists entschieden  :D

Aber warum das DOIF am start von Fhem getriggert wird verstehe ich nicht...  :o

Weil sich irgendein Reading  von AbfallcalenderModul ändert.
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Fixel2012 am 30 November 2017, 11:29:19
Aber dann sollte doch nur getriggert werden, wenn auch die Uhrzeit gleich ist, wie in der Bedienung gegeben?

([AbfallcalenderModul:next_days:d] == 1 and [15:00])
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Damian am 30 November 2017, 11:31:02
Zitat von: Fixel2012 am 30 November 2017, 11:29:19
Aber dann sollte doch nur getriggert werden, wenn auch die Uhrzeit gleich ist, wie in der Bedienung gegeben?

([AbfallcalenderModul:next_days:d] == 1 and [15:00])

Der Trigger kommt nicht nur vom Timer sondern auch vom Device. Wenn du de Device nur abfragen möchtest, dann solltest du den Trigger mit Fragezeichen unterbinden:

([?AbfallcalenderModul:next_days:d] == 1 and [15:00])
Titel: Antw:Perl Warning bei Systemstart (isn't numeric in numeric eq (==) )
Beitrag von: Fixel2012 am 30 November 2017, 11:33:29
Danke dir! Das Fragezeichen hatte ich schon mal genutzt, aber anscheinend wieder vergessen was es bedeutet und wofür es gut ist  ;D