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
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
was machst du denn beim systemstart?
irgendwas triggert deinen Kalender und damit dein DOIF
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 ;)
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
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.
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])
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])
Danke dir! Das Fragezeichen hatte ich schon mal genutzt, aber anscheinend wieder vergessen was es bedeutet und wofür es gut ist ;D