iCloud Calendar integration

Great post and the calendars seem to work fine. But I can’t add calenders to the dashboard in a friendly way for the calendar type ‘custom:calendar-card’ is unknown. Any help would be nice.

For ‘custom:calendar-card’ to work, you need the following plugin: https://github.com/ljmerza/calendar-card

I’ve a question myself:

The iCloud calendar integration works pretty good, thank y’all for that (also for the really concise instructions how to get the necessary URLs!).

So, in theory, i can now get all my iCloud calendars into Home Assistant - yay :slight_smile:

However, i’ve only one (shared) calendar which i’m interested in and have that one also configured:

calendar:
  - platform: caldav
    username: !secret icloud_username
    password: !secret icloud_app_specific_password
    url: !secret icloud_url
    calendars:
      - Kalender-icloud

That one’s working fine - however, i want to also include a “public” iCloud calendar, which is available via an URL:

https://p05-calendars.icloud.com/holiday/DE_de.ics

“Deutsche Feiertage” - “German public holidays”

I didn’t manage to add this one, yet - what i’ve tried so far is adding another calendar in the configuration (via the ics-Integration from HACS):

  - platform: ics
    calendars:
      - name: Feiertage
        url: https://p05-calendars.icloud.com/holiday/DE_de.ics
        includeAllDay: true

However, the calendar didn’t turn up :frowning:
Any pointers?

Found it, thank you!

I found this thread as I’ve been struggling to get calendar.family working in my setup. In the end I renamed the calendar in iCloud to something else and now working.

Same issue here. CalDav works for private calendars. However, much more interested in a public calendar. Current get an error:
“Entity id already exists - ignoring: calendar.family”
I don’t want to rename the calendar in iCloud. Ics could be one option: ICS Calendar platform

So it seems (to me) the custom calendar doesn’t work anymore in the latest version of Home Assistant. I now use the new Lovelace calendar card but I liked the one I had better. Any ideas how to get the old look back?

Im using iCloud Calendar and Atomic Calendar Add-on. Works great.

And do you use something like this as well?

dateBottomFormat: ddd
dateTopFormat: DD
entities:

  • entity: calendar.familie
    name: Gezinsagenda
    hideHeader: false
    hideTime: false
    numberOfDays: ‘2’
    progressBar: true
    showEventOrigin: false
    showLocation: false
    showLocationIcon: false
    showMultiDay: false
    startFromToday: false
    timeFormat: ‘HH:mm’
    title: Gezinsagenda
    type: ‘custom:calendar-card’
type: 'custom:atomic-calendar-revive'
entities:
  - entity: calendar.werk
    color: red
  - entity: calendar.vangrail
    color: red
  - entity: calendar.werk_admin
    color: orange
firstDayOfWeek: 1
maxDaysToShow: 10
name: Werk
locationLinkColor: black
dateFormat: LL
defaultMode: Event
showDeclined: true
showDate: true
sortByStartTime: true
showRelativeTime: true
untilText: g
showLastCalendarWeek: true
disableCalEventLink: false
noEventsForTodayText: Nothing
fullDayEventText: All Day
showCurrentEventLine: true
showMonth: true
showFullDayProgress: true
showWeekDay: true
showNoEventsForToday: true
showEventIcon: false
hideFinishedEvents: true
disableCalLocationLink: false
dimFinishedEvents: true
showLoader: true
hoursFormat: 'HH:mm'
showProgressBar: true
progressBarColor: red
showColors: true
1 Like

Aaaah, ok, that works. Thank you!!!

1 Like

Does this calendar has the same problem as the calendar used to select the dates for logbook entries? This date selector always has the week start on sunday, which is not acceptable because the week starts on Monday. :slight_smile:

It does indeed start on sunday, but that is not really my problem. I do not want the calender view, just the items for today and tomorrow.

anyone know how to enable subscribed calendars from iCloud?

If you ever find out, let me know - that’s something i’ve tried (and failed) myself (also asked in this thread, but haven’t gotten a reply/hint).

1 Like

I’m struggling a bit with this integration. I followed the instructions linked above and got the “magic URL” to a shared, private iCloud calendar that we’ll call “Automated Family.” Added the following config with and without a calendars block:

calendar:
  - platform: caldav
    username: !secret icloud_login
    password: !secret icloud_password
    url: !secret icloud_url

