• 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.

MMM-CalendarExt3

Scheduled Pinned Locked Moved Utilities
654 Posts 77 Posters 1.8m Views 81 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
    princemaxwell @sdetweil
    last edited by Mar 19, 2024, 8:50 PM

    @sdetweil when i disable the MMM-CalendarExt3 module, the errors are gone.

    All calendars are working fine and loading quickly in default calendar module.

    1 Reply Last reply Reply Quote 0
    • M Offline
      MMRIZE @princemaxwell
      last edited by Mar 19, 2024, 9:15 PM

      @princemaxwell
      CX3 doesn’t connect or fetch calendar server. That error probably has been caused by default calendar module.

      1 Reply Last reply Reply Quote 0
      • M Offline
        MMRIZE @princemaxwell
        last edited by MMRIZE Mar 20, 2024, 8:58 AM Mar 20, 2024, 8:49 AM

        @princemaxwell
        CX3*s do not use nodeJS at all, so they are not related to your error messages. The modules are executed on the browser level, not on the server-side node environment, so they could not affect server-side processes like calendar fetching.
        Your error message (UND_ERR_SOCKET) is caused by the undici node module; it may be used inside of the default calendar module to connect through HTTP/1.1. That error usually happens when the connection is closed by long waits or prior preemption.
        There is a weird thing. As far as I know, the default calendar module depends on node-ical, which uses axios instead of undici. So I wonder why and from where this error message comes.

        To make things simple clearly;

        1. Backup your current config.js in the safe area.
        2. Create a new config.js, and remove all other not-releated modules like MMM-Planetarium, MMM-soccer, … Leave only clock, calendar and MMM-CalendarExt3 modules.
        3. Begin with one or two calendars, not all the calendars.
        4. Try to execute MM again, and let’s see what happens.
        5. After confirmation that a small qty of calendars has no issue, add more calendars.
        6. After confirmation that there is no issue with the calendars, try adding more modules one by one.

        (A possible reason, I guess, is that your modules are racing to use the network/dest-server severely. For example, your calendars look being rescanned every minutes. You may need to rearrange the interval of the schedule.)

        S P 2 Replies Last reply Mar 20, 2024, 1:38 PM Reply Quote 0
        • S Offline
          sdetweil @MMRIZE
          last edited by Mar 20, 2024, 1:38 PM

          @MMRIZE calendar uses built in fetch to get the ics file. we do not have node-ical fetch it for us ( the prior ical lib did not provide fetch)

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          M 1 Reply Last reply Mar 20, 2024, 1:55 PM Reply Quote 0
          • M Offline
            MMRIZE @sdetweil
            last edited by Mar 20, 2024, 1:55 PM

            @sdetweil said in MMM-CalendarExt3:

            @MMRIZE calendar uses built in fetch to get the ics file. we do not have node-ical fetch it for us ( the prior ical lib did not provide fetch)

            If so, this is really weird where the undici module is used.

            S 1 Reply Last reply Mar 20, 2024, 2:00 PM Reply Quote 0
            • S Offline
              sdetweil @MMRIZE
              last edited by Mar 20, 2024, 2:00 PM

              @MMRIZE undici is the implementation code of fetch

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              1 Reply Last reply Reply Quote 0
              • P Offline
                princemaxwell @MMRIZE
                last edited by Mar 20, 2024, 3:02 PM

                @MMRIZE
                Thanks for your answer.

                I cleaned up my config.js and only had following modules in it:

                • alert
                • updatenotification
                • clock
                • calendar
                • MMM-CalendarExt3

                No matter how many calendars I have activated, the default calendar loads all entries quite quickly, although you can notice that the “large” calendars with many entries took a few seconds to load (sometimes up to 20-30 seconds).

                Nevertheless, I deleted the fetchInterval (31000) in the default calendar, so the default value of 300000 is now active.

                After the default calendar displayed all entries, it took at least another 10 minutes for them to appear in the MMM-CalendarExt3.

                Why is this taking so long? They are sent to MMM-CalendarExt3 via “broadcastEvents” or what?

                I took a look at the sizes of my calendar:

                • Calendar 1: 1,068,804 bytes
                • Calendar 2: 697,796 bytes
                • Calendar 3: 398,683 bytes
                • Calendar 4: 150,176 bytes
                • Calendar 5: 73,128 bytes
                • Calendar 6: 70,476 bytes
                • Calendar 7: 23,940 bytes
                • Calendar 8: 17,221 bytes

                Calendars 6-8 are displayed relatively quickly in MMM-CalendarExt3, calendar 5 a little later. The others require the previously mentioned 5-10 minutes.

                Could it have something to do with size?

                S M 2 Replies Last reply Mar 20, 2024, 3:08 PM Reply Quote 0
                • S Offline
                  sdetweil @princemaxwell
                  last edited by sdetweil Mar 20, 2024, 3:10 PM Mar 20, 2024, 3:08 PM

                  @princemaxwell can you show the console log of mm with the timestamps for the broadcasts from the default calendar?

                  be careful as these message now expose the calendar url string…

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  P 1 Reply Last reply Mar 20, 2024, 3:31 PM Reply Quote 0
                  • P Offline
                    princemaxwell @sdetweil
                    last edited by Mar 20, 2024, 3:31 PM

                    @sdetweil

                    No problem, i removed fragments from the share link and named them like my list above, sorted by size, cal-8 is the smallest filesize.

                    > magicmirror@2.26.0 start
                    > DISPLAY="${DISPLAY:=:0}" ./node_modules/.bin/electron js/electron.js
                    
                    [20.03.2024 15:28.52.845] [LOG]   Starting MagicMirror: v2.26.0
                    [20.03.2024 15:28.52.851] [LOG]   Loading config ...
                    [20.03.2024 15:28.52.856] [DEBUG] config template file not exists, no envsubst
                    [20.03.2024 15:28.52.862] [LOG]   Loading module helpers ...
                    [20.03.2024 15:28.52.864] [LOG]   No helper found for module: alert.
                    [20.03.2024 15:28.52.898] [LOG]   Initializing new module helper ...
                    [20.03.2024 15:28.52.898] [LOG]   Module helper loaded: updatenotification
                    [20.03.2024 15:28.52.900] [LOG]   No helper found for module: clock.
                    [20.03.2024 15:28.53.231] [LOG]   Initializing new module helper ...
                    [20.03.2024 15:28.53.232] [LOG]   Module helper loaded: calendar
                    [20.03.2024 15:28.53.234] [LOG]   No helper found for module: MMM-CalendarExt3.
                    [20.03.2024 15:28.53.235] [LOG]   All module helpers loaded.
                    [20.03.2024 15:28.53.244] [LOG]   Starting server on port 8080 ... 
                    [20.03.2024 15:28.53.275] [LOG]   Server started ...
                    [20.03.2024 15:28.53.278] [LOG]   Connecting socket for: updatenotification
                    [20.03.2024 15:28.53.280] [LOG]   Starting module helper: updatenotification
                    [20.03.2024 15:28.53.281] [LOG]   Connecting socket for: calendar
                    [20.03.2024 15:28.53.282] [LOG]   Starting node helper for: calendar
                    [20.03.2024 15:28.53.283] [LOG]   Sockets connected & modules started ...
                    [20.03.2024 15:28.53.918] [LOG]   Launching application.
                    [20.03.2024 15:28.57.031] [LOG]   Create new calendarfetcher for url: https://p63-caldav.icloud.com/published/2/MTA-cal-2 - Interval: 3600000
                    [20.03.2024 15:28.57.194] [LOG]   Create new calendarfetcher for url: https://p63-caldav.icloud.com/published/2/MTA-cal-4 - Interval: 3600000
                    [20.03.2024 15:28.57.198] [LOG]   Create new calendarfetcher for url: https://p63-caldav.icloud.com/published/2/MTA-cal-3 - Interval: 3600000
                    [20.03.2024 15:28.57.201] [LOG]   Create new calendarfetcher for url: https://p29-caldav.icloud.com/published/2/ODA-cal-1 - Interval: 3600000
                    [20.03.2024 15:28.57.205] [LOG]   Create new calendarfetcher for url: https://p63-caldav.icloud.com/published/2/MTA-cal-5 - Interval: 3600000
                    [20.03.2024 15:28.57.208] [LOG]   Create new calendarfetcher for url: https://i.cal.to/ical/3/borussiadortmund/bundesliga-spielplan/cal-6.ics - Interval: 3600000
                    [20.03.2024 15:28.57.217] [LOG]   Create new calendarfetcher for url: https://i.cal.to/ical/77/nrw/ferien/cal-8.ics - Interval: 3600000
                    [20.03.2024 15:28.57.221] [LOG]   Create new calendarfetcher for url: https://i.cal.to/ical/61/nrw/feiertage/cal-7.ics - Interval: 3600000
                    [20.03.2024 15:28.57.224] [INFO]  updatenotification: Updater Class Loaded!
                    [20.03.2024 15:28.57.225] [INFO]  updatenotification: Checking PM2 using...
                    [20.03.2024 15:28.57.227] [INFO]  Checking git for module: MMM-CalendarExt3
                    [20.03.2024 15:28.57.290] [INFO]  Checking git for module: MagicMirror
                    [20.03.2024 15:28.57.729] [INFO]  Calendar-Fetcher: Broadcasting 2 events from https://i.cal.to/ical/61/nrw/feiertage/cal-7.ics.
                    [20.03.2024 15:28.57.825] [INFO]  Calendar-Fetcher: Broadcasting 1 events from https://i.cal.to/ical/77/nrw/ferien/cal-8.ics.
                    [20.03.2024 15:28.59.069] [INFO]  Calendar-Fetcher: Broadcasting 5 events from https://i.cal.to/ical/3/borussiadortmund/bundesliga-spielplan/cal-6.ics.
                    [20.03.2024 15:29.00.814] [INFO]  Calendar-Fetcher: Broadcasting 4 events from https://p63-caldav.icloud.com/published/2/MTA-cal-5.
                    [20.03.2024 15:29.00.869] [INFO]  updatenotification: You are using pm2 with MagicMirror
                    [20.03.2024 15:29.02.223] [INFO]  Calendar-Fetcher: Broadcasting 1 events from https://p63-caldav.icloud.com/published/2/MTA-cal-4.
                    [20.03.2024 15:29.04.265] [INFO]  Calendar-Fetcher: Broadcasting 7 events from https://p63-caldav.icloud.com/published/2/MTA-cal-3.
                    [20.03.2024 15:29.49.438] [INFO]  Calendar-Fetcher: Broadcasting 8 events from https://p63-caldav.icloud.com/published/2/MTA-cal-2.
                    [20.03.2024 15:30.30.417] [INFO]  Calendar-Fetcher: Broadcasting 12 events from https://p29-caldav.icloud.com/published/2/ODA-cal-1.
                    
                    1 Reply Last reply Reply Quote 1
                    • M Offline
                      MMRIZE @princemaxwell
                      last edited by MMRIZE Mar 20, 2024, 4:00 PM Mar 20, 2024, 3:50 PM

                      @princemaxwell
                      Now I know what happens. Your symptom is not related with any errors.
                      Let me explain the process.

                      1. Each calendar parsing/fetching in the calendar module will take some time, a few seconds or some dozen seconds. How long will it take is unpredictable.
                      2. The default calendar module will refresh itself and broadcast accumulated events on any calendar fetched. So, in some unlucky cases, the module may flicker due to too-short-term refreshing.
                      3. CX3’s view is very complex and heavy for redrawing frequently. To avoid that flickering, CX3 will wait some time after any broadcasted event arrives (waitFetch: 5000ms by default) to check whether the following broadcasting will arrive in the short term. If no other followed broadcasting happens, stop waiting and process collected events at that moment and draw the view.
                      4. This means that if you have 8 calendars and 5 calendars complete fetching in 4 seconds and the other 3 calendars may take over 10 seconds, only the events from the earlier 5 calendars will be collected and prepared to show before the first rendering time(waitFetch 5000ms).
                      5. After the first rendering, the remaining 3 calendars may complete fetching. CX3 receives those events but does not render them instantly to avoid flickering. The rendering will be done every refreshInterval (by default 10 minutes) with stocked events that are received during that period.
                      6. That is the reason why some of your calendars will be shown the first time, but others are applied after 10 minutes.

                      So, you may have these options.

                      1. Do nothing. Just wait 10 minutes; the lazy events will normally be applied to CX3 from the second refreshing cycle. Calendar events are not regarded as needing urgent, instant reflection. Your MM may stay on for a long time. Ten minutes after the first bootup will not be a big issue, and your family will not care.

                      2. Or Give enough long waitFetch. Your log showed that almost 2 minute is needed to complete fetching 8 calendars entirely. waitFetch: 1000 * 60 * 2 may work. (The default value is 5000ms, not 300000) (This means you need 2 minutes before drawing the CX3 view at first time.)

                      3. Or Give shorter refreshInterval to redraw and reflect the change of events. The default value is 1000 * 60 * 10 (10 minutes) But you can assign shorter. But 99.99% of refreshing will deal unchanged same events. So I think it is a kind of waste. Anyway, if you want instant reflection, give it shorter value.

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 47
                      • 48
                      • 49
                      • 50
                      • 51
                      • 65
                      • 66
                      • 49 / 66
                      49 / 66
                      • First post
                        484/654
                        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