Hilfe bei Wiederholungsterminen im Kalender - gelöst

Begonnen von Müller, 16 Dezember 2022, 22:07:46

Vorheriges Thema - Nächstes Thema

Müller

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
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Otto123

#1
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 und nicht selbst getestet.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Müller

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
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Otto123

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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Müller

#4
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") }}
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Otto123

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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz