[bug] 57_Calendar.pm: cutoffOlderThan funktioniert nicht mit DURATION

Begonnen von betateilchen, 18 Juni 2025, 20:03:54

Vorheriges Thema - Nächstes Thema

betateilchen

Gegeben ist folgendes:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:Data::ICal 0.24
BEGIN:VEVENT
DESCRIPTION:Description
DTSTAMP:20250618T174801Z
DTSTART:20250618T194000
DURATION:+PT5M
LOCATION:Location
SUMMARY:Summary
UID:6852fbd1-f33f-22e2-1c2c-6ce0189d4a26ee69-fhem
END:VEVENT
END:VCALENDAR

Dieser Eintrag läßt sich problemlos in einem Calendar-device verarbeiten.

Das Attribut cutoffOlderThan mit dem Wert 60s hat aber keine Wirkung.
Nach einem "set <calendar> reload" findet sich mit "get <calender> vevents" immer noch der abgelaufene Eintrag:

7: VEVENT @4 [new]
    DESCRIPTION: Description
    DTSTAMP: 20250618T174801Z
    DTSTART: 20250618T194000
    DURATION: +PT5M
    LOCATION: Location
    SUMMARY: Summary
    UID: 6852fbd1-f33f-22e2-1c2c-6ce0189d4a26ee69-fhem
    >>> Events:
      6852fbd1f33f22e21c2c6ce0189d4a26ee69fhem         end                     18.06.2025 19:40-18.06.2025 19:45 Summary  Location
    >>> Skipped events:

Meine Vermutung nach einem oberflächlichen Blick in den Code:

Es wird zwar für ein event ein Ende berechnet, wenn DURATION angegeben ist:

    } elsif($self->hasKey("DURATION")) {
        my $duration= $self->d($self->value("DURATION"));
        $event->{end}= $nextstart + $duration;

aber bei der Auswertung der VEVENTS wird die Variante mit DURATION nicht berücksichtigt und bei nicht periodischen Einträgen nur nach DTEND gesucht, was es bei Einträgen mit DURATION aber nicht gibt. Deshalb wird das cutoffOlderThan nicht ausgeführt.



Zusatzinfo:
Das Attribut hideOlderThan funktioniert in "get <calendar> events" einwandfrei und filtert die abgelaufenen Einträge aus.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Hallo,

kannst du bitte mal beigefügte Version bei Dir testen?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Ja, mache ich. Bin aber jetzt am Wochenende nicht dazu gekommen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#3
Hallo Boris,

bis jetzt erkenne ich im Verhalten der Kalendereinträge keine Änderung.

Aber im Logfile habe ich eine "neue" Meldung:

2025.10.20 11:58:32 1: PERL WARNING: Argument "P1D" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 3088.
Kann die mit Deiner Änderung zusammenhängen?


EDIT: es gibt noch mehr Meldungen zu einem späteren Zeitpunkt:

2025.10.20 13:00:58 1: PERL WARNING: Argument "+PT5M" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 3088.
2025.10.20 13:00:58 1: PERL WARNING: Argument "20251020T120000" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 3088.

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

Dr. Boris Neubert

Hmmm... Copy & Paste funktioniert also doch nur manchmal beim Programmieren ;-)

Ich muss mir einen Testfall bauen. Oder kannst du mir bitte gezielt die beiden VEVENTS aus der .ics-Datei schicken, die P1D und +PT5M in DURATION stehen haben?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Zitat von: Dr. Boris Neubert am 20 Oktober 2025, 20:22:26Oder kannst du mir bitte gezielt die beiden VEVENTS aus der .ics-Datei schicken, die P1D und +PT5M in DURATION stehen haben?

Jetzt wird es lustig... P1D habe ich überhaupt nirgends stehen.

Zum Testen hatte ich einen Calendar angelegt, der nur aus dem vcalendar aus dem ersten Beitrag hier im Thread bestand. Ich hatte lediglich DTSTART auf das gestrige Datum geändert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen am 21 Oktober 2025, 09:50:44
Zitat von: Dr. Boris Neubert am 20 Oktober 2025, 20:22:26Oder kannst du mir bitte gezielt die beiden VEVENTS aus der .ics-Datei schicken, die P1D und +PT5M in DURATION stehen haben?

Jetzt wird es lustig... P1D habe ich überhaupt nirgends stehen.

Ok, das P1D kommt aus dem Abfallkalender des Landkreises hier.

BEGIN:VEVENT
UID:38643731-3131-4233-a130-326163383566
DTSTAMP:20251101T115824Z
DESCRIPTION:Abfuhrtermine und aktuelle Störungsmeldungen auf https://abfall
 .landkreis-stade.de/abfuhrkalender/
DTSTART;VALUE=DATE:20251114
DURATION:P1D
LOCATION:Fredenbeck\, Alle anderen Straßen
SUMMARY:Restabfalltonne(14-täglich)
TRANSP:TRANSPARENT
URL:https://abfall.landkreis-stade.de/abfuhrkalender/
X-MICROSOFT-CDO-BUSYSTATUS:FREE
END:VEVENT

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