• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Default Calendar Module - Repeating calendar events with exceptions do not show

Scheduled Pinned Locked Moved Bug Hunt
3 Posts 2 Posters 426 Views 2 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    p1lspeda
    last edited by Apr 22, 2022, 6:29 AM

    Platform: Raspberry Pi 3B+
    Node Version [ 0.12.13 or later ]:

    node -v v16.14.2
    

    MagicMirror Version [ V1 / V2-Beta ]: latest
    Description: Our recycling bin is emptied every 2 weeks. I can download an iCalendar (https://eb-mainz.de/wir-kommen-zu-ihnen/abfallkalender). Either as a list of single dates “Apple Kalender und alle anderen Kalenderprogramme mit Einzelterminen."
    or as recurring dates "MS Outlook, Google Kalender etc. mit Terminserien (nicht für Apple Kalender)”*
    I download the second (recurring dates) and import the file into an extra google calendar. This google calendar is displayed on my MagicMirror.
    Most dates show up fine, except for predefined exceptions within the downloaded ICS-file.
    Google Calendar handles the exceptions just fine (my phone, webbrowser etc show the pick-up dates as intended). My MM however seems to ignore the exceptions.
    For example:
    Wednesday 20.04.2022 would have been a regular, bi-weekly pickup date for the recycling bin, as Monday, 18.04.2022 was Easter-Monday (and a public holiday in Germany), the pickup date was changed to Thursday 21.04.2022.
    All my devices (except MM) showed Thursday, 21.04.2022 as the pick-up day. MM insisted is was Wednesday, 20.04.2022.

    The downloaded ICS-File contains the following:

    BEGIN:VCALENDAR
    PRODID:-//Grafik-Partner GmbH//Muellmax 7.0 MIMEDIR//EN
    VERSION:2.0
    METHOD:PUBLISH
    BEGIN:VEVENT
    DTSTART;VALUE=DATE:20220112
    DTEND;VALUE=DATE:20220113
    DESCRIPTION:Entsorgungsbetrieb der Stadt Mainz\n
    	Zwerchallee 24\n
    	55120 Mainz\n
    	\n
    	Telefon: +49 6131 12 34 56 (Abfallberatung)\n
    	Telefax: +49 6131 12 34 83\n
    	\n
    	Der Entsorgungsbetrieb ist ein Eigenbetrieb der Stadt Mainz.
    LOCATION:XXXXX Mainz, XXXX
    RRULE:FREQ=WEEKLY;UNTIL=20230101T000000Z;
     INTERVAL=2;BYDAY=WE;WKST=MO
    RDATE;VALUE=DATE:
     20220421,
     20221006,
     20221103,
     20221229
    EXDATE;VALUE=DATE:
     **20220420**, <-- this the exception I'm talking about
     20221005,
     20221102,
     20221228
    TRANSP:TRANSPARENT
    SEQUENCE:0
    UID:16413062851@muellmax.de
    DTSTAMP:20220104T142445Z
    SUMMARY:EB Gelber Sack
    CLASS:PUBLIC
    CREATED:20211221T125452Z
    LAST-MODIFIED:20211221T125452Z
    URL:http://www.muellmax.de
    END:VEVENT
    END:VCALENDAR
    

    Steps to Reproduce:

    1. Download a calendar containing the pick-up dates from https://eb-mainz.de/wir-kommen-zu-ihnen/abfallkalender
      1.1) choose "MS Outlook, Google Kalender etc. mit Terminserien (nicht für Apple Kalender)"*
    2. Import it into google calendar as a seperate calendar
    3. Import this calendar into MM with default calendar module

    Expected Results:
    Identical entries in google calendar and MM
    Actual Results:
    MM doesn’t take exceptions, defined within the ICS-File into consideration
    Configuration:

                     {
                            module: "calendar",
                            position: "top_right",
                            config: {
                                    colored: false,
                                    coloredSymbolOnly: false,
                                    maximumEntries: 15,
                                    calendars: [
                                            {
                                                    url: 'xxx',
                                                    symbol: 'calendar', // BUNDESLIGA
                                            },
                                            {
                                                    url: 'xxx',
                                                    symbol: 'calendar', // GERMAN HOLIDAYS
                                            },
                                            {
                                                    url: 'xxx',
                                                    symbol: 'calendar', // MAIN GOOGLE CALENDAR
                                            },
                                            {
                                                    url: 'xxx',
                                                    symbol: 'calendar', // FORMULA 1 CALENDAR
                                            },
                                            {
                                                    url: 'https://calendar.google.com/calendar/ical/[thisisnoneofyourbusiness]group.calendar.google.com/private-[thisisnoneofyourbusiness]>
                                                    symbol: 'calendar', // EB MAINZ
                                            },
                                            {
                                                    url: 'xxx'
                                                    symbol: 'calendar', // PRO RUNDE
                                            },
                                            {
                                                    url: 'xxx'
                                                    symbol: 'calendar', // BUSINESS TRIPS
                                            },
                                    ],
                            },
    

    Additional Notes:
    A simple workaround is to just download the calendar with single entries
    “Apple Kalender und alle anderen Kalenderprogramme mit Einzelterminen.” and import that one into google-calendar. That works perfectly. Nevertheless it seems as if the default MM-calendar module (and MMM-CalendarExt2 for that matter, same issue) can’t handle exceptions within ics-calendars with repeating entries.

    Hope this helps. It’s not a deal-breaker, just something I have noticed.

    S 1 Reply Last reply Apr 22, 2022, 11:55 AM Reply Quote 0
    • S Offline
      sdetweil @p1lspeda
      last edited by Apr 22, 2022, 11:55 AM

      @p1lspeda we use a library, node-ical, to parse the ics and present dates that fit within the next year based on the ics rules.

      Sam

      How to add modules

      learning how to use browser developers window for css changes

      1 Reply Last reply Reply Quote 0
      • P Offline
        p1lspeda
        last edited by Apr 22, 2022, 1:48 PM

        Hi,
        thanks for your reply.
        It seems node-ical has an issue with parsing EXDATE Info within the ICS file.

        https://github.com/jens-maus/node-ical/issues/167

        He has the same problem.

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        1 / 1
        • First post
          1/3
          Last post
        Enjoying MagicMirror? Please consider a donation!
        MagicMirror created by Michael Teeuw.
        Forum managed by Sam, technical setup by Karsten.
        This forum is using NodeBB as its core | Contributors
        Contact | Privacy Policy