Modul Calendar, 2 Termine zur gleichen Zeit Problem beim notify

Begonnen von Marcus, 18 Dezember 2012, 20:58:44

Vorheriges Thema - Nächstes Thema

Marcus

                                                     

Hallo Zusammen,

ich hab das Calendar Modul erfolgreich laufen, mit folgendem notify (aus
der Doku, bzw. hier aus dem Forum):

define CalendarSwitchActorOn notify Cal:modeStarted.* {\
  my $reading="%EVTPART0";;\
  my $uid="%EVTPART1";;\
  my $actor=fhem("get Cal summary $uid");;\
  if(defined $actor) {\
    fhem("set $actor on");;\
  }\
}

Das Problem ist nun aber, wenn 2 Termine zur gleichen Zeit starten. Dann
habe ich im Log folgende Ausgaben:

2012.12.18 15:00:00 3: CalendarSwitchActorOn return value: Unknown command {\
, try help
Unknown command rcu0fahi34305h61i00kskppijcgooglecom";\
, try help


Ich weiß jetzt nicht, ob da im Calender-Modul noch ein Bug ist und er zwei
Termine zur gleichen Zeit nicht auf die Reihe bekommt, oder dann die
Variablen irgendwie anders gesetzt werden und damit der Perl-Code falsch
zusammen gebaut wird oder was auch immer...

Kann mir da jemand helfen?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Dr. Boris Neubert

                                             

Hallo Maniac,

Am 18.12.2012 20:58, schrieb Maniac:
>
> ich hab das Calendar Modul erfolgreich laufen, mit folgendem notify
> (aus der Doku, bzw. hier aus dem Forum):
>
> define CalendarSwitchActorOn notify Cal:modeStarted.* {\
>   my $reading="%EVTPART0";;\
>   my $uid="%EVTPART1";;\
>   my $actor=fhem("get Cal summary $uid");;\
>   if(defined $actor) {\
>     fhem("set $actor on");;\
>   }\
> }
>
> Das Problem ist nun aber, wenn 2 Termine zur gleichen Zeit starten.
> Dann habe ich im Log folgende Ausgaben:
>
> 2012.12.18 15:00:00 3: CalendarSwitchActorOn return value: Unknown command {\
> , try help
> Unknown command rcu0fahi34305h61i00kskppijcgooglecom";\
> , try help
wenn 2 Termine zur gleichen Zeit starten, hat das Reading modeStarted
die UIDs beider Termine getrennt durch Semikolon und sendet das als
Event. Du mußt diese Fälle auffangen, indem Du %EVTPART1 mit split zuvor
zerlegst.

Viele Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Marcus

                                                     

D.h., prüfen ob ein Semikolon vorkommt und dann splitten? Oder gibt split einfach ein Element zurück, wenn kein Split Zeichen gefunden wurde?

Ok, und das Semikolon sprengt dann den zusammen gesetzten Befehl, das erklärt die Log-Ausgabe...

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Dr. Boris Neubert

                                             

Am 19.12.2012 21:35, schrieb Maniac:
> D.h., prüfen ob ein Semikolon vorkommt und dann splitten? Oder gibt split einfach ein Element zurück, wenn kein Split Zeichen gefunden wurde?
split gibt ein Array zurück. Das kannst Du dann mit foreach abarbeiten.

Sowas wie (ungetestet):

   my @uids= split(";", "%EVTPART1");;\
   foreach my $uid (@uids) { \
         mach was mit $uid;
   }


Bitte poste Dein Ergebnis, sobald es klappt. Ich nehme es dann in die
Doku auf.

Grüße
Boris


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Marcus

                                                     

Gerade getestet und funktioniert leider noch immer nicht. :(

Mein Code:
define CalendarLogActors notify Cal:mode(Started|Ended).* {\
  my $reading="%EVTPART0";;\
  my $uids=split(";","%EVTPART1");;\
  foreach my $uid (@uids) {\
    my $actor=fhem("get Cal summary $uid");;\
    if(defined $actor) {\
      Log 1, "Actor from calendar: $actor, Reading $reading";;\
    }\
  }\
}

Meldung im Log:
2012.12.19 23:07:00 3: CalendarLogActors return value: Unknown command {\
, try help
Unknown command my, try help
2012.12.19 23:07:00 3: CalendarLogActors return value: Unknown command {\
, try help
Unknown command my, try help

Irgendwie scheint das Semikolon noch immer den Befehl zu zersemmeln...
Irgendwie etwas tricky mit perl in fhem in perl... oder so.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Dr. Boris Neubert

                                             

verdoppel doch auch mal noch bitte das Semikolon in Anführungszeichen.
BN


-------- Original-Nachricht --------
Von: Maniac
Gesendet: Wed Dec 19 23:10:01 MEZ 2012
An: fhem-users@googlegroups.com
Betreff: Re: [FHEM] Modul Calendar, 2 Termine zur gleichen Zeit Problem beim notify

Gerade getestet und funktioniert leider noch immer nicht. :(

Mein Code:
define CalendarLogActors notify Cal:mode(Started|Ended).* {\
  my $reading="%EVTPART0";;\
  my $uids=split(";","%EVTPART1");;\
  foreach my $uid (@uids) {\
    my $actor=fhem("get Cal summary $uid");;\
    if(defined $actor) {\
      Log 1, "Actor from calendar: $actor, Reading $reading";;\
    }\
  }\
}

Meldung im Log:
2012.12.19 23:07:00 3: CalendarLogActors return value: Unknown command {\
, try help
Unknown command my, try help
2012.12.19 23:07:00 3: CalendarLogActors return value: Unknown command {\
, try help
Unknown command my, try help

Irgendwie scheint das Semikolon noch immer den Befehl zu zersemmeln...
Irgendwie etwas tricky mit perl in fhem in perl... oder so.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

--
sent from my WePad - apologies for brevity

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Marcus

                                                     

Also mit dem Semikolon habe ich es nicht hinbekommen. Auch mit dem
verdoppeln nicht. Entweder bin ich zu blöd, oder das Semikolen in den
Argumenten zerhackt den Perl Code.

Ich habe das Calender-Modul jetzt so angepasst, dass die uids
Komma-getrennt sind, dann funktioniert es mit u.A. notifys.

Wenn Du Zeit und Lust hast, kannst Du das ja nochmal gegentesten und
ansonsten überlegen, ob Du das Trennzeichen im Calender Modul änderst...

define CalendarSwitchActorOn notify Cal:modeStarted.* {\
  my $reading="%EVTPART0";;\
  my @@uids=split(",","%EVTPART1");;\
  foreach my $uid (@@uids) {\
    my $actor=fhem("get Cal summary $uid");;\
    if(defined $actor) {\
      fhem("set $actor on");;\
    }\
  }\
}

define CalendarSwitchActorOff notify Cal:modeEnded.* {\
  my $reading="%EVTPART0";;\
  my @@uids=split(",","%EVTPART1");;\
  foreach my $uid (@@uids) {\
    my $actor=fhem("get Cal summary $uid");;\
    if(defined $actor) {\
      fhem("set $actor off");;\
    }\
  }\
}

define CalendarLogActors notify Cal:mode(Started|Ended).* {\
  my $reading="%EVTPART0";;\
  my @@uids=split(",","%EVTPART1");;\
  foreach my $uid (@@uids) {\
    my $actor=fhem("get Cal summary $uid");;\
    if(defined $actor) {\
      Log 1, "Actor from calendar: $actor, Reading $reading";;\
    }\
  }\
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com