FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Müller am 16 Dezember 2022, 22:07:46

Titel: Hilfe bei Wiederholungsterminen im Kalender - gelöst
Beitrag von: Müller am 16 Dezember 2022, 22:07:46
Hallo leider bin ich zu blöd um aus den alten Diskussionen die Lösung für meinen Kalender abzuleiten:

Ich habe da ein Notify welches einen Dummy über den Kalender schalten soll.
Das ganze funktioniert bei einem Einzeltermin, aber nicht bei Wiederholungsterminen.

notify:
defmod SwitchActorOn notify Kalender:start:.* {my $reading="$EVTPART0";; my $uid= "$EVTPART1";; my $actor= fhem("get Kalender location $uid");; if(defined $actor) { fhem("set $actor on") }}

Kann mir jemand helfen das umzustellen?
Danke
Titel: Antw:Hilfe bei Wiederholungsterminen im Kalender
Beitrag von: Otto123 am 17 Dezember 2022, 09:55:41
Hi,

naja, die Verwendung von get ... location ist eh nicht zukunftsicher:
Zitatget AbfallKalender location is deprecated and will be removed soon.
Wenn dein Aktor durch Location referenziert wird, dann sollte es so sein:
my $actor= fhem('get MyCalendar events filter:uid=="'.$uid.'" format:custom="$L"')
Abgewandelt aus dem Beispiel in der commandref (https://fhem.de/commandref_modular_DE.html#Calendar) und nicht selbst getestet.

Gruß Otto
Titel: Antw:Hilfe bei Wiederholungsterminen im Kalender
Beitrag von: Müller am 17 Dezember 2022, 12:54:37
Danke Otto,

dh ich muß diesen Teil
my $actor= fhem("get Kalender location $uid");

mit deinem Code ersetzen. Ist damit auch das Problem mit den Wiederholungterminen gelöst?

Grüße
Titel: Antw:Hilfe bei Wiederholungsterminen im Kalender
Beitrag von: Otto123 am 17 Dezember 2022, 13:15:29
Das kann ich nicht beantworten, ich habe kein Problem mit Wiederholungsterminen. Ich arbeite aber auch nicht mit Location.
Im Schreiben fällt mir was ein:
Ein Problem an deinem Konstrukt wird sein: Deine Abfrage liefert nicht einen event, der liefert mehrere, d.h. Du bekommst nicht einmal die Location sondern mehrfach.
Deswegen versuch es mal so:
my $actor= fhem('get Kalender events filter:uid=="'.$uid.'" format:custom="$L" limit:count=1,from=-1',1)
Hinweis: die ,1 am Ende verhindert, dass jeder dieser Abfragen einen Logeintrag erzeugt.
Titel: Antw:Hilfe bei Wiederholungsterminen im Kalender
Beitrag von: Müller am 17 Dezember 2022, 14:23:43
Erster Test sieht viel versprechend aus.
Danke für deine Hilfe

Kalender:start:.* {my $reading="$EVTPART0"; my $uid= "$EVTPART1"; my $actor= fhem('get Kalender events filter:uid=="'.$uid.'" format:custom="$L" limit:count=1,from=-1',1); if(defined $actor) { fhem("set $actor on") }}

Kalender:end:.* {my $reading="$EVTPART0"; my $uid= "$EVTPART1"; my $actor= fhem('get Kalender events filter:uid=="'.$uid.'" format:custom="$L" limit:count=1,from=-1',1); if(defined $actor) { fhem("set $actor off") }}
Titel: Antw:Hilfe bei Wiederholungsterminen im Kalender
Beitrag von: Otto123 am 17 Dezember 2022, 14:39:29
Hinweis zum Zusatz limit:count=1,from=-1
count=1 dürfte klar sein.
from=-1 bedeutet beginnen vor einer Sekunde. Bei dem start Event könnte man hier auch 0 nehmen (ab jetzt) beim end Event würde das nicht funktionieren, der event ist ja gerade vorbei. Alternativ könnte man auch das Attribute hideOlderThan setzen.