...ich hab in der myUtils eine Routine für einen Bewegungsmelder.....
##########################################################
sub
prg_MC_Bewegungsmelder_Dach()
{
Log 3, "MansCave Bewegungsmelder DACH meldet Bewegung";
if(Value("Bewegungsmelder_Dach_reset")) {fhem ("delete Bewegungsmelder_Dach_reset")};
Log 3, "Testpoint A";
fhem ("define Bewegungsmelder_Dach_reset at +00:05:00 {prg_Clear_Bewegungsmelder_Dach_Display}");
Log 3, "Testpoint B";
fhem ("attr Bewegungsmelder_Dach_reset room MansCave");
...
der seit dem letzten Update diese Einträge im Logfile erzeugt:
2014.07.22 14:10:54 3: MansCave Bewegungsmelder DACH meldet Bewegung
Use of uninitialized value $VALUE in numeric eq (==) at (eval 7676) line 1.
2014.07.22 14:10:54 3: Testpoint A
Use of uninitialized value $VALUE in numeric eq (==) at (eval 7680) line 1.
2014.07.22 14:10:54 3: Testpoint B
Hat irgend jemand ne Idee, was ich falsch mache?
VG
Ralf
Du solltest uns Dein gesamtes Coding zeigen, und beschreiben, was Du tun willst. Der abgebildete Schnipsel reicht nicht.
Was soll das sein? if(Value("Bewegungsmelder_Dach_reset"))
Was ist das? "prg_Clear_Bewegungsmelder_Dach_Display" (Da kommt vermutlich auch eine der Warnmeldungen her)
Und irgendwie werden Werte, in denen nix drinsteht verglichen.
Danke dir für die Antwort... auch wenn ich die nicht ganz verstehe... ;)
Die erste Routine wird aufgerufen, wenn ein Bewegungsmelder sich meldet.
Dann wird ein "at" definiert, das nach 5 Minuten diese Meldung löscht.
Wenn in den letzten 5 Minuten zuvor schon eine Meldung aufgefangen wurde, wird dieses "at" erst mal gelöscht, wenn es existiert.
Dies hat in der Vergangenheit auch immer zuverlässig funktioniert. Ich glaube sogar ich hätte das mal so von Rudi bekommen oder abgeschaut.
##########################################################
sub
prg_MC_Bewegungsmelder_Dach()
{
Log 3, "MansCave Bewegungsmelder DACH meldet Bewegung";
if(Value("Bewegungsmelder_Dach_reset")) {fhem ("delete Bewegungsmelder_Dach_reset")};
Log 3, "Testpoint A";
fhem ("define Bewegungsmelder_Dach_reset at +00:05:00 {prg_Clear_Bewegungsmelder_Dach_Display}");
Log 3, "Testpoint B";
fhem ("attr Bewegungsmelder_Dach_reset room MansCave");
if (ReadingsVal("MansCave_AlarmMode","state","") eq "scharf" && !isday()) {
Log 1,"ALARM: Bewegungsmelder Halle DACH!!!";
fhem("set MansCave_.*licht on-for-timer 180");
fb_mail('ralf.xxx@xxx.com','fhem:MansCave','ALARM Bewegungsmelder Halle DACH!')
};
prg_DispUpdate();
}
#
Das Programm, welches durch das at aufgerufen wird, löscht einfach zwei LEDs und einen Dummy.
#
sub
prg_Clear_Bewegungsmelder_Dach_Display()
{
fhem("set MansCave_Bewegungsmelder_Dach off");
fhem("set D1LED11,D2LED11 led off");
prg_DispUpdate();
}
#
...noch jemand ne Idee? Ich vermute aktuell einen Bug in der fhem.pl ... anders kann ich es mir nicht erklären... :-)
Hallo Hallo :)
Seit einigen Tagen bekomme ich im Log auch diese Meldungen:
2015.03.16 17:15:49 1: PERL WARNING: Use of uninitialized value $VALUE in numeric eq (==) at (eval 16612) line 1.
2015.03.16 17:15:49 3: eval: {
my $T_aussen = (ReadingsVal("Sens_TF_Aussen", "temperature", "6.0"));
my $T_innen = (ReadingsVal("Sens_TF_Wohnz_UG", "temperature", "16.0"));
if (($T_aussen <= 15.0) and OldValue("Fenster_Status") eq "Closed") {
fhem("define Lueft_beend_A at +00:03:00 trigger Func_Fenster_Pruef_zu_N");
}
}
Das Log liefert netterweise auch gleich den "fehlerhaften" Code mit. Der Code funktioniert so seit Jahren perfekt. Mein global verbose steht wie immer auf 3. Ich sehe diese Meldungen (kommen auch zu anderen, ähnlichen und ebenfalls funktionierenden Codes) zum ersten Mal. Habe ich vielleicht wirklich noch Syntaxfehler drin, oder kann das ein Bug sein?
Der Code steht in der CFG und sieht komplett so aus:
# Erinnerung Lüften beenden:
# wenn Fenster offen, starte Erinnerungsfunktion:
define Func_Fenst_Lueft_beend_N notify Fenster_Status:Open.* { \
\
my $T_aussen = (ReadingsVal("Sens_TF_Aussen", "temperature", "6.0"));;\
my $T_innen = (ReadingsVal("Sens_TF_Wohnz_UG", "temperature", "16.0"));;\
\
if (($T_aussen <= 15.0) and OldValue("Fenster_Status") eq "Closed") {\
fhem("define Lueft_beend_A at +00:03:00 trigger Func_Fenster_Pruef_zu_N");;\
} \
}
Vielen Dank
Sagt Frank ;)
Zuviele Klammern, wo keine hingehören und dort, wo sie Sinn machen würden, fehlen sie..
my $T_aussen = ReadingsVal("Sens_TF_Aussen", "temperature", "6.0");
my $T_innen = ReadingsVal("Sens_TF_Wohnz_UG", "temperature", "16.0");
if (($T_aussen <= 15.0) and (OldValue("Fenster_Status") eq "Closed")) {
fhem("define Lueft_beend_A at +00:03:00 trigger Func_Fenster_Pruef_zu_N");
}
}
Vielen Dank betateilchen!
Habs gleich mal so eingebaut und werde meinen restlichen Code auch noch berichtigen. Leider wird trotzdem gemeckert:
2015.03.16 19:16:50 1: PERL WARNING: Use of uninitialized value $VALUE in numeric eq (==) at (eval 18227) line 1.
2015.03.16 19:16:50 3: eval: {
my $T_aussen = ReadingsVal("Sens_TF_Aussen", "temperature", "6.0");
my $T_innen = ReadingsVal("Sens_TF_Wohnz_UG", "temperature", "16.0");
if (($T_aussen <= 15.0) and (OldValue("Fenster_Status") eq "Closed")) {
fhem("define Lueft_beend_A at +00:03:00 trigger Func_Fenster_Pruef_zu_N");
}
}
2015.03.16 19:16:50 3: Fenster_Bad_OG: Window Open
Dolles Ding... Klingt auch igendwie unlogisch: Der eq- Vergleich ist ja nicht numerisch und ich habe deshalb auch nicht " == " verwendet. Und wenn ich die Variable {OldValue("Fenster_Status")} in die Eingabezeile eingebe, kommt auch ein richtiger Wert zurück.
Mach doch mal stacktrace an, vielleicht bekommt man dann mehr brauchbare Infos. Es geht nicht um den eq Vergleich...
Ausserdem macht es in Deinen ReadingsVal() keinen Sinn, einen alphanumerischen Wert als default zu definieren, wenn Du $T_aussen anschliessend numerisch vergleichst.
Ach ja, das ist mir auch noch nicht aufgefallen. Durch die "" wird der Zahlenwert ja zum String. Danke!
Hier mal der stacktrace:
2015.03.16 19:44:03 3: eval: {
my $T_aussen = ReadingsVal("Sens_TF_Aussen", "temperature", "6.0");
my $T_innen = ReadingsVal("Sens_TF_Wohnz_UG", "temperature", "16.0");
if (($T_aussen <= 15.0) and (OldValue("Fenster_Status") eq "Closed")) {
fhem("define Lueft_beend_A at +00:03:00 trigger Func_Fenster_Pruef_zu_N");
}
}
2015.03.16 19:44:03 3: stacktrace:
2015.03.16 19:44:03 3: main::__ANON__ called by (eval 18636) (1)
2015.03.16 19:44:03 3: (eval) called by ./FHEM/33_readingsProxy.pm (116)
2015.03.16 19:44:03 3: main::readingsProxy_update called by ./FHEM/33_readingsProxy.pm (72)
2015.03.16 19:44:03 3: main::readingsProxy_updateDevices called by ./FHEM/33_readingsProxy.pm (152)
2015.03.16 19:44:03 3: main::readingsProxy_Notify called by fhem.pl (2963)
2015.03.16 19:44:03 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:44:03 3: main::DoTrigger called by fhem.pl (1617)
2015.03.16 19:44:03 3: main::CommandDefine called by fhem.pl (995)
2015.03.16 19:44:03 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:44:03 3: main::AnalyzeCommandChain called by fhem.pl (2975)
2015.03.16 19:44:03 3: main::fhem called by (eval 18635) (6)
2015.03.16 19:44:03 3: (eval) called by fhem.pl (917)
2015.03.16 19:44:03 3: main::AnalyzePerlCommand called by fhem.pl (936)
2015.03.16 19:44:03 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:44:03 3: main::AnalyzeCommandChain called by ./FHEM/91_notify.pm (92)
2015.03.16 19:44:03 3: main::notify_Exec called by fhem.pl (2963)
2015.03.16 19:44:03 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:44:03 3: main::DoTrigger called by fhem.pl (3650)
2015.03.16 19:44:03 3: main::readingsEndUpdate called by fhem.pl (3802)
2015.03.16 19:44:03 3: main::readingsSingleUpdate called by ./FHEM/98_dummy.pm (32)
2015.03.16 19:44:03 3: main::dummy_Set called by fhem.pl (2958)
2015.03.16 19:44:03 3: main::CallFn called by fhem.pl (1457)
2015.03.16 19:44:03 3: main::DoSet called by fhem.pl (1487)
2015.03.16 19:44:03 3: main::CommandSet called by fhem.pl (995)
2015.03.16 19:44:03 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:44:03 3: main::AnalyzeCommandChain called by fhem.pl (2975)
2015.03.16 19:44:03 3: main::fhem called by ./FHEM/99_myUtils.pm (278)
2015.03.16 19:44:03 3: main::FHTTK_status called by (eval 18634) (6)
2015.03.16 19:44:03 3: (eval) called by fhem.pl (917)
2015.03.16 19:44:03 3: main::AnalyzePerlCommand called by fhem.pl (936)
2015.03.16 19:44:03 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:44:03 3: main::AnalyzeCommandChain called by ./FHEM/91_notify.pm (92)
2015.03.16 19:44:03 3: main::notify_Exec called by fhem.pl (2963)
2015.03.16 19:44:03 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:44:03 3: main::DoTrigger called by fhem.pl (3180)
2015.03.16 19:44:03 3: main::Dispatch called by ./FHEM/00_CUL.pm (917)
2015.03.16 19:44:03 3: main::CUL_Parse called by ./FHEM/00_CUL.pm (782)
2015.03.16 19:44:03 3: main::CUL_Read called by fhem.pl (2963)
2015.03.16 19:44:03 3: main::CallFn called by fhem.pl (607)
2015.03.16 19:44:03 3: Fenster_Bad_OG: Window Open
siehst Du, was ich sehe? Das Problem kommt überhaupt nicht aus Deinem notify, sondern aus readingsProxy :)
Hab mich auch schon gewundert, denn das benutze ich ja hier nicht. Noch ein paar Meldungen die hinterher kamen:
2015.03.16 19:47:04 1: PERL WARNING: Use of uninitialized value $VALUE in numeric eq (==) at (eval 18669) line 1.
2015.03.16 19:47:04 3: stacktrace:
2015.03.16 19:47:04 3: main::__ANON__ called by (eval 18669) (1)
2015.03.16 19:47:04 3: (eval) called by ./FHEM/33_readingsProxy.pm (116)
2015.03.16 19:47:04 3: main::readingsProxy_update called by ./FHEM/33_readingsProxy.pm (72)
2015.03.16 19:47:04 3: main::readingsProxy_updateDevices called by ./FHEM/33_readingsProxy.pm (152)
2015.03.16 19:47:04 3: main::readingsProxy_Notify called by fhem.pl (2963)
2015.03.16 19:47:04 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:47:04 3: main::DoTrigger called by fhem.pl (1617)
2015.03.16 19:47:04 3: main::CommandDefine called by fhem.pl (995)
2015.03.16 19:47:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:47:04 3: main::AnalyzeCommandChain called by fhem.pl (2975)
2015.03.16 19:47:04 3: main::fhem called by (eval 18667) (11)
2015.03.16 19:47:04 3: (eval) called by fhem.pl (917)
2015.03.16 19:47:04 3: main::AnalyzePerlCommand called by fhem.pl (936)
2015.03.16 19:47:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:47:04 3: main::AnalyzeCommandChain called by ./FHEM/91_notify.pm (92)
2015.03.16 19:47:04 3: main::notify_Exec called by fhem.pl (2963)
2015.03.16 19:47:04 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:47:04 3: main::DoTrigger called by fhem.pl (1467)
2015.03.16 19:47:04 3: main::DoSet called by fhem.pl (1487)
2015.03.16 19:47:04 3: main::CommandSet called by fhem.pl (995)
2015.03.16 19:47:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:47:04 3: main::AnalyzeCommandChain called by fhem.pl (2975)
2015.03.16 19:47:04 3: main::fhem called by (eval 18664) (4)
2015.03.16 19:47:04 3: (eval) called by fhem.pl (917)
2015.03.16 19:47:04 3: main::AnalyzePerlCommand called by fhem.pl (936)
2015.03.16 19:47:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:47:04 3: main::AnalyzeCommandChain called by ./FHEM/91_notify.pm (92)
2015.03.16 19:47:04 3: main::notify_Exec called by fhem.pl (2963)
2015.03.16 19:47:04 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:47:04 3: main::DoTrigger called by fhem.pl (2439)
2015.03.16 19:47:04 3: main::CommandTrigger called by fhem.pl (995)
2015.03.16 19:47:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:47:04 3: main::AnalyzeCommandChain called by ./FHEM/90_at.pm (144)
2015.03.16 19:47:04 3: main::at_Exec called by fhem.pl (2573)
2015.03.16 19:47:04 3: main::HandleTimeout called by fhem.pl (540)
2015.03.16 19:47:05 1: PERL WARNING: Use of uninitialized value $VALUE in numeric eq (==) at (eval 18671) line 1.
2015.03.16 19:47:05 3: stacktrace:
2015.03.16 19:47:05 3: main::__ANON__ called by (eval 18671) (1)
2015.03.16 19:47:05 3: (eval) called by ./FHEM/33_readingsProxy.pm (116)
2015.03.16 19:47:05 3: main::readingsProxy_update called by ./FHEM/33_readingsProxy.pm (72)
2015.03.16 19:47:05 3: main::readingsProxy_updateDevices called by ./FHEM/33_readingsProxy.pm (168)
2015.03.16 19:47:05 3: main::readingsProxy_Notify called by fhem.pl (2963)
2015.03.16 19:47:05 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:47:05 3: main::DoTrigger called by fhem.pl (1745)
2015.03.16 19:47:05 3: main::CommandDelete called by ./FHEM/90_at.pm (165)
2015.03.16 19:47:05 3: main::at_Exec called by fhem.pl (2573)
2015.03.16 19:47:05 3: main::HandleTimeout called by fhem.pl (540)
2015.03.16 19:47:14 1: PERL WARNING: Use of uninitialized value $VALUE in numeric eq (==) at (eval 18678) line 1.
2015.03.16 19:47:14 3: stacktrace:
2015.03.16 19:47:14 3: main::__ANON__ called by (eval 18678) (1)
2015.03.16 19:47:14 3: (eval) called by ./FHEM/33_readingsProxy.pm (116)
2015.03.16 19:47:14 3: main::readingsProxy_update called by ./FHEM/33_readingsProxy.pm (72)
2015.03.16 19:47:14 3: main::readingsProxy_updateDevices called by ./FHEM/33_readingsProxy.pm (168)
2015.03.16 19:47:14 3: main::readingsProxy_Notify called by fhem.pl (2963)
2015.03.16 19:47:14 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:47:14 3: main::DoTrigger called by fhem.pl (1745)
2015.03.16 19:47:14 3: main::CommandDelete called by ./FHEM/90_at.pm (165)
2015.03.16 19:47:14 3: main::at_Exec called by fhem.pl (2573)
2015.03.16 19:47:14 3: main::HandleTimeout called by fhem.pl (540)
2015.03.16 19:49:04 1: PERL WARNING: Use of uninitialized value $VALUE in numeric eq (==) at (eval 18712) line 1.
2015.03.16 19:49:04 3: stacktrace:
2015.03.16 19:49:04 3: main::__ANON__ called by (eval 18712) (1)
2015.03.16 19:49:04 3: (eval) called by ./FHEM/33_readingsProxy.pm (116)
2015.03.16 19:49:04 3: main::readingsProxy_update called by ./FHEM/33_readingsProxy.pm (72)
2015.03.16 19:49:04 3: main::readingsProxy_updateDevices called by ./FHEM/33_readingsProxy.pm (152)
2015.03.16 19:49:04 3: main::readingsProxy_Notify called by fhem.pl (2963)
2015.03.16 19:49:04 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:49:04 3: main::DoTrigger called by fhem.pl (1617)
2015.03.16 19:49:04 3: main::CommandDefine called by fhem.pl (995)
2015.03.16 19:49:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:49:04 3: main::AnalyzeCommandChain called by fhem.pl (2975)
2015.03.16 19:49:04 3: main::fhem called by (eval 18710) (11)
2015.03.16 19:49:04 3: (eval) called by fhem.pl (917)
2015.03.16 19:49:04 3: main::AnalyzePerlCommand called by fhem.pl (936)
2015.03.16 19:49:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:49:04 3: main::AnalyzeCommandChain called by ./FHEM/91_notify.pm (92)
2015.03.16 19:49:04 3: main::notify_Exec called by fhem.pl (2963)
2015.03.16 19:49:04 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:49:04 3: main::DoTrigger called by fhem.pl (1467)
2015.03.16 19:49:04 3: main::DoSet called by fhem.pl (1487)
2015.03.16 19:49:04 3: main::CommandSet called by fhem.pl (995)
2015.03.16 19:49:04 3: main::AnalyzeCommand called by fhem.pl (869)
2015.03.16 19:49:04 3: main::AnalyzeCommandChain called by ./FHEM/90_at.pm (144)
2015.03.16 19:49:04 3: main::at_Exec called by fhem.pl (2573)
2015.03.16 19:49:04 3: main::HandleTimeout called by fhem.pl (540)
2015.03.16 19:49:14 1: PERL WARNING: Use of uninitialized value $VALUE in numeric eq (==) at (eval 18725) line 1.
2015.03.16 19:49:14 3: stacktrace:
2015.03.16 19:49:14 3: main::__ANON__ called by (eval 18725) (1)
2015.03.16 19:49:14 3: (eval) called by ./FHEM/33_readingsProxy.pm (116)
2015.03.16 19:49:14 3: main::readingsProxy_update called by ./FHEM/33_readingsProxy.pm (72)
2015.03.16 19:49:14 3: main::readingsProxy_updateDevices called by ./FHEM/33_readingsProxy.pm (168)
2015.03.16 19:49:14 3: main::readingsProxy_Notify called by fhem.pl (2963)
2015.03.16 19:49:14 3: main::CallFn called by fhem.pl (2886)
2015.03.16 19:49:14 3: main::DoTrigger called by fhem.pl (1745)
2015.03.16 19:49:14 3: main::CommandDelete called by ./FHEM/90_at.pm (165)
2015.03.16 19:49:14 3: main::at_Exec called by fhem.pl (2573)
2015.03.16 19:49:14 3: main::HandleTimeout called by fhem.pl (540)
Dann muss ich vielleicht mal ganz leise Aaaaaaandreeeeeeee rufen... ;)