FHEM > Automatisierung

notify Aenderungen

(1/2) > >>

Groby:
Hallo,

das neue notify Modul erzeugt folgenden Fehler:

Global symbol "$EVTPART1" requires explicit package name at (eval 114) line 1.
Global symbol "$EVTPART2" requires explicit package name at (eval 114) line 1.


--- Code: ---
define Mynotify notify * {Log 1, Mynotify: $NAME, $TYPE, $EVENT, $EVTPART0, $EVTPART1, $EVTPART2"}

--- Ende Code ---


Gleicher code mit % liefert:
Mynotify: FS20_ST1, FS20, on-for-timer 10, on-for-timer, 10, %EVTPART2

Gruss, Groby

rudolfkoenig:
1. das * in der notify Zeile ist falsch, vmtl. hast Du .* gemeint. Das " vor Mynotfy fehlt auch. Ist den restlichen Meldungen noch zu trauen?
2. Die Fehlermeldung mit $EVTPART1 sollte nicht fuer "on-for-timer 10" kommen, nur die mit $EVTPART2. Kannst Du das bitte pruefen?
3. Sonst sind die Fehlermeldungen mir bekannt/bewusst und ich finde sie in Ordung, es gibt auch kein $EVTPART2.

Groby:
Hallo Rudi,

zu 3) Sorry. $EVTPART2 habe ich logischer Weise weggelassen. Da kam ich wegen $EVTPART1/usw in der Ankündigung drauf...

zu 2) Stimmt. on-for-timer x funktioniert ohne $EVTPART2 ;)

zu 1) "*" war richtig. Ich habe einfach mal 4 Versionen  von notify angelegt:

--- Code: ---
define notify_test1 notify .* {Log 1, "notify_test1: $NAME, $TYPE, $EVENT, $EVTPART0, $EVTPART1"}
define notify_test2 notify .* {Log 1, "notify_test2: %NAME, %TYPE, %EVENT, %EVTPART0, %EVTPART1"}
define notify_test3 notify * {Log 1, "notify_test3: $NAME, $TYPE, $EVENT, $EVTPART0, $EVTPART1"}
define notify_test4 notify * {Log 1, "notify_test4: %NAME, %TYPE, %EVENT, %EVTPART0, %EVTPART1"}

--- Ende Code ---


cmd line: set z_FS20_ST1 on; set z_FS20_ST1 on-for-timer 10

Log files:
2013.03.26 19:06:46 3: FS20 set z_FS20_ST1 on
2013.03.26 19:06:46 3: notify_test1 return value: Global symbol "$EVTPART1" requires explicit package name at (eval 737) line 1.
2013.03.26 19:06:46 1: notify_test2: z_FS20_ST1, FS20, on, on, %EVTPART1
2013.03.26 19:06:46 3: notify_test3 return value: Global symbol "$EVTPART1" requires explicit package name at (eval 739) line 1.
2013.03.26 19:06:46 1: notify_test4: z_FS20_ST1, FS20, on, on, %EVTPART1
2013.03.26 19:06:46 3: FS20 set z_FS20_ST1 on-for-timer 10
2013.03.26 19:06:46 1: notify_test1: global, Global, DEFINED z_FS20_ST1_timer, DEFINED, z_FS20_ST1_timer
2013.03.26 19:06:46 1: notify_test2: global, Global, DEFINED z_FS20_ST1_timer, DEFINED, z_FS20_ST1_timer
2013.03.26 19:06:46 1: notify_test3: global, Global, DEFINED z_FS20_ST1_timer, DEFINED, z_FS20_ST1_timer
2013.03.26 19:06:46 1: notify_test4: global, Global, DEFINED z_FS20_ST1_timer, DEFINED, z_FS20_ST1_timer
2013.03.26 19:06:46 1: notify_test1: z_FS20_ST1, FS20, on-for-timer 10, on-for-timer, 10
2013.03.26 19:06:46 1: notify_test2: z_FS20_ST1, FS20, on-for-timer 10, on-for-timer, 10
2013.03.26 19:06:47 1: notify_test3: z_FS20_ST1, FS20, on-for-timer 10, on-for-timer, 10
2013.03.26 19:06:47 1: notify_test4: z_FS20_ST1, FS20, on-for-timer 10, on-for-timer, 10

MfG Groby

LaLeLu:
Hi Rudi,

ich habe meinen Code auf die neue Syntax umstellen wollen und bin genau an der von Groby beschriebenen Stelle

--- Zitat ---2013.03.26 19:06:46 1: notify_test2: z_FS20_ST1, FS20, on, on, %EVTPART1
2013.03.26 19:06:46 3: notify_test3 return value: Global symbol "$EVTPART1" requires explicit package name at (eval 739) line 1.
--- Ende Zitat ---
hängen geblieben. Bislang habe ich das nicht Vorhandensein von %EVTPART1 so abgefragt:

--- Code: --- if( "%EVTPART1" =~ /EVTPART1/i ) {\
{Log 4, ("  n_Aufruf_von_f_FHEMK_Termine:  PART1: %EVTPART1 ist keine UID => keine weitere Aktion")}\
  }\
--- Ende Code ---

Wie kann ich dies mit der neuen Syntax machen?

--- Code: --- if( "$EVTPART1" =~ /EVTPART1/i ) {\
{Log 4, ("  n_Aufruf_von_f_FHEMK_Termine:  PART1: %EVTPART1 ist keine UID => keine weitere Aktion")}\
  }\
--- Ende Code ---
führt zum oben beschriebenem Fehler.

Danke für die Mühe! Deine Neuerung benötige ich nämlich dringend, da ich den an anderer Stelle beschriebenen Split-Befehl für mehrere Kalender-Termine an derselben Uhrzeit dringend ermöglichen möchte.

rudolfkoenig:
Ich sehe hier nur die Symptome, aber nicht die Ursache, deswegen rate ich mal: das Regexp der Notify trifft auf Nachrichten zu, die manchmal keinen zweiten Argument haben.

Ich sehe 3 Moeglichkeiten:
- $EVENT selbst zu splitten ($EVTPARTx ist eh was fuer Anfaenger :)
- das regexp so modifizieren, dass dieser Parameter immer vorhanden ist, d.h. evtl. mehrere notifys
- no strict 'vars' vor dem ersten Aufruf von $EVTPART1 einbauen.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln