[Modul] iCal Calender in IP Symcon lesen und verarbeiten

Wie gesagt

Demnach ist der Beginn des Betrachtungszeitraums bei 0 Tagen: 2024-11-08 00:00:00

Da es sich hier um einen heutigen Termin handelt wird er angezeigt.

Morgen wird er nicht mehr angezeigt werden.

OK, danke für deine Erklärung das die Grenze immer um Mitternacht ist.
Ich hatte gehofft, das es möglich wäre, die Grenze in Abhängigkeit von der Uhrzeit des Events zu beeinflussen und nicht Fix jeden Tag um Mitternacht.
So werden halt auch vergangene Termine des heutigen Tages in Symcon angezeigt - bei Outlook werden diese als beendet gehandelt.

Hallo,

nach dem Installieren der Testversion erhalte ich beim Laden des Kalenders folgende Meldung:

Fatal error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone ((UTC +01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna) in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php:101
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php(101): DateTimeZone->__construct('(UTC +01:00) Am...')
#1 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(532): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('(UTC +01:00) Am...')
#2 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(503): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20250330T000000', Array)
#3 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(322): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20250330T000000', Array)
#4 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php(177): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#5 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(865): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#6 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(900): iCalCalendarReader->ReadCalendar()
#7 C:\ProgramData\Symcon\scripts\__generated.inc.php(4259): iCalCalendarReader->UpdateCalendar()
#8 C:\Windows\System32\-(8): ICCR_UpdateCalendar(25454)
#9 {main}

Next InvalidArgumentException: Invalid DateTimeZone '(UTC +01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna' in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php:104
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(532): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('(UTC +01:00) Am...')
#1 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(503): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20250330T000000', Array)
#2 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(322): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20250330T000000', Array)
#3 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php(177): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#4 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(865): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#5 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(900): iCalCalendarReader->ReadCalendar()
#6 C:\ProgramData\Symcon\scripts\__generated.inc.php(4259): iCalCalendarReader->UpdateCalendar()
#7 C:\Windows\System32\-(8): ICCR_UpdateCalendar(25454)
#8 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php on line 104
Abort Processing during Fatal-Error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone ((UTC +01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna) in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php:101
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php(101): DateTimeZone->__construct('(UTC +01:00) Am...')
#1 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(532): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('(UTC +01:00) Am...')
#2 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(503): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20250330T000000', Array)
#3 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(322): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20250330T000000', Array)
#4 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php(177): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#5 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(865): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#6 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(900): iCalCalendarReader->ReadCalendar()
#7 C:\ProgramData\Symcon\scripts\__generated.inc.php(4259): iCalCalendarReader->UpdateCalendar()
#8 C:\Windows\System32\-(8): ICCR_UpdateCalendar(25454)
#9 {main}

Next InvalidArgumentException: Invalid DateTimeZone '(UTC +01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna' in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php:104
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(532): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('(UTC +01:00) Am...')
#1 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(503): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20250330T000000', Array)
#2 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(322): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20250330T000000', Array)
#3 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php(177): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#4 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(865): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#5 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\iCalCalendarReader\module.php(900): iCalCalendarReader->ReadCalendar()
#6 C:\ProgramData\Symcon\scripts\__generated.inc.php(4259): iCalCalendarReader->UpdateCalendar()
#7 C:\Windows\System32\-(8): ICCR_UpdateCalendar(25454)
#8 {main}
  thrown
   Error in Script C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php on Line 104

Sehr seltsam, die Zeitzone hat sich geändert. Hier war es noch

(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna

jetzt ist es

also

(UTC +01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna

Hast du eine Idee, wieso da jetzt ein zusätzliches Leerzeichen auftaucht?

Hm, keine Ahnung. Das VEVENT hatte ich aus dem Dump (Text: Roh) kopiert, die Fehlermeldung aus der Ausgabe des Moduls. :man_shrugging:

Kannst du es mal aus der Downloaddatei ziehen, die du erhälst, wenn du die in der Instanz angegebene URL im Browser ausführst?

Aus der .ics-Datei:

BEGIN:VEVENT
RRULE:FREQ=YEARLY;UNTIL=20250329T230000Z;INTERVAL=1;BYMONTHDAY=30;BYMONTH=3
UID:040000008200E00074C5B7101A82E0080000000000312D09B02EDB01000000000000000
 01000000075A782AB6248F44F9809518FBF7D96C0
SUMMARY:Geburtstag von Sebastiano La Ferla
DTSTART;TZID="(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna":2
 0250330T000000
DTEND;TZID="(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna":202
 50331T010000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20241108T182526Z
TRANSP:TRANSPARENT
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-BUSYSTATUS:FREE
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:1
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT

habe nun mal den zugehörigen Download gemacht:

BEGIN:VEVENT
DTSTART;VALUE=DATE:20241215
DTEND;VALUE=DATE:20241216
RRULE:FREQ=YEARLY;COUNT=10;INTERVAL=1;BYMONTHDAY=15
DTSTAMP:20241108T192456Z
UID:xxx@google.com
CREATED:20241104T104720Z
DESCRIPTION:
LAST-MODIFIED:20241104T104720Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Namenstag Chrissi
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER:-P0DT18H0M0S
DESCRIPTION:This is an event reminder
END:VALARM

Ja, da scheint mir noch etwas falsch zu laufen. Werde ich mir anschauen.

1 „Gefällt mir“

In der entsprechenden Schleife einfach den Eintrag überspringen, etwa so:

if($data['To']>time()){
  continue;
}
1 „Gefällt mir“

Ich habe es mir näher angeschaut und die Regelauswertung arbeitet doch korrekt. Es gibt auch interaktive Tools, um es zu überprüfen

https://jkbrzt.github.io/rrule/

In deiner Regel

FREQ=YEARLY;COUNT=10;INTERVAL=1;BYMONTHDAY=15

fehlt der Eintrag „BYMONTH=11“

Ich habe folgenden Eintrag im Kalender, welcher leider vom Modul nicht angezeigt wird. Vielleicht hat jemand eine Idee warum.

BEGIN:VEVENT
LAST-MODIFIED:20241016T120103Z
DTSTAMP:20241016T120103Z
UID:ee007417-773c-4ebb-8c5d-85e612b90d85
SUMMARY:Arbeiten
RRULE:FREQ=WEEKLY;BYDAY=MO,WE,TH,FR
EXDATE;TZID=Europe/Berlin:20240111T090000
EXDATE;TZID=Europe/Berlin:20240125T090000
EXDATE;TZID=Europe/Berlin:20240126T090000
EXDATE;TZID=Europe/Berlin:20240129T090000
EXDATE;TZID=Europe/Berlin:20240329T090000
EXDATE;TZID=Europe/Berlin:20240401T090000
EXDATE;TZID=Europe/Berlin:20240501T090000
EXDATE;TZID=Europe/Berlin:20240509T090000
EXDATE;TZID=Europe/Berlin:20240510T090000
EXDATE;TZID=Europe/Berlin:20240520T090000
EXDATE;TZID=Europe/Berlin:20240530T090000
EXDATE;TZID=Europe/Berlin:20241003T090000
EXDATE;TZID=Europe/Berlin:20241101T090000
EXDATE;TZID=Europe/Berlin:20241225T090000
EXDATE;TZID=Europe/Berlin:20241226T090000
EXDATE;TZID=Europe/Berlin:20250101T090000
EXDATE;TZID=Europe/Berlin:20240513T090000
EXDATE;TZID=Europe/Berlin:20240613T090000
EXDATE;TZID=Europe/Berlin:20240620T090000
EXDATE;TZID=Europe/Berlin:20240705T090000
EXDATE;TZID=Europe/Berlin:20240710T090000
EXDATE;TZID=Europe/Berlin:20240715T090000
EXDATE;TZID=Europe/Berlin:20240717T090000
EXDATE;TZID=Europe/Berlin:20240718T090000
EXDATE;TZID=Europe/Berlin:20240719T090000
EXDATE;TZID=Europe/Berlin:20240722T090000
EXDATE;TZID=Europe/Berlin:20240724T090000
EXDATE;TZID=Europe/Berlin:20240725T090000
EXDATE;TZID=Europe/Berlin:20240821T090000
EXDATE;TZID=Europe/Berlin:20240822T090000
EXDATE;TZID=Europe/Berlin:20240823T090000
EXDATE;TZID=Europe/Berlin:20240826T090000
EXDATE;TZID=Europe/Berlin:20240828T090000
EXDATE;TZID=Europe/Berlin:20240829T090000
EXDATE;TZID=Europe/Berlin:20240830T090000
EXDATE;TZID=Europe/Berlin:20240902T090000
EXDATE;TZID=Europe/Berlin:20240904T090000
EXDATE;TZID=Europe/Berlin:20240905T090000
EXDATE;TZID=Europe/Berlin:20240906T090000
EXDATE;TZID=Europe/Berlin:20240909T090000
EXDATE;TZID=Europe/Berlin:20241202T090000
EXDATE;TZID=Europe/Berlin:20241204T090000
EXDATE;TZID=Europe/Berlin:20241205T090000
EXDATE;TZID=Europe/Berlin:20241206T090000
DTSTART;TZID=Europe/Berlin:20240311T090000
DURATION:PT6H15M
TRANSP:OPAQUE
X-MOZ-GENERATION:2
END:VEVENT

@bumaas
vielen Dank für deine Antwort, habe mir mal das genauer angeschaut, da scheint ein Fehler in der privaten google.ics zu sein: BMONTH wird nicht mit ausgegeben !
die öffentliche ics kann ich leider nicht benutzen weil eine Fehlermeldung kommt, sogar wenn ich in den Browser direkt eingebe :wink:
bei einem regulären Export der Daten ist wieder alles richtig und die Serien passen
image
@tobiasr
könnte das ein ähnlicher Fehler sein nur halt täglich ?

Da war noch ein Fehler in der Erkennung von wiederkehrenden Terminen. Magst du einmal die aktuelle Testversion ausprobieren?

Vielen Dank. Der Termin ist nun grundsätzlich sichtbar. Aus einem mir unbekannten Grund taucht er zwar nicht in meiner Ausgabe aus, aber im Array ist er enthalten.

Nachtrag: Mein Script hatte eine ungünstige Abbruchbedingung und hat daher nicht 20 Termine ANGEZEIGT sondern nach 20 (vergangenen) Terminen abgebrochen. Dadurch wurde halt nicht genügend Vorlauf angezeigt.

Mein Caldav Server hatte gestern für ca. 2h ein Zertifikatsfehler. Leider hat sich das Modul nicht von selbst aus ‚ssl Error‘ erhohlt und ich musste manuell die Instanz erneut aktivieren.