Sync private iCloud calendar with MagicMirror



  • 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 add ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1"], to your config right before the modules 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 the item_types array in your vdirsyncer 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)"
    


  • This post is deleted!


  • @Beh I manage to discover the calendars from my second iCloud account but then I don’t manage to sync my calendars there, any idea, thanks



  • @ribermon No I have no idea. But since this is actually a vdirsyncer-problem and has nothing to do with the mirror itself, I suggest you dig the vdirsyncer-Documentation:

    https://vdirsyncer.pimutils.org/en/stable/



  • Hi Beh

    Sorry if I´m too newbie… I´m following your step-by step and I get stuck in one place…

    When creating a config file, I type:

     touch ~/.vdirsyncer/config
    

    and I get:
    Can´t do ‘touch’ on ‘/home/pi.vdirsyncer/config’: The file or directory doesn´t exist

    What am I doing wrong?

    Thanks.