Read the statement by Michael Teeuw here.
Sync private iCloud calendar with MagicMirror
-
@Doubleve You don’t need these links, since
vdircsyncer
discovers your calendars automatically on iCloud and identifies them by their IDs.It is explained in the “Let
vdirsyncer
discover the collections and do the inital sync” section of the walkthrough.You mirror accesses the calendar saved to a file on your mirror.
-
@Beh error for discover
Traceback (most recent call last):
File “/usr/bin/vdirsyncer”, line 7, in
from vdirsyncer.cli import main
ImportError: No module named ‘vdirsyncer’ -
@Doubleve Did you change the first line of the file to
#!/usr/bin/python3
? -
everything is good
-
That sounds good for me. Does it work with reminders on the same way?
-
@Doubleve Hmmm…
Maybe you have to allow your localhost address to the MagicMirror
ipWhiteList
option in your config. Just addipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1"],
to your config right before themodules
option. Maybe the calendar module can not access the.ics
file if this is not allowed… -
@l0cal Yes this should work.
Just add
"VTODO"
to theitem_types
array in yourvdirsyncer
config as described in the vdirsyncer docs here: https://vdirsyncer.pimutils.org/en/stable/config.html?highlight=VEVENT#storage-caldav. -
@Beh yeah that are good news for me.
in the last few weeks I was looking for a solution for it and I did not find anything
-
I have a question
So far I managed to sync one calendar from one iCloud account, but I would like to sync also a second calendar from a second iCloud account, is this possible?
Thanks
Ricardo -
Hey @ribermon!
Yes, this should be possible. You just have to add another configuration scheme for your second icloud account to the vdirsyncer config. I didn’t try it, but something like that should work:
# vdirsyncer configuration for MagicMirror. # # Move it to ~/.vdirsyncer/config or ~/.config/vdirsyncer/config and edit it. # Run `vdirsyncer --help` for CLI usage. # # Optional parameters are commented out. # This file doesn't document all available parameters, see # http://vdirsyncer.pimutils.org/ for the rest of them. [general] # A folder where vdirsyncer can store some metadata about each pair. status_path = "~/.vdirsyncer/status/" # CALDAV Sync for iCloud 1 [pair iCloud1_to_MagicMirror] a = "Mirror_iCloud1" b = "iCloud1" collections = ["HERE-GOES-THE-UUID-OF-THE-CALENDAR-YOU-WANT-TO-SYNC"] # Calendars also have a color property metadata = ["displayname", "color"] [storage Mirror_iCloud1] # We need a single .ics file for use with the mirror (Attention! This is really slow on big amounts of events.) type = "singlefile" # We'll put the calendar file to a readable location for the calendar module path = "/home/pi/MagicMirror/modules/calendars/%s.ics" [storage iCloud1] type = "caldav" url = "https://caldav.icloud.com/" # Authentication credentials username = "YOUR-ICLOUD-EMAIL-ADDRESS" password = "HERE-GOES-YOUR-APP-SPECIFIC-ICLOUD-PASSWORD" # We only want to sync in the direction TO the mirror, so we make iCloud readonly read_only = true # We only want to sync events item_types = ["VEVENT"] # We need to keep the number of events low, so we'll just sync the next month # Adjust this to your needs start_date = "datetime.now() - timedelta(days=1)" end_date = "datetime.now() + timedelta(days=30)" # CALDAV Sync for iCloud 2 [pair iCloud2_to_MagicMirror] a = "Mirror_iCloud2" b = "iCloud2" collections = ["HERE-GOES-THE-UUID-OF-THE-CALENDAR-YOU-WANT-TO-SYNC"] # Calendars also have a color property metadata = ["displayname", "color"] [storage Mirror_iCloud2] # We need a single .ics file for use with the mirror (Attention! This is really slow on big amounts of events.) type = "singlefile" # We'll put the calendar file to a readable location for the calendar module path = "/home/pi/MagicMirror/modules/calendars/%s.ics" [storage iCloud2] type = "caldav" url = "https://caldav.icloud.com/" # Authentication credentials username = "YOUR-ICLOUD2-EMAIL-ADDRESS" password = "HERE-GOES-YOUR-APP-SPECIFIC-ICLOUD2-PASSWORD" # We only want to sync in the direction TO the mirror, so we make iCloud readonly read_only = true # We only want to sync events item_types = ["VEVENT"] # We need to keep the number of events low, so we'll just sync the next month # Adjust this to your needs start_date = "datetime.now() - timedelta(days=1)" end_date = "datetime.now() + timedelta(days=30)"