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
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.
Hallo,
kurz erklärend das Verhalten von
reload und
update:
- reload füllt immer modeStart und modeStarted
- update nur wenn der Termin zum ersten Mal auftaucht, danach ist nur modeStart und modeStarted ist leer
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
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