Read the statement by Michael Teeuw here.
Calendar not updating
-
@matt216 no. i created an ics and ran mm against it
[09.01.2024 10:42.53.207] [LOG] Create new calendarfetcher for url: http://localhost:8090/modules/default/calendar/testbalkan.ics - Interval: 604800000 ... [09.01.2024 10:42.53.336] [DEBUG] parsed data={"156ED8F1-9BDA-43D2-BE7C-DDEFE18E95EF":{"type":"VEVENT","params":[],"created":"2024-01-09T16:16:46.000Z","end":"2024-01-10T17:00:00.000Z","dtstamp":"2024-01-09T16:16:47.000Z","start":"2024-01-10T16:00:00.000Z","datetype":"date-time","lastmodified":"2024-01-09T16:16:46.000Z","sequence":"0","summary":"test54321","transparency":"OPAQUE","uid":"156ED8F1-9BDA-43D2-BE7C-DDEFE18E95EF","url":{"params":{"VALUE":"URI"},"val":""},"APPLE-CREATOR-IDENTITY":"com.apple.mobilecal","APPLE-CREATOR-TEAM-IDENTITY":"0000000000"},"vcalendar":{"type":"VCALENDAR"}} [09.01.2024 10:42.53.337] [DEBUG] There are 2 calendar entries. [09.01.2024 10:42.53.338] [DEBUG] Processing entry... [09.01.2024 10:42.53.339] [DEBUG] Event: {"type":"VEVENT","params":[],"created":"2024-01-09T16:16:46.000Z","end":"2024-01-10T17:00:00.000Z","dtstamp":"2024-01-09T16:16:47.000Z","start":"2024-01-10T16:00:00.000Z","datetype":"date-time","lastmodified":"2024-01-09T16:16:46.000Z","sequence":"0","summary":"test54321","transparency":"OPAQUE","uid":"156ED8F1-9BDA-43D2-BE7C-DDEFE18E95EF","url":{"params":{"VALUE":"URI"},"val":""},"APPLE-CREATOR-IDENTITY":"com.apple.mobilecal","APPLE-CREATOR-TEAM-IDENTITY":"0000000000"} [09.01.2024 10:42.53.339] [DEBUG] start: Wed Jan 10 2024 10:00:00 GMT-0600 (Central Standard Time) [09.01.2024 10:42.53.339] [DEBUG] end:: Wed Jan 10 2024 11:00:00 GMT-0600 (Central Standard Time) [09.01.2024 10:42.53.339] [DEBUG] duration: 3600000 [09.01.2024 10:42.53.340] [DEBUG] title: test54321 [09.01.2024 10:42.53.340] [DEBUG] full day event =false [09.01.2024 10:42.53.340] [DEBUG] initial tz=Europe/London [09.01.2024 10:42.53.340] [DEBUG] corrected tz=Europe/London [09.01.2024 10:42.53.341] [DEBUG] start date/time=Wed Jan 10 2024 10:00:00 GMT-0600 (Central Standard Time) [09.01.2024 10:42.53.341] [DEBUG] start offset=0 [09.01.2024 10:42.53.341] [DEBUG] start date/time w tz =Wed Jan 10 2024 10:00:00 GMT-0600 (Central Standard Time) [09.01.2024 10:42.53.342] [DEBUG] event date=Wed Jan 10 2024 10:00:00 GMT-0600 (Central Standard Time) [09.01.2024 10:42.53.342] [DEBUG] event offset=0 hour=16 event date=Wed Jan 10 2024 10:00:00 GMT-0600 (Central Standard Time) [09.01.2024 10:42.53.342] [DEBUG] adjustHours=0 [09.01.2024 10:42.53.342] [DEBUG] saving event: test54321 [09.01.2024 10:42.53.342] [DEBUG] Processing entry... [09.01.2024 10:42.53.342] [INFO] Calendar-Fetcher: Broadcasting 1 events from http://localhost:8090/modules/default/calendar/testbalkan.ics.
-
@matt216 can u send me the curl ics from the baikal server where the events don’t show??
(if you are willing)
rename to .txt -
@sdetweil this is from the curl’d ics file, showing one of the events that will not display on the mirror display:
BEGIN:VEVENT CREATED:20240109T161646Z DTEND;TZID=Europe/London:20240110T170000 DTSTAMP:20240109T161647Z DTSTART;TZID=Europe/London:20240110T160000 LAST-MODIFIED:20240109T161646Z SEQUENCE:0 SUMMARY:test54321 TRANSP:OPAQUE UID:156ED8F1-9BDA-43D2-BE7C-DDEFE18E95EF URL;VALUE=URI: X-APPLE-CREATOR-IDENTITY:com.apple.mobilecal X-APPLE-CREATOR-TEAM-IDENTITY:0000000000 END:VEVENT
I’d be happy to send over the contents of the ics file before events start, if that would be helpful? Far too much personal family info to send the whole thing, Im afraid (again, no offence intended)!
-
@matt216 I used that event in an ICS and it displays just fine.
so I think this is not the events but some communications problem.
the fact that you have it working with another local hosting server tells me it’s something other than the data
-
Initial testing with the apache version of the baikal container looks promising (I’m currently having problems with the nginx version). Will continue testing along these lines…
-
OK interesting. I created a brand new calendar server. Empty. Added one event to it and configured the mirror calendar module to use this server. It shows the one single event ok. I added a second new event to the calendar and this also shows on the mirror. Seems to work as expected - new events are showing!
Then I import my whole famlly calendar and run the same test. I now have 5 family events showing on the calendar. But if I add a new event that should show within my 5 events, it does not show. :(
Debug logs >somefile.txt show the mirror is picking up the new event from the ics file, it’s just not showing on the display.
-
@sdetweil I wonder if I could run a nightly cron job to purge the calendar module or something similar…? Not sure how the calendar fetcher works.
It still feels like the calendar will load an ics link ok the first time, but is not displaying events created since that first load.
Nightly purge and re-connect would be acceptable, I think. Any advice there? -
@matt216 there is no way to programmatically trigger a calendar refresh. you have to restart mm
but you could do this w pm2
pm2 restart MagicMirror
(or it’s number)
in the current state does the broadcasting message indicate a change in number of events?
-
@sdetweil yes, the broadcasting event number increases by 1 when I add my new event, but the event does not show on the display.
-
@matt216 can u show me the cal config again… as far as I can tell, the ONLY reason its not displayed is that the count (maximumEntries) clips off the total number of events
actually there are more conditions… in calendar.js
but they are all configurablefor (const e in calendar) { const event = JSON.parse(JSON.stringify(calendar[e])); // clone object if (this.config.hidePrivate && event.class === "PRIVATE") { // do not add the current event, skip it continue; } if (limitNumberOfEntries) { (//called with true) if (event.endDate < maxPastDaysCompare) { continue; } if (this.config.hideOngoing && event.startDate < now) { continue; } if (this.config.hideDuplicates && this.listContainsEvent(events, event)) { continue; } if (--remainingEntries < 0) { break; } }
and after filtering them out , apply the number of days limit and max entries limit
// Limit the number of days displayed // If limitDays is set > 0, limit display to that number of days if (this.config.limitDays > 0) { let newEvents = []; let lastDate = today.clone().subtract(1, "days").format("YYYYMMDD"); let days = 0; for (const ev of events) { let eventDate = moment(ev.startDate, "x").format("YYYYMMDD"); // if date of event is later than lastdate // check if we already are showing max unique days if (eventDate > lastDate) { // if the only entry in the first day is a full day event that day is not counted as unique if (!this.config.limitDaysNeverSkip && newEvents.length === 1 && days === 1 && newEvents[0].fullDayEvent) { days--; } days++; if (days > this.config.limitDays) { continue; } else { lastDate = eventDate; } } newEvents.push(ev); } events = newEvents; } return events.slice(0, this.config.maximumEntries);