Icalendar / Validation failed

Icalendar pulljob claims “Validation failed” or “unable to read calender file”. Do I need to check for specific formatting in the ics?

One of my calendars from the same server works fine without issues.
The other file is downloaded and has openhab:openhab read permissions, yet parsing fails.
I can view/edit the file without issues in console.

I already tried ics validators available online, yet even after removing the worst looking errors, parsing still fails.

Logging is already set to debug, yet specific (parsing) error is not logged.
Any pointers where to look next?

Even after „Removing the worst errors“ it does not sound you are using a clean file. A validation error means the file itself is readable, but the content is not usable. The parser is mostly (maybe even fully) compliant to RFC 5545, so if the file passes a validator without errors and warnings for that RFC, it should work.

in the meantime i have cleaned the file. actually i removed some series events which started back in 2012 (birthdays), Now I do not get any error messages anymore, but the linked items are still not receiving updates.

I can’t say whats wrong now as my glass ball is broken :wink:. Check out the guide to icalendar to ensure you‘ve configured the items correctly:

Yes, I understand that it is impossible to figure out without any logs. I already tried to setup as many loggers on DEBUG as possible.
The only icalendar entries to the log are now: Scheduled update in XXXXX seconds. I get this twice, once for each configured calendar.
The files are being downloaded to the cache folder


// this one does not work, same server and account
Bridge icalendar:calendar:family    "FamilyEvents" @ "Internet" [ url="https://server/dav.php/calendars/id(notworkingcalendar)?export", username="account", password="password", refreshTime=10, maxSize=50 ]
Thing  icalendar:eventfilter:familyfilter "Heutige Termine" (icalendar:calendar:family) [ maxEvents=4, refreshTime=10]
// this one is working
Bridge icalendar:calendar:muell    "Muell" @ "Internet" [ url="https://server/dav.php/calendars/id(workingcalendar)?export", username="account", password="password", refreshTime=360, maxSize=20 ]

and my items

// working fine, updating from icalendar
String CalDav_Muelltonne   "Tonne [%s]"  <calendar> (gPersist) { channel="icalendar:calendar:muell:current_title" }
DateTime    CalDav_Date "Datum der Abholung [%1$td.%1$tm.%1$tY]"    <calendar> (gPersist)   { channel="icalendar:calendar:muell:current_start" }


// no updates from icalendar
String CalDav_Familie_Event1   "Familie Event [%s]"  <calendar> { channel="icalendar:eventfilter:familyfilter:result_0#title" }
DateTime    CalDav_Familie_Event1_Date  "Datum des Events [%1$td.%1$tm.%1$tY]"    <calendar>    { channel="icalendar:eventfilter:familyfilter:result_0#begin" }

String CalDav_Familie_Event2   "Familie Event [%s]"  <calendar> { channel="icalendar:eventfilter:familyfilter:result_1#title" }
DateTime    CalDav_Familie_Event2_Date  "Datum des Events [%1$td.%1$tm.%1$tY]"    <calendar>    { channel="icalendar:eventfilter:familyfilter:result_1#begin" }

String CalDav_Familie_Event3   "Familie Event [%s]"  <calendar> { channel="icalendar:eventfilter:familyfilter:result_2#title" }
DateTime    CalDav_Familie_Event3_Date  "Datum des Events [%1$td.%1$tm.%1$tY]"    <calendar>    { channel="icalendar:eventfilter:familyfilter:result_2#begin" }

String CalDav_Familie_Event4   "Familie Event [%s]"  <calendar> { channel="icalendar:eventfilter:familyfilter:result_3#title" }
DateTime    CalDav_Familie_Event4_Date  "Datum des Events [%1$td.%1$tm.%1$tY]"    <calendar>    { channel="icalendar:eventfilter:familyfilter:result_3#begin" }

In the meantime I have eliminated all invalid entries from the calendar file without change.
Also validated the working calendar and it actually showed similar errors (mostly invalid characters due to different character encoding of german Umlauts)

It seems that it was indeed due to some misformed calendar entries which prevented icalendar binding from parsing. after some more fiddling with the evenfilter setting it is now working as expecting.

unfortunately i could not resolve the exact error which prevented the parsing originally