I fat-fingered the URL initially and got an error in the log, so it seems to be picking up the config. After fixing the URL, there are no errors in the log, but also no calendar entities. I also searched for variations of cal, dav, and “Automated Family” in the entities list to no avail, and the “Calendar” tab doesn’t show anything (not sure if it should or not).

There aren’t many recent updates to this thread, so not sure the problem is the fact that this is a shared iCloud calendar between my wife and I, or something has gone wrong on the HA or iCloud side. Any help would be appreciated as my goal is to get our “family calendar” displayed somewhere so that the kids can see it and see their weekly activities vs. writing them on the chalkboard every week. A successful execution likely makes the case for an e-Ink display project as well :slight_smile:

Thanks!

perhaps you could try this url field: url: https://caldav.icloud.com

YES!!! Much like T.S. Eliot I have done a grand exploration only to arrive where I started and know the place for the first time. Changing the URL and ignoring all the fancy curl action above works perfectly!

1 Like

Hi! I’m trying to add my calendar but iy seems i’m missing something.

Here is my conf:

#calendrier icloud
calendar:
  - platform: caldav
    username: my apple id
    password: my apple pass
    url: webcal://p31-caldav.icloud.com/published/2/lotsOfCharacters

And the log:

Logger: homeassistant.components.calendar
Source: components/caldav/calendar.py:77
Integration: Calendrier (documentation, issues)
First occurred: 16:12:43 (1 occurrences)
Last logged: 16:12:43

Error while setting up caldav platform for calendar
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 200, in _async_setup_platform
    await asyncio.shield(task)
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/caldav/calendar.py", line 77, in setup_platform
    calendars = client.principal().calendars()
  File "/usr/local/lib/python3.8/site-packages/caldav/davclient.py", line 124, in principal
    return Principal(self)
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 381, in __init__
    cup = self.get_properties([dav.CurrentUserPrincipal()])
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 227, in get_properties
    response = self._query_properties(props, depth)
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 130, in _query_properties
    return self._query(root, depth)
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 164, in _query
    ret = getattr(self.client, query_method)(
  File "/usr/local/lib/python3.8/site-packages/caldav/davclient.py", line 138, in propfind
    return self.request(url or self.url, "PROPFIND", props,
  File "/usr/local/lib/python3.8/site-packages/caldav/davclient.py", line 250, in request
    r = requests.request(method, url, data=to_wire(body),
  File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 649, in send
    adapter = self.get_adapter(url=request.url)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 742, in get_adapter
    raise InvalidSchema("No connection adapters were found for {!r}".format(url))
requests.exceptions.InvalidSchema: No connection adapters were found for 'webcal://p31-caldav.icloud.com/published/2/LotdsOfCharacters/'

I’ve tried with url https://caldav.icloud.com/published/2/lotsofcharacters with no luck:

Logger: homeassistant.components.calendar
Source: components/caldav/calendar.py:77
Integration: Calendrier (documentation, issues)
First occurred: 16:21:57 (1 occurrences)
Last logged: 16:21:57

Error while setting up caldav platform for calendar
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 200, in _async_setup_platform
    await asyncio.shield(task)
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/caldav/calendar.py", line 77, in setup_platform
    calendars = client.principal().calendars()
  File "/usr/local/lib/python3.8/site-packages/caldav/davclient.py", line 124, in principal
    return Principal(self)
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 381, in __init__
    cup = self.get_properties([dav.CurrentUserPrincipal()])
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 227, in get_properties
    response = self._query_properties(props, depth)
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 130, in _query_properties
    return self._query(root, depth)
  File "/usr/local/lib/python3.8/site-packages/caldav/objects.py", line 164, in _query
    ret = getattr(self.client, query_method)(
  File "/usr/local/lib/python3.8/site-packages/caldav/davclient.py", line 138, in propfind
    return self.request(url or self.url, "PROPFIND", props,
  File "/usr/local/lib/python3.8/site-packages/caldav/davclient.py", line 277, in request
    raise ex
caldav.lib.error.AuthorizationError: AuthorizationError at 'https://caldav.icloud.com/published/2/lotsofcharacters', reason 'Unauthorized'

Nevermind, i’ve managed to make it work!

Here is the correct config:

#calendrier icloud
calendar:
  - platform: caldav
    username: apple id
    password: generated with appleid.apple.com
    url: https://caldav.icloud.com
    calendars:
      - test

The name of the calendars has to be the same that icloud’s.