Read the statement by Michael Teeuw here.
New module installer
-
pi@CameraS:~/MagicMirror/modules/MMM-Config $ dir config.html form-client.js node_helper.js schema3_19492568968280.json translations config_lastchange_19492568968280 MMM-Config.css node_modules schemas webform.css create_form_for_module.cmd MMM-Config.js package.json scripts webform.js create_form_for_module.sh MMM-Config.schema.json package-lock.json templates workdir defaults_19492568968280.js module_installer postinstall test_convert.cmd doc_images modules_lastchange_19492568968280 postinstall.cmd test_convert.sh exec_script.js modules_list.txt README.md touch.cmd
When I ran it with review it came back.
Cannot GET /modules/MMM-Config/installer -
@plainbroke sorry cd module_installer
-
@sdetweil
Yes it is in there.I am going to turn in been sick for the last 2 days. worn out…
Take your time with it. I am in no hurry. -
@plainbroke I just did a fresh install on a new MM… on a different machine
when I bring up the MM page it works
when I bring up the installer page it works… takes a few seconds
when I open the MMM-Config/review page the configuration page comes upopen the installer page http://server:port/installer open the developers window, ctrl-shift-i go to the console tab , see if there are any errors open the sources tab left nav selec modules, mmm-config module_installer select the form-client.js scroll the source to line 120, click on the line number should turn blue
like this
hit f5 refresh the page
it should look like this
you should be able to scroll the mouse over the words incoming_json
and it should pop up a big window of the jsonlike this
-
@plainbroke feel better… this is not that important
-
@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" } ] } ;