I’m building a family dashboard in Home Assistant. The kind of thing you stick on a tablet in the kitchen and everyone can glance at to see what’s happening. First thing on the list: calendars.
We have four Apple accounts and a shared Family calendar. CalDAV handles this nicely — it’s the protocol iCloud uses natively, so there’s no syncing hacks or third-party bridges involved.
App-Specific Passwords
You can’t use your regular iCloud password. Apple requires an app-specific password for third-party access. For each of your Apple accounts:
- Go to appleid.apple.com
- Sign-In and Security → App-Specific Passwords
- Generate one and label it “Home Assistant” or similar
Adding CalDAV
In Home Assistant: Settings → Devices & Services → Add Integration → CalDAV
- URL:
https://caldav.icloud.com/.well-known/caldav - Username: Your iCloud email
- Password: The app-specific password
HA discovers all calendars on that account automatically. Each becomes a calendar.* entity. Repeat for each family member.
The shared Family calendar doesn’t have its own Apple ID — it lives under whichever account is the Family Sharing organiser. It’ll probably appear under multiple accounts since they’re all subscribed. Just pick one instance for the dashboard.
Atomic Calendar Revive
The built-in calendar card shows a monthly grid which isn’t great for a quick “what’s on today” glance. Atomic Calendar Revive from HACS gives you an agenda-style list instead.
Install via HACS → Frontend, search for it, install, restart HA. You might need to clear your browser cache.
type: custom:atomic-calendar-revive
name: Family Calendar
entities:
- entity: calendar.family
color: '#2ECC71'
- entity: calendar.person1
color: '#3498DB'
- entity: calendar.person2
color: '#E74C3C'
- entity: calendar.person3
color: '#F39C12'
- entity: calendar.person4
color: '#9B59B6'
maxDaysToShow: 14
showLocation: true
showMonth: true
dimFinishedEvents: true
finishedEventOpacity: 0.6
showCurrentEventLine: true
showProgressBar: true
sortByStartTime: true
Each family member gets a colour so you can tell at a glance whose event is whose. dimFinishedEvents fades out past events which keeps the focus on what’s coming next.
Next
Next up I’m building a custom concentric horseshoe gauge that shows the entire solar/battery system on a single card. Part 2: Custom Energy Gauge →
The full dashboard config is in the GitHub repo.