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 frequently refreshes

    Scheduled Pinned Locked Moved General Discussion
    25 Posts 3 Posters 1.7k Views 3 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.
    • D Offline
      DarrenO 0
      last edited by

      The default Calendar module on my MM keeps randomly refreshing multiple times.
      The issue started prior to the last MM update and I thought the issue would be fixed post upgrading to 2.33, but the module still does it.

      My MM was also running on Debian12 on an Asus NUC and has worked without issue since the previous MM version.
      With the issue continuing post 2.33, I thought i’d upgrade to Debian13, but the issue persists.

      My config.js file has a fetchInterval value of 300000ms (5min) for the calendar module.

      I took a video of showing the occurrence, but the file is too big to upload.

      Would someone have any idea or an explanation as to why it would behave like this?

      S 1 Reply Last reply Reply Quote 0
      • S Offline
        sdetweil @DarrenO 0
        last edited by

        @DarrenO-0 can you post the config for calendar, xxx out your urld

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        D 1 Reply Last reply Reply Quote 0
        • D Offline
          DarrenO 0 @sdetweil
          last edited by

          @sdetweil
          Thanks Sam.
          Here is my config for the default calendar module:

          {
          module: “calendar”,
          header: “Upcoming Events”,
          position: “top_left”,
          config: {
          maximumEntries: 10000, // 10
          maximumNumberOfDays: 120, // 365 (30May25 - changed from 50)
          pastDaysCount: 0, // 0
          displaySymbol: true, // true
          defaultSymbol: “calendar”, // calendar
          showLocation: true, // false
          maxTitleLength: 50, // 25
          maxLocationTitleLength: 50, // 25
          wrapEvents: true, // false
          wrapLcoationEvents: false, // false
          maxTitleLines: 3, // 3
          maxEventTitleLines: 3, // 3
          fetchInterval: 300000, // 300000 (5 minutes)
          animationSpeed: 2000, // 2000 (2 seconds)
          fade: false, // true
          fadePoint: 0.25, // 0.25
          tableClass: “small”, // small,xsmall, medium, large, xlarge
          displayRepeatingCountTitle: false, // false
          dateFormat: “MMM Do”, // MMM Do
          dateEndFormat: “HH:mm”, // HH:mm
          showEnd: true, // true
          showEndsOnlyWithDuration: false, // false
          fullDayEventDateFormat: “MMM Do”, // MMM Do
          timeFormat: “relative”, // relative, absolute, dateheaders
          getRelative: 6, // 6, 0=absolute
          urgency: 7, // 7
          broadcastEvents: true, // true
          hidePrivate: false, // false
          hideOngoing: false, // false
          broadcastPastEvents: true, // false
          sliceMultiDayEvents: false, // false
          nextDaysRelative: false, // false
          limitDays: 0, // 0
          limitDaysNeverSkip: false, // false
          flipDateHeaderTitle: false, // false=left, true=right
          hideTime: false, // false
          hideDuplicates: true, // true
          showTimeToday: false, // false
          coloredBorder: false, // false
          coloredBackground: false, // false
          updateOnFetch: true, // true
          coloredText: false,
          coloredSymbol: true,
          customEvents: [
          {keyword: ‘Birthday’, symbol: ‘cake’, color: ‘White’},
          {keyword: ‘Greens’, symbol: ‘recycle’, color: ‘Orange’},
          {keyword: ‘Recycling’, symbol: ‘recycle’, color: ‘Green’},
          {keyword: “Anniversary”, symbol: ‘ring’, color: ‘Gold’},
          ],
          tableClass: “xsmall”,
          calendars: [
          {
          // Added : 26-Apr-23
          color: “#8B0000”, // dark red
          symbol: “users”,
          url: ‘https://calendar.google.com/calendar/ical/user1/basic.ics’,
          },
          {
          // Added : 26-Apr-23
          color: “#00008B”, // dark blue
          symbol: “male”,
          url: ‘https://calendar.google.com/calendar/ical/user2/basic.ics’,
          },
          {
          // Added : 26-Apr-23
          color: “#A020F0”, // purple
          symbol: “female”,
          url: ‘https://calendar.google.com/calendar/ical/user3/basic.ics’,
          },
          {
          // Added : 26-Apr-23
          color: “#023020”, // green
          symbol: “male”,
          url: ‘https://calendar.google.com/calendar/ical/user4/basic.ics’,
          },
          ]
          }
          },

          S D 2 Replies Last reply Reply Quote 0
          • S Offline
            sdetweil @DarrenO 0
            last edited by sdetweil

            @DarrenO-0 also can you look at the output of npm start or however you start MagicMirror
            And find the messages

            Broadcasting xxx messages for url xxxx

            Collect 15 of those messages either the timestamp
            Xxx out the url string, or match them to your 4 utls
            These messages should be on the fetchInterval time cycle

            Each url fetch is done separately, and they contribute to the shown list of events immediately , which may cause a visual flash

            Looking at the code, it uses fixed timers which is restarted for the next cycle after processing this cycle. So that means longer/larger calendar lists will take longer than shorter ones. This will cause the fetch cycles to drift apart and constantly change
            I’m guessing is this is the randomness

            The log messages should show consistent cycle times for an individual url, but varying separation between url fetches
            If your system is low on memory and utilizes swap on an sd card this could also affect processing time for larger calendar memory requirements, causing additional drift

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            1 Reply Last reply Reply Quote 0
            • D Offline
              DarrenO 0 @DarrenO 0
              last edited by

              Thanks Sam.
              I get the requested information later today and add it the conversation.

              Just to clarify the “randomness” of the refresh that I am experiencing, the listing of the calendar events would temporarily disappear and reappear as would be expected with a refresh cycle, but it would do it repeatedly in quick succession/constantly do it.

              I took a ~45sec video of the issue, but the video is 86MB and i was unable to upload.
              Is there somewhere I can upload it to?

              I run two instances of MM from the host - the first one is the primary instance, which is the one experiencing the issue. This is viewed directly on a monitor attached to the host.
              The second instance is only viewable and viewed from a browser (Chrome) on my computer.

              I also view the first instance on my computer via a second browser tab and use an Extension to switch/rotate between the two tabs on 5 min intervals. The extension does have an option to refresh/reload the next tab to be displayed but I have not enabled this feature, knowing that it would force a pull of the calendar.

              My MMs start with the following commands :
              pm2 start ~/MagicMirror/installers/pm2_MagicMirror1.json
              pm2 start ~/MagicMirror/installers/pm2_MagicMirror2.json

              {
                "apps" : [{
                  "name"        : "MagicMirror1",
                  "cwd"         : "/home/user",
                  "script"      : "/home/user/MagicMirror/installers/mm1.sh",
                  "watch"       : ["/home/user/MagicMirror/config/config1.js"]
                }]
              }
              
              {
                "apps" : [{
                  "name"        : "MagicMirror2",
                  "cwd"         : "/home/user",
                  "script"      : "/home/user/MagicMirror/installers/mm2.sh",
                  "watch"       : ["/home/user/MagicMirror/config/config2.js"]
                }]
              }
              
              

              The bash scripts referenced in the .json files above, are :

              #!/bin/bash
              cd /home/user/MagicMirror
              export MM_CONFIG_FILE=config/config1.js
              export MM_PORT=8081
              
              if [ $(ps -ef | grep -v grep | grep -i -e xway -e labwc | wc -l) -ne 0 ]; then
                 npm run start:wayland
              else
                 DISPLAY=:0 npm start
              fi
              
              #DISPLAY=:0 npm start
              
              #!/bin/bash
              cd /home/user/MagicMirror
              export MM_CONFIG_FILE=config/config2.js
              export MM_PORT=8082
              npm run server
              
              #DISPLAY=:0 npm start
              

              I only experience the random/constant refresh issue with the first MM instance running the default Calendar module.
              The second instance runs a different calendar module, MMM-MonthlyCalendar from kolbyjack, for a different Google Calendar that is not one of the four accessed by the first instance.

              S 2 Replies Last reply Reply Quote 0
              • S Offline
                sdetweil @DarrenO 0
                last edited by

                @DarrenO-0 the calendar fetch is done on the server side,
                All browsers access that same data

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                D 1 Reply Last reply Reply Quote 0
                • S Offline
                  sdetweil @DarrenO 0
                  last edited by

                  @DarrenO-0 those calendar modules fetch the days themselves in their own way

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  1 Reply Last reply Reply Quote 0
                  • D Offline
                    DarrenO 0 @sdetweil
                    last edited by

                    @sdetweil
                    i forgot to mention that i experience the same constant refresh/reload issue on both the host and browser instances of the MM that displays the default calendar module, so i guess it’s not isolated to browser on my PC where I view both MM instances.

                    What would the command be that I need to run to view the npm output?

                    S 1 Reply Last reply Reply Quote 0
                    • S Offline
                      sdetweil @DarrenO 0
                      last edited by sdetweil

                      @DarrenO-0 as MagicMirror is started by pm2 the command would be

                      pm2 logs —lines=xxxx
                      

                      Two dashes in front of lines
                      Where xxxx is the number of most recent lines of output, default 15

                      You can also examine the files the logs are collected in,
                      In the ~/.pm2/logs. Folder, notice the . in front of pm2

                      The fact that you see it on other browsers confirms to
                      Me that this is fetch timing cycle related.
                      If you look at both displays at once, my guess is the refresh at the same time

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      D 1 Reply Last reply Reply Quote 0
                      • D Offline
                        DarrenO 0 @sdetweil
                        last edited by

                        @sdetweil
                        I restored my MM from an image i took of it from prior to upgrading to Debian 13 and, so far, I am not experiencing the same refresh.
                        I’ll keep an eye on things over the next few hours and see if the issue re-occurs.

                        S 1 Reply Last reply Reply Quote 0
                        • S Offline
                          sdetweil @DarrenO 0
                          last edited by

                          @DarrenO-0 thx. Id really like to see the logs from both for the event broadcast cycle

                          There was a big calendar parser change in. 33 and another coming in. 34

                          Sam

                          How to add modules

                          learning how to use browser developers window for css changes

                          D 1 Reply Last reply Reply Quote 0
                          • M Offline
                            michaelarnauts
                            last edited by

                            I just made this github issue to track this issue.

                            https://github.com/MagicMirrorOrg/MagicMirror/issues/3971

                            S 1 Reply Last reply Reply Quote 0
                            • S Offline
                              sdetweil @michaelarnauts
                              last edited by

                              @michaelarnauts I replied to it, but there you have a different complaint.

                              The system design is
                              Pull the iCal file via the URL
                              It’s whatever events the source calendar wants to send , we have no control , it’s all text

                              We convert that to a usable list
                              And then figure out the repeating events and get a list that could be displayed, expired and not , as of right this second

                              Then we send that list out to other modules to use
                              MMM-CalendarExt3 for example, which displays a wall cal view, using the events in view expired or not

                              Then we process the not expired list and display the xx that you wanted

                              And repeat that whole process for the next fetchInterval
                              Once every xx minutes or whatever you have it set to

                              For each URL configured , we do the exact same process, each sending events when they are fetched. One URL processor doesn’t know about the next, they ALL run independently

                              Sam

                              How to add modules

                              learning how to use browser developers window for css changes

                              M 1 Reply Last reply Reply Quote 0
                              • D Offline
                                DarrenO 0 @sdetweil
                                last edited by

                                @sdetweil said in Default Calendar module frequently refreshes:

                                @DarrenO-0 thx. Id really like to see the logs from both for the event broadcast cycle

                                There was a big calendar parser change in. 33 and another coming in. 34

                                I’d upgraded to .33 in mid-Oct and had only upgraded Debian from 12 to 13 earlier this month but don’t recall noticing the issue prior to the OS upgrade.

                                i’ll see how i go with it under Debian 12 over the weekend and probably re-upgrade to Debian 13 early next week to then see if the issue re-presents itself.
                                Interestingly, the calendar that contains the most events is the one that was listed in the pm2 logs when the host was issue under Debian 13.
                                Now that the system is back under Debian 12, I’ll recheck the logs to see if the same notification in the pm2 logs is listed.

                                One item i also noted in the pm2 logs was it identified that pm2 was out of date and i need to upgrade.
                                I’m not 100% sure, but I think my MM is currently on 6.0.6, and 6.0.13 is the latest stable version available.
                                I did attempt to upgrade pm2 from the instructions at pm2.io using “npm install pm2@latest -g” or “sudo npm install pm2@latest -g” and though it appeared to upgrade, it always returned an error that “-g” was an unknown command or option.
                                When i then run pm2 --version, it still reported that i was running 6.0.6.

                                S 2 Replies Last reply Reply Quote 0
                                • S Offline
                                  sdetweil @DarrenO 0
                                  last edited by

                                  @DarrenO-0 on the pm2 side there are two parts

                                  the code on the disk
                                  and the part running

                                  to change the part running
                                  you need to execute

                                  sudo pm2 updatePM2 
                                  

                                  Sam

                                  How to add modules

                                  learning how to use browser developers window for css changes

                                  1 Reply Last reply Reply Quote 0
                                  • S Offline
                                    sdetweil @DarrenO 0
                                    last edited by

                                    @DarrenO-0 I rejected your post w the log entries, see the notification message I sent

                                    Sam

                                    How to add modules

                                    learning how to use browser developers window for css changes

                                    D 2 Replies Last reply Reply Quote 0
                                    • D Offline
                                      DarrenO 0 @sdetweil
                                      last edited by

                                      @sdetweil said in Default Calendar module frequently refreshes:

                                      @DarrenO-0 I rejected your post w the log entries, see the notification message I sent

                                      The calendar entries for the logs were unique.
                                      I removed the true component of the email address prior to the “@” and replaced them with calendaruser1… calendaruser4

                                      Incidentally, i’ve been back through the config.js file for the default calendar and found that I had specified tableClass= twice.
                                      The fIrst instance had a value of “small” with the bulk of the other options.
                                      The second instance had a value of “xsmall” and was between the customEvents[] and calendars[] arrays.

                                      I removed the second instance and changed the value of the first to “xsmall”.
                                      Saving the config automatically restarted MM and it appears to have resolved the matter as it hasn’t repeated the issue in the last hour, but i’ll continue to monitor over the next couple of days.
                                      Not sure how that one line could have caused the issue… Any ideas???

                                      S 1 Reply Last reply Reply Quote 0
                                      • D Offline
                                        DarrenO 0 @sdetweil
                                        last edited by

                                        @sdetweil
                                        one thing i’ve now noticed since removing the duplicate tableClass entry in the calendar module’s config, when i now run :
                                        pm2 logs --lines=15
                                        i am now seeing the Broadcasting ### events entries calendars update on the scheduled intervals.

                                        Prior, while i was having the issue, i would see a constant updating of the live view of pm2 logs.

                                        1 Reply Last reply Reply Quote 0
                                        • M Offline
                                          michaelarnauts @sdetweil
                                          last edited by

                                          @sdetweil

                                          That makes sense, but I see a lot more updates then what you describe here.
                                          I’ve added a screenshot of the updates I get to my github issue, and I’ve added it here as well. (note that all the messages have the same length, and some are a few seconds apart.

                                          I’m not sure how to proceed in troubleshooting. When I enable debug logging, it is outputting a LOT (the whole ics file contains data from years ago).

                                          f5e11a58-e0dc-46db-8b6b-ecc1a1d64bbd-image.png

                                          S 1 Reply Last reply Reply Quote 0
                                          • S Offline
                                            sdetweil @DarrenO 0
                                            last edited by

                                            @DarrenO-0 sorry, not quite sure what you’ve said here

                                            You specified tableClass twice in the config of a single calendar module declaration?

                                            JavaScript should take the second, and ignore the first
                                            JSON.parse() should overlay the first w the second

                                            And tableClass is only used in the presentation of the events long after the broadcast message is sent

                                            Sam

                                            How to add modules

                                            learning how to use browser developers window for css changes

                                            D 1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              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