Calendar - unterschiedliches Verhalten bei reload und update

Begonnen von wkarl, 27 Juli 2014, 09:02:00

Vorheriges Thema - Nächstes Thema

wkarl

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
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

betateilchen

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.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wkarl

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
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

wkarl

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
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen