MagicMirror Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • Donate
    • Discord

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

    Bug Hunt
    2
    3
    173
    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
      p1lspeda last edited by

      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 Reply Quote 0
      • S
        sdetweil @p1lspeda last edited by

        @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

        Create a working config
        How to add modules

        1 Reply Last reply Reply Quote 0
        • P
          p1lspeda last edited by

          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
          • First post
            Last post
          Enjoying MagicMirror? Please consider a donation!
          MagicMirror created by Michael Teeuw.
          Forum managed by Paul-Vincent Roll and Rodrigo Ramírez Norambuena.
          This forum is using NodeBB as its core | Contributors
          Contact | Privacy Policy