FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: wkarl am 27 Juli 2014, 09:02:00

Titel: Calendar - unterschiedliches Verhalten bei reload und update
Beitrag von: wkarl am 27 Juli 2014, 09:02:00
Hallo,

ich habe folgende Definition:
define WasteCal Calendar ical url https://www.google.com/calendar/ical/ssmfesa817jbtb585oc2eksc3g%40group.calendar.google.com/private-201e67790320f64532ede13674bfdb31/basic.ics
attr WasteCal room Z-HA-FloorPlans

define WasteBoxToday notify WasteCal:modeStarted.* { \
    my @uid = split("\;;","$EVTPART1");; \
    my $box = "";;\
    if (defined $uid[0]) { \
    foreach(@uid) {\
        $box = fhem("get WasteCal summary $_");;\
        fhem("set PushNote message \"Heute: $box.\"");;\
        };;\
    };; \
}
attr WasteBoxToday room Z-HA-FloorPlans


Wird für den Kalender ein reload durchgeführt funktioniert das Konstrukt. Bei update bekomme ich diesen Fehler im log:
Zitat014.07.27 08:54:51.258 3: WasteBoxToday return value: No such class WasteCaluid at (eval 3345) line 2, near "{
    my WasteCaluid"
syntax error at (eval 3345) line 2, near "my WasteCaluid ="
Global symbol "@uid" requires explicit package name at (eval 3345) line 4.
Bareword "WasteCaluid" not allowed while "strict subs" in use at (eval 3345) line 5.
Habe mir schon einen Wolf gesucht, aber bisher keine Erklärung gefunden.

Danke und ciao
walter
Titel: Antw:Calendar - unterschiedliches Verhalten bei reload und update
Beitrag von: betateilchen am 27 Juli 2014, 10:25:17
Die Fehlermeldung ist doch eigentlich eindeutig, vollständig und unmißverständlich. Der Fehler kommt nicht aus dem Calendar-Modul sondern aus Deinem eigenen Coding. Irgendwo in Deiner Konfiguration hast Du folgendes stehen:

my WasteCaluid

und das müsste eigentlich

my $WasteCaluid

heißen, weil Variablendefinitionen immer mit einem Dollarzeichen anfangen.

Titel: Antw:Calendar - unterschiedliches Verhalten bei reload und update
Beitrag von: wkarl am 27 Juli 2014, 15:28:21
Hallo,

kurz erklärend das Verhalten von reload und update:
Der obige Fehler tritt auf, wenn $EVTPART1 nicht existiert, also modeStart/modeStarted keinen Inhalt haben. Jetzt meine ich anhand der Beschreibungen im Internet verstanden zu haben, dass mit defined die Existenz einer Variable geprüft werden kann.
Ist dem so?

Danke und ciao
walter
Titel: Antw:Calendar - unterschiedliches Verhalten bei reload und update
Beitrag von: wkarl am 27 Juli 2014, 17:02:57
Hallo,

um zu vermeiden, dass EVTPART1 nicht existiert, habe ich den Filter des notify verfeinert.
define WasteBoxToday notify WasteCal:modeStart:..* { ... }
Damit wird das notify nur durchgeführt, wenn modeStart einen Eintrag hat.

ciao walter