Global symbol "$EVTPART1" requires explicit package name

Begonnen von FhemPiUser, 25 September 2015, 19:59:18

Vorheriges Thema - Nächstes Thema

juergen012

Hallo, zum Steuern einiger Kommandos nutze ich das Calendar-Modul. Dazu habe ich, wie in der Commandref beschrieben folgenden Code genutzt:
icloud_Kalender:modeStarted.* { my $reading="%EVTPART0";; my $uid= "%EVTPART1";; my $actor= fhem("get icloud_Kalender summary $uid");; if(defined $actor) { fhem("set $actor on") } }
Durch das Update auf fhem 5.7 funktionierte das so nicht mehr.. Somit habe ich den Code  wie folgt geändert:
icloud_Kalender:modeStarted.* { my $reading="$EVTPART0";; my $uid= "$EVTPART1";; my $actor= fhem("get icloud_Kalender summary $uid");; if(defined $actor) { fhem("set $actor on") } }
Jetzt wird wieder geschaltet, aber ich bekomme  mit 5 Min Abstand folgende Fehlermeldung:
SwitchActorOn return value: Global symbol "$EVTPART1" requires explicit package name at (eval 34401) line 1.
Mittel Event monitor und verbose 5 im Modul habe ich versucht, den Fehler zu ergründen. Leider ohne Erfolg. Kann mir jemand auf die Sprünge helfen??
Beste Grüße Jürgen K.
Fhem unter Proxmox

dev0

Dein Notify triggert auf ein Event das kein $EVTPART1 liefert. Regex im Notify besser eingrenzen.

zweiundzwanzig

Ich habe das gleiche Problem, verstehe aber deinen Lösungsvorschlag leider nicht. Kannst du das bitte für mich etwas präzisieren?
Juergen hat das bei dir funktioniert?
2x MAX CuBe mit a-culf im Moritzbetrieb
1x MAX CuBe mit a-culf im Homematicbetrieb
60x MAX Heizkörperthermostat plus | 2x HM Schaltaktoren | 1x MAX Wandthermostat
1x FHEM Ubuntu Server auf VMWare
24 Räume, die durch ical Kalender geheizt werden

dev0

Global symbol "$EVTPART1" requires explicit package name at (eval 34401) line 1.
Die Meldung sagt aus, dass auf die Variable $EVTPART1 zugegriffen wurde, die Variable aber nicht definiert ist.
Das passiert z.B. wenn man die regex in einem notify nicht weit genug eingrenzt.

Beispiel:
define n notify device:.* set lamp $EVTPART0 $EVTPART1
Wenn jetzt ein Event "pct 100" eintrifft, dann wird "set lamp pct 100" aufgerufen.
Wenn aber ein Event "on" eintrifft, dann ist $EVTPART1 nicht definiert und es wird der genannte Fehler generiert.

Abhilfe:
define n notify device:pct.* set lamp $EVTPART0 $EVTPART1
Jetzt wird das notify nur noch getriggert, wenn das Event mit pct beginnt.

alternative Abhilfe:
define n notify device:.* set lamp $EVENT
jetzt würden beide Varianten ("on" und "pct 100") funktionieren.

Man muss halt eine regex finden, die nur auf das trigert, was man in dem notify auch verarbeiten möchte.

/Uli

juergen012

Sorry, aber ich habe es auch nicht hinbekommen. Nach stundenlangem rumprobieren habe ich aufgegeben. Ärgert mich zwar..aber nicht zu ändern. Hauptsache ist, dass es schaltet. ...
Gruß
Jürgen
Fhem unter Proxmox

zweiundzwanzig

Hab es hinbekommen:
http://forum.fhem.de/index.php/topic,46144.msg380752.html#msg380752
Wichtig ist, dass du die Befehle nicht direkt in die fhem.cfg einträgst sondern über das DEF Feld.
2x MAX CuBe mit a-culf im Moritzbetrieb
1x MAX CuBe mit a-culf im Homematicbetrieb
60x MAX Heizkörperthermostat plus | 2x HM Schaltaktoren | 1x MAX Wandthermostat
1x FHEM Ubuntu Server auf VMWare
24 Räume, die durch ical Kalender geheizt werden

juergen012

Hallo, bei mir läuft es inzwischen auch ohne Fehlermeldung. Habe mich an
http://www.fhemwiki.de/wiki/Google-Kalender_zur_Steuerung_von_Dummies gehalten.
Nun läuft es auch mit icloud..
Fhem unter Proxmox