Read the statement by Michael Teeuw here.
New module installer
-
@plainbroke i pushed a bunch of fixes.
-
@sdetweil
I removed it with rm -rf MMM-Config
Then rebooted Pi
Then reinstalled with:
cd ~/MagicMirror/modules
git clone https://github.com/sdetweil/MMM-Config
cd MMM-Config
npm install
THAT DID NOT WORK.
threw all kinds of errors in shift+ctrl+i
So I went back to the
cd MMM_Config module and ran
git pull
git checkout with_installer
npm install
rebooted the Pi
Now it works.
Why I do not know.
But it does. I am going to try it out with MMM-MPlayer.
Thanks for the great work… -
@plainbroke said in New module installer:
git clone https://github.com/sdetweil/MMM-Config
yes, that will put you on the root branch main or master
you have to checkout the other branch that has the installer function in it -
@plainbroke pushed a few more updates… now open repo button in configuration screens as well as installer
-
@sdetweil Hi Sam,
I update the fetch interval on my CalendarExt3 module via MMM-Config as i had a power flick and events hadn’t came back quick enough for my liking. However now the whole CalendarExt3 module is not display and i am getting errors on start up saying it can’t calidate main module.js i hadn’t made any changes outside of the config module. I tried uninstalling CalendaerExt3 and reinstalling but without any luck would love some guidance. Will past the latest config module below also.mdwebb@raspberrypi:~/MagicMirror $ npm start > magicmirror@2.31.0-develop start > npm run start:x11 > magicmirror@2.31.0-develop start:x11 > DISPLAY="${DISPLAY:=:0}" ./node_modules/.bin/electron js/electron.js [2025-01-20 20:36:52.086] [LOG] Starting MagicMirror: v2.31.0-develop [2025-01-20 20:36:52.114] [LOG] Loading config ... [2025-01-20 20:36:52.116] [LOG] config template file not exists, no envsubst [2025-01-20 20:36:52.693] [INFO] Checking config file /home/mdwebb/MagicMirror/config/config.js ... [2025-01-20 20:36:52.837] [INFO] Your configuration file doesn't contain syntax errors :) [2025-01-20 20:36:52.839] [INFO] Checking modules structure configuration ... [2025-01-20 20:36:52.983] [INFO] Your modules structure configuration doesn't contain errors :) [2025-01-20 20:36:52.985] [LOG] Loading module helpers ... [2025-01-20 20:36:52.997] [LOG] Initializing new module helper ... [2025-01-20 20:36:52.998] [LOG] Module helper loaded: updatenotification [2025-01-20 20:36:52.999] [LOG] No helper found for module: clock. [2025-01-20 20:36:53.000] [LOG] No helper found for module: MMM-CountDown. [2025-01-20 20:36:53.244] [LOG] Initializing new module helper ... [2025-01-20 20:36:53.244] [LOG] Module helper loaded: MMM-ImagesPhotos [2025-01-20 20:36:53.265] [LOG] Initializing new module helper ... [2025-01-20 20:36:53.265] [LOG] Module helper loaded: MMM-OpenWeatherMapForecast [2025-01-20 20:36:53.429] [LOG] Initializing new module helper ... [2025-01-20 20:36:53.429] [LOG] Module helper loaded: MMM-Config [2025-01-20 20:36:53.430] [LOG] No helper found for module: MMM-CalendarExt3. [2025-01-20 20:36:53.430] [LOG] No helper found for module: alert. [2025-01-20 20:36:53.526] [LOG] Initializing new module helper ... [2025-01-20 20:36:53.527] [LOG] Module helper loaded: calendar [2025-01-20 20:36:53.650] [LOG] Initializing new module helper ... [2025-01-20 20:36:53.650] [LOG] Module helper loaded: MMM-Remote-Control [2025-01-20 20:36:53.698] [LOG] Initializing new module helper ... [2025-01-20 20:36:53.698] [LOG] Module helper loaded: MMM-ModuleScheduler [2025-01-20 20:36:53.699] [LOG] All module helpers loaded. [2025-01-20 20:36:53.711] [LOG] Starting server on port 8080 ... [2025-01-20 20:36:54.371] [LOG] Server started ... [2025-01-20 20:36:54.377] [LOG] Connecting socket for: updatenotification [2025-01-20 20:36:54.378] [LOG] Starting module helper: updatenotification [2025-01-20 20:36:54.384] [LOG] Connecting socket for: MMM-ImagesPhotos [2025-01-20 20:36:54.386] [LOG] Starting node helper for: MMM-ImagesPhotos [2025-01-20 20:36:54.389] [LOG] Connecting socket for: MMM-OpenWeatherMapForecast [2025-01-20 20:36:54.390] [LOG] Starting node_helper for MMM-OpenWeatherMapForecast [2025-01-20 20:36:54.396] [LOG] Connecting socket for: MMM-Config [2025-01-20 20:36:54.727] [LOG] will pull config data at 17:00:00 in 22985320 ms [2025-01-20 20:36:54.729] [LOG] Connecting socket for: calendar [2025-01-20 20:36:54.736] [LOG] Starting node helper for: calendar [2025-01-20 20:36:54.738] [LOG] Connecting socket for: MMM-Remote-Control [2025-01-20 20:36:54.744] [LOG] Starting node helper for: MMM-Remote-Control [2025-01-20 20:36:54.848] [LOG] Connecting socket for: MMM-ModuleScheduler [2025-01-20 20:36:54.849] [LOG] Starting node helper for: MMM-ModuleScheduler [2025-01-20 20:36:54.850] [LOG] Sockets connected & modules started ... [2025-01-20 20:36:55.644] [LOG] Launching application. [2025-01-20 20:36:57.126] [INFO] System information: ### SYSTEM: manufacturer: ; model: ; virtual: false ### OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch: arm64; kernel: 6.6.51+rpt-rpi-v8 ### VERSIONS: electron: 32.2.7; used node: 20.18.1; installed node: 20.18.1; npm: 10.8.2; pm2: 5.4.3 ### OTHER: timeZone: Australia/Melbourne; ELECTRON_ENABLE_GPU: undefined [2025-01-20 20:36:57.162] [ERROR] ERROR! Could not validate main module js file. [2025-01-20 20:36:57.168] [ERROR] ReferenceError: HTMLElement is not defined at Object.<anonymous> (/home/mdwebb/MagicMirror/modules/MMM-CalendarExt3/MMM-CalendarExt3.js:6:26) at Module._compile (node:internal/modules/cjs/loader:1484:14) at Module._extensions..js (node:internal/modules/cjs/loader:1564:10) at Module.load (node:internal/modules/cjs/loader:1295:32) at Module._load (node:internal/modules/cjs/loader:1111:12) at c._load (node:electron/js2c/node_init:2:16955) at Module.require (node:internal/modules/cjs/loader:1318:19) at require (node:internal/modules/helpers:179:18) at Class.loadModuleDefaultConfig (/home/mdwebb/MagicMirror/modules/MMM-Remote-Control/node_helper.js:317:30) at /home/mdwebb/MagicMirror/modules/MMM-Remote-Control/node_helper.js:271:26 at FSReqCallback.oncomplete (node:fs:198:5) [3636:0120/203657.414249:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.423716:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.424432:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.424789:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.425361:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.425726:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.426131:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.426495:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.431838:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.439567:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.451490:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.455922:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.456469:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.456802:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.458595:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.463710:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.468093:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.471514:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.472361:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.472678:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.473397:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.479438:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.485371:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.485794:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.486390:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.486682:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [3636:0120/203657.487070:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) [3636:0120/203657.488116:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2) [2025-01-20 20:36:58.222] [LOG] [2025-01-20 20:37:00.003] [LOG] Config based debug=module_3_MMM-ImagesPhotos [2025-01-20 20:37:00.008] [LOG] Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/ - Interval: 3600000 [2025-01-20 20:37:00.017] [LOG] MMM-ModuleScheduler is removing all scheduled jobs [2025-01-20 20:37:00.018] [LOG] MMM-ModuleScheduler received CREATE_NOTIFICATION_SCHEDULE [2025-01-20 20:37:00.021] [LOG] MMM-ModuleScheduler cannot create schedule. Missing `schedule` in `notification_schedule`: true [2025-01-20 20:37:00.029] [INFO] updatenotification: Updater Class Loaded! [2025-01-20 20:37:00.030] [INFO] updatenotification: Checking PM2 using... [2025-01-20 20:37:00.031] [INFO] updatenotification: [PM2] You are not using pm2 [2025-01-20 20:37:00.033] [INFO] Checking git for module: MMM-CountDown [2025-01-20 20:37:00.070] [INFO] Checking git for module: MMM-ImagesPhotos [2025-01-20 20:37:00.104] [INFO] Checking git for module: MMM-OpenWeatherMapForecast [2025-01-20 20:37:00.171] [INFO] Checking git for module: MMM-Config [2025-01-20 20:37:00.213] [INFO] Checking git for module: MMM-CalendarExt3 [2025-01-20 20:37:00.240] [INFO] Checking git for module: MMM-Remote-Control [2025-01-20 20:37:00.265] [INFO] Checking git for module: MMM-ModuleScheduler [2025-01-20 20:37:00.319] [INFO] Checking git for module: MagicMirror [2025-01-20 20:37:05.720] [INFO] Calendar-Fetcher: Broadcasting 970 events from https://calendar.google.com/calendar/ical... [2025-01-20 20:37:06.063] [LOG] Shutting down server... [2025-01-20 20:37:06.066] [LOG] Stopping module helper: updatenotification [2025-01-20 20:37:06.067] [LOG] Stopping module helper: MMM-ImagesPhotos [2025-01-20 20:37:06.069] [LOG] Stopping module helper: MMM-OpenWeatherMapForecast [2025-01-20 20:37:06.070] [LOG] Stopping module helper: MMM-Config [2025-01-20 20:37:06.071] [LOG] Stopping module helper: calendar [2025-01-20 20:37:06.076] [LOG] Stopping module helper: MMM-ModuleScheduler [2025-01-20 20:37:06.078] [LOG] Node_helpers stopped ...
Config file
var config = { address: "0.0.0.0", port: 8080, basePath: "/", ipWhitelist: [ "127.0.0.1", "::ffff:127.0.0.1", "::1", "192.000.00.000", "192.000.00.00" ], language: "en", locale: "en-US", logLevel: [ "INFO", "LOG", "WARN", "ERROR" ], timeFormat: 24, units: "metric", useHttps: false, modules: [ { module: "updatenotification", position: "top_bar", order: "*", disabled: false, animateIn: "None", animateOut: "None", config: {} }, { module: "clock", position: "top_left", order: "*", animateIn: "None", animateOut: "None", index: 0, label: "instance 1", config: { displayType: "digital", timeFormat: "24", displaySeconds: true, showPeriod: true, showDate: true, showTime: true, dateFormat: "dddd, LL", analogSize: "200px", analogFace: "simple", analogPlacement: "bottom", analogShowDate: "top", secondsColor: "#888888", lat: 47.630539, lon: -122.344147, showPeriodUpper: false, clockBold: false, showWeek: false, sendNotifications: false, showSunTimes: false, showMoonTimes: false }, disabled: false }, { module: "MMM-CountDown", position: "top_left", config: { date: "2025-02-21", event: "Webb Holiday" }, order: "*", disabled: false, animateIn: "None", animateOut: "None" }, { module: "MMM-ImagesPhotos", position: "top_center", config: { animationSpeed: 1000, updateInterval: 30000, maxHeight: "500px", maxWidth: "500px", path: "" }, order: "*", disabled: false, animateIn: "None", animateOut: "None" }, { module: "weather", disabled: true, position: "top_right", label: "instance 1", order: "*", index: 0, animateIn: "none", animateOut: "none", config: { weatherProvider: "openmeteo", type: "current", units: "metric", tempUnits: "metric", windUnits: "metric", timeFormat: "24", useBeaufort: true, lang: "en", useKmh: false, showHumidity: false } }, { module: "weather", disabled: true, position: "top_right", label: "instance 2", order: "*", index: 1, animateIn: "none", animateOut: "none", config: { weatherProvider: "openmeteo", type: "forecast", units: "metric", tempUnits: "metric", windUnits: "metric", updateInterval: 600000, animationSpeed: 1000, timeFormat: "24", showPeriod: true, showWindDirection: true, useBeaufort: true, lang: "en", showSun: true, decimalSymbol: ".", maxNumberOfDays: 5, maxEntries: 5, fade: true, fadePoint: 0.25, initialLoadDelay: 0, appendLocationNameToHeader: true, calendarClass: "calendar", tableClass: "small", showFeelsLike: true, roundTemp: false, useKmh: false, showPeriodUpper: false, showWindDirectionAsArrow: false, showHumidity: false, degreeLabel: false, showIndoorTemperature: false, showIndoorHumidity: false, ignoreToday: false, onlyTemp: false, showPrecipitationAmount: false, colored: false, absoluteDates: false } }, { module: "MMM-OpenWeatherMapForecast", header: "Weather", position: "top_right", classes: "default everyone", config: { apikey: "", latitude: "-38.314560", longitude: "146.419373", iconset: "4c", concise: false, forecastLayout: "table", maxDailiesToShow: 5, showWind: false, units: "metric", language: "en", showExtraCurrentConditions: false, showHourlyForecast: false, forecastHeaderText: "" }, order: "*", disabled: false, animateIn: "None", animateOut: "None" }, { module: "MMM-Config", position: "top_right", config: { restart: "none" }, order: "*", disabled: false, animateIn: "none", animateOut: "none" }, { module: "MMM-CalendarExt3", position: "bottom_bar", title: "", config: { instanceId: "basicCalendar", locale: "en-US", maxEventLines: 6, firstDayOfWeek: "0", weekIndex: 0, weeksInView: 4, eventHeight: "15px", useMarquee: true, refreshInterval: 600, eventTransformer: (ev)=> { if (ev.title.search('DINNER') > -1) ev.symbol = ['fluent-color:food-28'] if (ev.title.search('Arnold') > -1) ev.symbol = ['fluent-emoji-flat:dog'] if (ev.title.search('Gus') > -1) ev.symbol = ['fluent-emoji-flat:dog'] if (ev.title.search('Dogs') > -1) ev.symbol = ['fluent-emoji-flat:dog'] if (ev.title.search('dogs') > -1) ev.symbol = ['fluent-emoji-flat:dog'] if (ev.title.search('Marcus') > -1) ev.symbol = ['noto:pretzel'] if (ev.title.search('Pretzel') > -1) ev.symbol = ['noto:pretzel'] if (ev.title.search('Recycle Bin') > -1) ev.symbol = ['game-icons:soda-bottle'] if (ev.title.search('Green Waste bins') > -1) ev.symbol = ['streamline-emojis:leaf-fluttering-in-wind'] if (ev.title.search('Cleaning Day') > -1) ev.symbol = ['openmoji:broom'] if (ev.title.search('Swimming') > -1) ev.symbol = ['fxemoji:swimming'] if (ev.title.search('Phils') > -1) ev.symbol = ['twemoji:baby-angel-light-skin-tone'] if (ev.title.search('Phyllis') > -1) ev.symbol = ['twemoji:baby-angel-light-skin-tone'] if (ev.title.search('Birthday') > -1) ev.symbol = ['emojione:birthday-cake'] if (ev.title.search('birthday') > -1) ev.symbol = ['emojione:birthday-cake'] if (ev.title.search('Hugo') > -1) ev.symbol = ['cryptocurrency-color:hight'] if (ev.title.search('Maggie') > -1) ev.symbol = ['cryptocurrency-color:xmy'] if (ev.title.search('Lucas') > -1) ev.symbol = ['openmoji:man-judge-light-skin-tone'] if (ev.title.search('Hudge') > -1) ev.symbol = ['twemoji:gemini'] if (ev.title.search('Danielle') > -1) ev.symbol = ['twemoji:gemini'] if (ev.title.search('Factory') > -1) ev.symbol = ['emojione-v1:cow'] if (ev.title.search('factory') > -1) ev.symbol = ['emojione-v1:cow'] return ev }, eventFilter: (ev) => { return true }, manipulateDateCell: (cellDom, events) => { }, weatherPayload: (payload) => { return payload }, eventPayload: (payload) => { return payload } }, order: "*", disabled: false, animateIn: "None", animateOut: "None" }, { module: "newsfeed", disabled: true, position: "bottom_bar", order: "*", animateIn: "None", animateOut: "None", index: 0, label: "instance 1", config: { feeds: [ { title: "New York Times", url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml", encoding: "UTF-8" } ], showSourceTitle: true, showPublishDate: true, broadcastNewsFeeds: true, broadcastNewsUpdates: true, wrapTitle: true, wrapDescription: true, truncDescription: true, lengthDescription: 400, reloadInterval: 300000, updateInterval: 10000, animationSpeed: 2500, maxNewsItems: 0, ignoreOlderThan: 86400000, scrollLength: 500, showAsList: false, showDescription: false, showTitleAsUrl: false, hideLoading: false, ignoreOldItems: false, logFeedWarnings: false, dangerouslyDisableAutoEscaping: false, startTags: [], endTags: [], prohibitedWords: [] } }, { module: "alert", order: "*", animateIn: "None", animateOut: "None", index: 0, label: "instance 1", config: { effect: "slide", alert_effect: "jelly", display_time: 3500, position: "center", welcome_message: false }, disabled: false }, { module: "calendar", order: "*", animateIn: "None", animateOut: "None", index: 0, label: "instance 1", config: { maximumEntries: 10, maximumNumberOfDays: 365, limitDays: 0, pastDaysCount: 0, displaySymbol: true, defaultSymbol: "calendar-alt", defaultSymbolClassName: "fas fa-fw fa-", maxTitleLength: 25, maxLocationTitleLength: 25, maxTitleLines: 3, maxEventTitleLines: 3, fetchInterval: 3600000, animationSpeed: 2000, fade: true, fadePoint: 0.25, urgency: 7, timeFormat: "relative", dateFormat: "MMM Do", dateEndFormat: "LT", fullDayEventDateFormat: "MMM Do", getRelative: 6, hideDuplicates: true, tableClass: "small", calendars: [ { symbol: "calendar-alt", url: "https://calendar.google.com/calendar/ical/ } ], customEvents: [ { keyword: ".*", transform: { search: "De verjaardag van " } }, { keyword: ".*", transform: { search: "'s birthday" } } ], locationTitleReplace: { "street ": "" }, broadcastEvents: true, broadcastPastEvents: true, updateOnFetch: true, showLocation: false, displayRepeatingCountTitle: false, wrapEvents: false, wrapLocationEvents: false, showEnd: false, showEndsOnlyWithDuration: false, hidePrivate: false, hideOngoing: false, hideTime: false, showTimeToday: false, colored: false, forceUseCurrentTime: false, sliceMultiDayEvents: false, nextDaysRelative: false, selfSignedCert: false, coloredText: false, coloredBorder: false, coloredSymbol: false, coloredBackground: false, limitDaysNeverSkip: false, flipDateHeaderTitle: false, excludedEvents: [] }, disabled: false }, { module: "MMM-Remote-Control", config: { apiKey: "" }, order: "*", disabled: false, animateIn: "None", animateOut: "None" }, { module: "MMM-ModuleScheduler", config: { notification_schedule: true }, order: "*", disabled: false, animateIn: "None", animateOut: "None" } ] } ;
-
@MDWEBB hm, could not validate file…
edit: ---- you said you reinstalled, so this is not a file corruption problem
lets go to the MMM-CalendarExt3 folder
and dogit status
it should not list any files
please show the reults
-
@MDWEBB also you changed refreshInterval to 600
milliseconds down from 30 minutes!! (the module cannot redraw that fast)i think you need to change the waitFetch value up to 10000
milliseconds.i don’t think refreshInterval should ever be less that 300000
(5 minutes) -
@MDWEBB I could not recreate the error by setting one of my Ext3 instances to refreshInterval :600
-
BUT… just for the sake of testing something… MMM-Config saved the prior config.js
so if you
cd~/MagicMirror/config #rename this one out of the way mv config.js save-config.js ls config -laFt config.* #and copy the top one back to config.js #mark the filename, right click mouse cp -rightclick-paste config.js
and then restart MagicMirror
do you still get the error??
-
I added the default modules to have links to their config doc too… (in configuration)
I made significant changes to the weather form layout, using select lists and custom field sets per weather provider.
updated the schemas MMM-Config ships to add the view readme button