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.