Thanks Squid,
It’s taken me a while since I was last able to dive into this. It doesn’t seem to be my items that are the problem.
After doing a bit more of a thorough step through all of this, I was finally able to get one calendar working - the main calendar associated with a google account. To get to this, I ensured that I had the URL correct - by pasting it into a browser bar, typing in the login information, and getting the downloaded file.
I then tried a workaround to get my garbage schedule in and working, similar to what it seems you did. My URL, found from the calendar settings integration section, had a slightly different structure, being @import.calendar.google.com, where you had group.calendar.google.com, and the main calendar for this account was simply the email address associated with the account.
Regardless, both these final URLs pasted into a browser bar (incognito mode, so there weren’t any conflations with being logged in on another account, etc), resulted in the ics file being downloaded after the credentials were entered. The file had all the pertinent information. Check.
The problem is that the secondary calendar, the one with the garbage schedule, doesn’t download with caldavio, and the variables don’t populate as you’d imagine.
So, I still don’t know why the calendars that don’t require usernames and passwords don’t download. The log gives the 405 error as quoted above.
I’m not entirely sure why the secondary google calendar doesn’t download. It’s linked to the same account as the main calendar, so the settings are all the same.
- Google Calendar, main calendar. Caldavio downloads the files, and the variables are correctly populated.
Config:
caldavio:TestGCal:url=https://www.google.com/calendar/dav/**********@gmail.com/events
caldavio:TestGCal:username=**********@gmail.com
caldavio:TestGCal:password=**********
caldavio:TestGCal:reloadInterval=60
caldavio:TestGCal:preloadTime=1000
caldavio:TestGCal:disableCertificateVerification=true
- Google Calendar, secondary calendar. Caldavio doesn’t download anything, variables don’t populate. Confirmed URL working, downloads ics file. Also confirmed that the url string with xxx@group.calendar.google.com does NOT work for either, unlike in @KidSquid 's circumstance. I’m guessing this is related to which server the account is on, but it may be pertinent.
Config
caldavio:GarbageGCal:url=https://www.google.com/calendar/dav/*****hash*****@import.calendar.google.com/events
caldavio:GarbageGCal:username=**********@gmail.com
caldavio:GarbageGCal:password=**********
caldavio:GarbageGCal:reloadInterval=10
caldavio:GarbageGCal:preloadTime=8640
caldavio:GarbageGCal:disableCertificateVerification=true
I set the preload time to 6 days to allow for the weekly schedule, and the preload time to 10 minutes as I wasn’t feeling patient. Of note, it had the same lack of success with the same settings as for #1.
- Test open calendar as posted above, no credentials required. Caldavio doesn’t download anything, variables don’t populate. Confirmed URL working.
Config
caldavio:TestCal:url=https://www.centennialpool.ca/?plugin=all-in-one-event-calendar&controller=ai1ec_exporter_controller&action=export_events&no_html=true
#caldavio:TestCal:username=
#caldavio:TestCal:password=
caldavio:TestCal:reloadInterval=60
caldavio:TestCal:preloadTime=1000
- Direct link to garbage collection schedule, no credentials required. Caldavio doesn’t download anything, variables don’t populate. Confirmed URL working.
Config
caldavio:GarbagePickup:url=*************
#caldavio:GarbagePickup:username=
#caldavio:GarbagePickup:password=
caldavio:GarbagePickup:reloadInterval=10
caldavio:GarbagePickup:preloadTime= 2879
caldavPersonal.cfg
############################# CalDAV Personal Binding ################################
# see CalDAV IO Binding
# Used to toggle switch items for presence. Switched to ON if an event in the calendar occurs.
# And back to OFF if the event ends.
# Can also be used to show upcoming or active events
#
# Which calendars should be used to detect presence (comma separated)
# usedCalendars=<ids from caldav-io>
#
# If the location of the event is one of this identifiers, the presence will not be changed.
# Can be used for events which are at home or are just reminders. (comma separated, optional)
# homeIdentifiers=
caldavPersonal:usedCalendars=TestCal,TestGCal,GarbagePickup,GarbageGCal
calendar.items
String GarbagePickupName0 "Pickup Today? [%s]" <calendar> { caldavPersonal="calendar:GarbagePickup type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events
DateTime GarbagePickupTime0 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:GarbagePickup type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events
String GarbagePickupName1 "Next Pickup [%s]" <calendar> { caldavPersonal="calendar:GarbagePickup type:UPCOMING eventNr:1 value:NAME" }
DateTime GarbagePickupTime1 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:GarbagePickup type:UPCOMING eventNr:1 value:START" }
String GarbagePickupName2 "Following Pickup [%s]" <calendar> { caldavPersonal="calendar:GarbagePickup type:UPCOMING eventNr:2 value:NAME" }
DateTime GarbagePickupTime2 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:GarbagePickup type:UPCOMING eventNr:2 value:START" }
String TestCalName0 "Item? [%s]" <calendar> { caldavPersonal="calendar:TestCal type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events
DateTime TestCalTime0 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:TestCal type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events
String TestGCalName0 "Item? [%s]" <calendar> (gCalendar) { caldavPersonal="calendar:TestGCal type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events
DateTime TestGCalTime0 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> (gCalendar) { caldavPersonal="calendar:TestGCal type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events
String TestGCalName1 "Item? [%s]" <calendar> (gCalendar) { caldavPersonal="calendar:TestGCal type:UPCOMING eventNr:1 value:NAME" } //eventNr for concurrent events
DateTime TestGCalTime1 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> (gCalendar) { caldavPersonal="calendar:TestGCal type:UPCOMING eventNr:1 value:START" } //eventNr for concurrent events
String GGarbagePickupName0 "Pickup Today? [%s]" <calendar> (gCalendar) { caldavPersonal="calendar:GarbageGCal type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events
DateTime GGarbagePickupTime0 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> (gCalendar) { caldavPersonal="calendar:GarbageGCal type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events
String GGarbagePickupName1 "Next Pickup [%s]" <calendar> (gCalendar) { caldavPersonal="calendar:GarbageGCal type:UPCOMING eventNr:1 value:NAME" }
DateTime GGarbagePickupTime1 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> (gCalendar) { caldavPersonal="calendar:GarbageGCal type:UPCOMING eventNr:1 value:START" }
String GGarbagePickupName2 "Following Pickup [%s]" <calendar> (gCalendar) { caldavPersonal="calendar:GarbageGCal type:UPCOMING eventNr:2 value:NAME" }
DateTime GGarbagePickupTime2 "Time [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> (gCalendar) { caldavPersonal="calendar:GarbageGCal type:UPCOMING eventNr:2 value:START" }
If I can get #2 working without any new revelations, I’m suspicious that caldav doesn’t work with open calendars. I haven’t seen anyone cite an example of it working without a login, including other similar garbage collection schedules on this site or others. I’ve partially been putting off re-filing a github issue until the openhab development environment issues were sorted out, but also wanted to be sure it was indeed an exception.
I don’t really want to keep flogging a dead horse - especially as it seems so few people are using that horse, but does anyone else have any ideas? I really would like to get this working as it would also include spoken reminders for the garbage day, as well as I would then import the kids’ school schedule to connect to their bedroom lights coming on at the appropriate time to get them going in the morning.
Thanks!