Read the statement by Michael Teeuw here.
[INFO] Be careful to use iCal sample of config.js
-
Dear community,
Recently I got a message fromCalendarLabs, who is providing ical of MM’s default config.js.sample. They had some problem from too many/frequent request from MM (because it is included inconfig.js.sample)Around three thousand MagicMirror systems are making a huge amount of requests, impacting our service (similar to DDoS). Some IPs even send more than 20 requests per minute.
Also, Most of them using an old version of the ics URL, which will be phased out from 30th July.
So, all the subscribers should get their unique URL for their applications(so that they won’t get blocked for exceeding the limits of 36 requests per day for holiday calendars).
Also, they should visit the ical page after creating a free login, if they want to get notified when they exceed the limit or there is any update related to the ics they are using (the subscriber ID get associated with the logged-in users when it is within same user session)
Any ics subscriber exceeding the request limit will receive notifications on their calendar from 30th July.

Not to request too many times/frequently. It consumes others’ resources.
I think 30 mins or a few hours is enough to reveal updates. Really do you guys need real-time updates?(Especially for holiday? it will not be changed in a day. :D ) -
@MMRIZE I created issue
https://github.com/MichMich/MagicMirror/issues/3138 to track this
I see you opened pr
https://github.com/MichMich/MagicMirror/issues/3137 -
@MMRIZE I grab mine off Office Holidays in case somebody is looking for an alternative.
-
@sdetweil Where are you correcting this?
Reason I ask is because the default in Calender.js is set to 5 minutes and if you don’t change it in config.js doesn’t it fall back to the module default values?It is likely most MM builders do very little to config.js regarding the calendar. When they do initial install of MM, the basic calendar module is loaded,
calendar.jsis just chugging along updating every 5 minutes out of sight. -
@ankonaskiff17 yes, we will adjust timing for Saturday release to 7 days. I think we are trying to add interval by calendar {url}, instead of one setting for all calendars in this config instance.
-
@ankonaskiff17 good point on the default setting
-
@sdetweil I went back and looked at an older MM thats been running quite some time to see if I somehow would have missed that setting because, being a holiday calendar it doesn’t change, period. Some things change such as Easter but annually. I’ve run into that update issue on other modules such as weather.
I saw that item posted on forum and first thing I did was look at my config.js file and nothing related to updates so immediately went to the module file and there it was, 5 minute update interval.
More like as more and more Magic Mirrors got built the upate requests were going up with each mirror. and since when a given mirror’s 5 minute cycle would time out I can imagine they were getting slammed.
-
I think default 5 min is not so burden really (even with 3000 mirrors do so synchronously)
But a few cases definitely are misconfigured even unintentionally. Some people might make confusion, for example they thought 60 * 60 means 1 hour, but it is 3.6 seconds and it would probably make around 20 calls per minute. -
@MMRIZE It could also be with as many MM systems out there a simple timing issue. every 5 minutes, bam 3000 systems flood CL with requests. Maybe start changing default to once a week on holiday calendar at most.
-
@BKeyport @MMRIZE I think the problem is that calendar.js default fetch interval is set to 5 minutes.
When you set about to build a MM and you install the core system, Calendar.js fetchinterval is set to 5 minutes by default.If I install MM AND I’m content with the presentation of the calendar AS IS and do nothing at all,
calendar.jsis going to reach for an update every 5 minutes.

-
@ankonaskiff17 … ahh, good point, forgot the fetch interval is not per item. Hey, @sdetweil - it’s your baby, you want to add a fetchInterval override variable per calendar, and default in the sample config.js to once a week or more for the holidays calendar? This would solve the issue CL is having with at least new installs…
As for the old ones, could we check to see if CL 's holiday calendar is being used, and inform or force an override for fetchInterval to solve for most?
(Just did a check and I’m not using CL’s holiday calendar, so whew)
-
@ankonaskiff17 we are changing the default to days I think. this for es u to make it faster if u want
I think the minimum should be 5 minutes
-
@sdetweil Back when I first started messing with MM’s the calendar module was faulting out towards the end of that calendar year and it turned out that however many I had set as how many to show, say for example 5 holidays but at some point there were not 5 holidays left in the year but CL had not yet published the next years calandar.
My config.js is wanting 5 holes it needed to fill, there weren’t 5 holidays left so down it would go.
That calendar, because it is US Holidays, behaves like a photograph. It is static. There is no need to have it looking for changes like a volatile personal calendar that is going to change continuously.
US Holidays you could have a
fetchInterval: ONCE EVERY 3 MONTHSand it would still be overkill. Some of your religious holidays like Easter float around because they aren’t date oriented. But even it has been calculated in advance
It doesn’t require the same level of refreshing as where someone is pulling in their personal Google or Outlook calendar where things like doctors appointments, dinner dates will change quite rapidly… -
@ankonaskiff17 this issue with refresh rate per calendar is because you can do
{ module: "calendar", header: "US Holidays", position: "top_left", config: { updateInterval: 7*24*60*60*1000 // 7days coloredSymbol:true, calendars: [ { symbol: 'calendar', //symbolClassName: "fas fa-fw fa-", color: 'pink', url: "webcal://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics", name:"holidays" }, { url: "some otherr url ", }, { url: "some otherr url again", } ] } },and ALL those calendars get the SAME/ONLY refresh rate
so currently u would have to do{ module: "calendar", header: "US Holidays", position: "top_left", config: { updateInterval: 7*24*60*60*1000 // 7days coloredSymbol:true, calendars: [ { symbol: 'calendar', //symbolClassName: "fas fa-fw fa-", color: 'pink', url: "webcal://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics", name:"holidays" } ] } }, { module: "calendar", header: "US Holidays", position: "top_left", config: { updateInterval: 6*60*60*1000 // 6 hours coloredSymbol:true, calendars: [ { url: "some other url ", }, ] } }, { module: "calendar", header: "US Holidays", position: "top_left", config: { updateInterval: 1*60*60*1000 // 1 hour coloredSymbol:true, calendars: [ { url: "some other url again" }, ] } }now you have three separate lists, not merged
-
@sdetweil I had used a second calendar module to pull in my personal calendar information and was using the ical link that you can get off of Google if I remember correctly.
Sort of along the lines of using multiple weather modules for daily and hourly.Then Google did something that broke the module. I fought with it for a while, gave up and have never tried to get it back running again.
-
@ankonaskiff17 google changed their url content a while back, so u had to go get it again
-
@sdetweil My issue was a bit more complicated.
My PRIMARY calendar is my phone but it is Samsungs built in calendar not Google calendar
I was hopping in and out Samsung, Google and Outlook although I don’t remember the sequence of hops.
I was dumbfounded that it even worked at the time.
One of those things where only so many minutes in the day so it was relegated to back burner status. -
@sdetweil That was a good memory jogger because I had completely forgotten about the broken calendar issue.
I suspect I will go with a second calendar module like before -
@ankonaskiff17 we are adding interval by url too
{ fetchInterval: url: } -
@sdetweil Any functional difference between
updateIntervalandfetchInterval
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