Read the statement by Michael Teeuw here.
Problem Adding Buttons & required Remote-Control Modules
-
Wanted to added hardware buttons to hide and show modules to be specified. I added the MMM-Buttons module and the required Remote Control module. I used the sample scripts to my config.js. Ran config:check which passed. I have pasted the screen output below, the first error am getting is the [108081:0916/150400.265788:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2) but have no idea where to head, any suggestions appreciated. Thank you
VR Anthony Baker[2024-09-16 15:03:59.734] [LOG] Server started …
[2024-09-16 15:03:59.734] [LOG] Connecting socket for: MMM-Buttons
[2024-09-16 15:03:59.735] [LOG] Starting node helper for: MMM-Buttons
[2024-09-16 15:03:59.735] [LOG] Connecting socket for: MMM-Remote-Control
[2024-09-16 15:03:59.736] [LOG] Starting node helper for: MMM-Remote-Control
[2024-09-16 15:03:59.758] [LOG] Connecting socket for: updatenotification
[2024-09-16 15:03:59.758] [LOG] Starting module helper: updatenotification
[2024-09-16 15:03:59.759] [LOG] Connecting socket for: MMM-homeassistant-sensors
[2024-09-16 15:03:59.759] [LOG] Connecting socket for: calendar
[2024-09-16 15:03:59.759] [LOG] Starting node helper for: calendar
[2024-09-16 15:03:59.760] [LOG] Connecting socket for: MMM-MktIndex
[2024-09-16 15:03:59.760] [LOG] Sockets connected & modules started …
[2024-09-16 15:03:59.865] [LOG] Launching application.
[108081:0916/150400.265788:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.266067:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.266298:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.266921:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.267215:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.267316:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.267455:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.270989:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.271174:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.271249:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.271340:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.271393:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.271470:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.271521:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.272998:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.273082:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.273164:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.273223:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.273304:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.273358:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.273453:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.273514:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.273621:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.273702:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.273848:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.273924:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[108081:0916/150400.274049:ERROR:gbm_wrapper.cc(74)] Failed to get fd for plane.: No such file or directory (2)
[108081:0916/150400.274120:ERROR:gbm_wrapper.cc(257)] Failed to export buffer to dma_buf: No such file or directory (2)
[2024-09-16 15:04:00.375] [INFO] System information:SYSTEM: manufacturer: ; model: ; raspberry: undefined; virtual: false
OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch: arm64; kernel: 6.6.47+rpt-rpi-2712
VERSIONS: electron: 31.1.0; used node: 20.14.0; installed node: 22.8.0; npm: 10.8.3; pm2: 5.4.1
OTHER: timeZone: America/New_York; ELECTRON_ENABLE_GPU: undefined
[2024-09-16 15:04:00.407] [ERROR] ERROR! Could not validate main module js file.
[2024-09-16 15:04:00.408] [ERROR] ReferenceError: Log is not defined
at Object. (/home/awwbaker/MagicMirror/modules/MMM-Jast/MMM-Jast.js:14:6243)
at Module._compile (node:internal/modules/cjs/loader:1373:14)
at Module._extensions…js (node:internal/modules/cjs/loader:1432:10)
at Module.load (node:internal/modules/cjs/loader:1215:32)
at Module._load (node:internal/modules/cjs/loader:1031:12)
at c._load (node:electron/js2c/node_init:2:17025)
at Module.require (node:internal/modules/cjs/loader:1240:19)
at require (node:internal/modules/helpers:179:18)
at Class.loadModuleDefaultConfig (/home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:314:30)
at /home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:268:26
at FSReqCallback.oncomplete (node:fs:198:5)
[2024-09-16 15:04:00.465] [ERROR] ERROR! Could not validate main module js file.
[2024-09-16 15:04:00.466] [ERROR] ReferenceError: Log is not defined
at Object. (/home/awwbaker/MagicMirror/modules/MMM-RAIN-MAP/MMM-RAIN-MAP.js:28:158622)
at Module._compile (node:internal/modules/cjs/loader:1373:14)
at Module._extensions…js (node:internal/modules/cjs/loader:1432:10)
at Module.load (node:internal/modules/cjs/loader:1215:32)
at Module._load (node:internal/modules/cjs/loader:1031:12)
at c._load (node:electron/js2c/node_init:2:17025)
at Module.require (node:internal/modules/cjs/loader:1240:19)
at require (node:internal/modules/helpers:179:18)
at Class.loadModuleDefaultConfig (/home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:314:30)
at /home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:268:26
at FSReqCallback.oncomplete (node:fs:198:5)
[2024-09-16 15:04:01.418] [LOG] Initialize button monitor_control on PIN 25
[2024-09-16 15:04:01.419] [LOG] MMM-Buttons: RPi model Raspberry Pi 5 Model B Rev 1.0
[2024-09-16 15:04:01.419] [LOG] MMM-Buttons: RPi5 detected
[2024-09-16 15:04:01.433] [LOG] Initialize button power on PIN 24
[2024-09-16 15:04:01.434] [LOG] MMM-Buttons: RPi model Raspberry Pi 5 Model B Rev 1.0
[2024-09-16 15:04:01.434] [LOG] MMM-Buttons: RPi5 detected
[108081:0916/150401.539146:ERROR:gl_utils.cc(424)] [.WebGL-0x1400c84d00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels
[2024-09-16 15:04:01.554] [LOG] Create new calendarfetcher for url: http://p134-caldav.icloud.com/published/2/ODY3MDc3ODQxODY3MDc3OIsPCPqyTd7gfFTuhUgnU3E8veSROaMD9lC0bXMqbeTrcdUcRFgL2q0GROkcc6XtdbepSRYxUGbDtoDb3se2UkE - Interval: 604800000
[108081:0916/150401.561896:ERROR:gl_utils.cc(424)] [.WebGL-0x1400c84d00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels
[2024-09-16 15:04:01.600] [LOG] Create new calendarfetcher for url: http://p134-caldav.icloud.com/published/2/ODY3MDc3ODQxODY3MDc3OIsPCPqyTd7gfFTuhUgnU3HnE0ZEnCaHErJrwvkzJ3o- - Interval: 604800000
[2024-09-16 15:04:01.602] [LOG] [MKTINDEX] Initialized.
[2024-09-16 15:04:01.610] [LOG] Please consider completing the survey at https://bit.ly/yahoo-finance-api-feedback if you haven’t already; for more info see https://github.com/gadicc/node-yahoo-finance2/issues/764#issuecomment-2056623851.
[2024-09-16 15:04:01.638] [INFO] updatenotification: Updater Class Loaded!
[2024-09-16 15:04:01.639] [INFO] updatenotification: Checking PM2 using…
[108081:0916/150401.673218:ERROR:gl_utils.cc(424)] [.WebGL-0x1400c84d00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels
[2024-09-16 15:04:01.739] [INFO] Checking git for module: MMM-Buttons
[108081:0916/150401.743566:ERROR:gl_utils.cc(424)] [.WebGL-0x1400c84d00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)
[2024-09-16 15:04:01.746] [LOG] Fetching crumb and cookies from https://finance.yahoo.com/quote/AAPL…
[2024-09-16 15:04:01.785] [INFO] Checking git for module: MMM-Remote-Control
[2024-09-16 15:04:01.808] [INFO] Checking git for module: MMM-homeassistant-sensors
[2024-09-16 15:04:01.832] [INFO] updatenotification: [PM2] You are not using pm2
[2024-09-16 15:04:01.842] [INFO] Checking git for module: MMM-MktIndex
[2024-09-16 15:04:01.889] [INFO] Checking git for module: MMM-TomTomTrafficIncidents
[2024-09-16 15:04:01.933] [INFO] Checking git for module: MMM-RAIN-MAP
[2024-09-16 15:04:01.948] [INFO] Checking git for module: MagicMirror
[2024-09-16 15:04:02.253] [ERROR] We expected a redirect to guce.yahoo.com, but got https://finance.yahoo.com/quote/AAPL/
[2024-09-16 15:04:02.254] [ERROR] We’ll try to continue anyway - you can safely ignore this if the request succeeds
[2024-09-16 15:04:02.256] [LOG] Success. Cookie expires on Tue Sep 16 2025 21:04:02 GMT-0400 (Eastern Daylight Time)
[2024-09-16 15:04:02.261] [LOG] fetch https://query1.finance.yahoo.com/v1/test/getcrumb
[2024-09-16 15:04:03.131] [INFO] Calendar-Fetcher: Broadcasting 165 events from http://p134-caldav.icloud.com/published/2/ODY3MDc3ODQxODY3MDc3OIsPCPqyTd7gfFTuhUgnU3HnE0ZEnCaHErJrwvkzJ3o-.
[2024-09-16 15:04:03.918] [INFO] Calendar-Fetcher: Broadcasting 281 events from http://p134-caldav.icloud.com/published/2/ODY3MDc3ODQxODY3MDc3OIsPCPqyTd7gfFTuhUgnU3E8veSROaMD9lC0bXMqbeTrcdUcRFgL2q0GROkcc6XtdbepSRYxUGbDtoDb3se2UkE.
[2024-09-16 15:04:03.923] [LOG] New crumb: 4yVwhCInEsF
[2024-09-16 15:04:28.977] [LOG] Shutting down server…
[2024-09-16 15:04:28.978] [LOG] Stopping module helper: MMM-Buttons
[2024-09-16 15:04:28.978] [LOG] Stopping module helper: updatenotification
[2024-09-16 15:04:28.978] [LOG] Stopping module helper: MMM-homeassistant-sensors
[2024-09-16 15:04:28.979] [LOG] Stopping module helper: calendar
[2024-09-16 15:04:28.979] [LOG] Stopping module helper: MMM-MktIndex
[2024-09-16 15:04:28.979] [LOG] Node_helpers stopped …
[108081:0916/150429.048417:ERROR:shared_image_manager.cc(326)] SharedImageManager::ProduceMemory: Trying to Produce a Memory representation from a non-existent mailbox.
awwbaker@raspberrypi:~/MagicMirror/config $ ^C
awwbaker@raspberrypi:~/MagicMirror/config $ npm start -
@sdetweil Yeah you’re right, that one might be more difficult. But I do have MMM-ModuleToggleButton working with pinctrl. Here’s the updated node_helper.js file just in case anyone’s interested.
node_helper.js
const NodeHelper = require('node_helper'); // eslint-disable-line import/no-extraneous-dependencies //const Gpio = require('onoff').Gpio; const { exec } = require("child_process"); module.exports = NodeHelper.create({ start() { this.started = false; }, socketNotificationReceived(notification, payload) { if (notification === 'TOGGLE_BUTTON_CONFIG' && !this.started) { const self = this; this.config = payload; //const button = new Gpio(this.config.buttonGpioPin, 'in', 'both', { persistentWatch: true, debounceTimeout: this.config.debounceTimeoutInMilliseconds }); //button.watch((err, state) => { // if (state === 1) { // self.sendSocketNotification(self.config.notificationName, true); // } //}); //this.started = true; // Set up GPIO as input using pinctrl command const pin = this.config.buttonGpioPin; const debounceTimeout = this.config.debounceTimeoutInMilliseconds; const notificationName = this.config.notificationName; let lastState = null; // Function to read the pin state using pinctrl const checkPinState = () => { exec(`pinctrl get ${pin}`, (err, stdout, stderr) => { if (err) { console.error(`Error reading GPIO state: ${err.message}`); return; } // Parse the pin state from stdout const state = stdout.includes("hi") ? 1 : 0; // Handle state change with debounce if (state !== lastState && state === 1) { this.sendSocketNotification(notificationName, true); } // Update last state lastState = state; }); }; // Set up an interval to check the pin state with debounce setInterval(checkPinState, debounceTimeout || 100); // Defaults to 100ms if debounce is not defined } } }); -
@awwbaker
that is a garbage message from electron we can’t suppress@awwbaker said in Problem Adding Buttons & required Remote-Control Modules:
this is all from MMM-RemoteControl loading the modules JS file in a different context than was intended… its not fatal> [2024-09-16 15:04:00.407] [ERROR] ERROR! Could not validate main module js file. > [2024-09-16 15:04:00.408] [ERROR] ReferenceError: Log is not defined > at Object. (/home/awwbaker/MagicMirror/modules/MMM-Jast/MMM-Jast.js:14:6243) > at Module._compile (node:internal/modules/cjs/loader:1373:14) > at Module._extensions…js (node:internal/modules/cjs/loader:1432:10) > at Module.load (node:internal/modules/cjs/loader:1215:32) > at Module._load (node:internal/modules/cjs/loader:1031:12) > at c._load (node:electron/js2c/node_init:2:17025) > at Module.require (node:internal/modules/cjs/loader:1240:19) > at require (node:internal/modules/helpers:179:18) > at Class.loadModuleDefaultConfig (/home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:314:30) > at /home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:268:26 > at FSReqCallback.oncomplete (node:fs:198:5) > [2024-09-16 15:04:00.465] [ERROR] ERROR! Could not validate main module js file. > [2024-09-16 15:04:00.466] [ERROR] ReferenceError: Log is not defined > at Object. (/home/awwbaker/MagicMirror/modules/MMM-RAIN-MAP/MMM-RAIN-MAP.js:28:158622) > at Module._compile (node:internal/modules/cjs/loader:1373:14) > at Module._extensions…js (node:internal/modules/cjs/loader:1432:10) > at Module.load (node:internal/modules/cjs/loader:1215:32) > at Module._load (node:internal/modules/cjs/loader:1031:12) > at c._load (node:electron/js2c/node_init:2:17025) > at Module.require (node:internal/modules/cjs/loader:1240:19) > at require (node:internal/modules/helpers:179:18) > at Class.loadModuleDefaultConfig (/home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:314:30) > at /home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:268:26 > at FSReqCallback.oncomplete (node:fs:198:5) -
Thank you so much for the info…I am a running a RPI-5.
-
@awwbaker said in Problem Adding Buttons & required Remote-Control Modules:
[2024-09-16 15:04:01.418] [LOG] Initialize button monitor_control on PIN 25
[2024-09-16 15:04:01.419] [LOG] MMM-Buttons: RPi model Raspberry Pi 5 Model B Rev 1.0
[2024-09-16 15:04:01.419] [LOG] MMM-Buttons: RPi5 detected
[2024-09-16 15:04:01.433] [LOG] Initialize button power on PIN 24
[2024-09-16 15:04:01.434] [LOG] MMM-Buttons: RPi model Raspberry Pi 5 Model B Rev 1.0
[2024-09-16 15:04:01.434] [LOG] MMM-Buttons: RPi5 detecteddid you test to make sure the buttons work outside MM?
-
it seems that the MMM-Jast module is throwing the error:
[2024-09-16 15:04:00.408] [ERROR] ReferenceError: Log is not defined at Object. (/home/awwbaker/MagicMirror/modules/MMM-Jast/MMM-Jast.js:14:6243) -
@MarcLandis its because MagicMirror-remote-control is doing a require() on the module js
-
Mr @sdetweil
I tested my button press using:import RPi.GPIO as GPIO
import timeGPIO.setmode(GPIO.BCM)
GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP)while True:
input_state = GPIO.input(6)
if input_state == False:
print(‘Button Pressed’)
time.sleep(0.2)That worked fine. I found the module MMM-ModuleToggleButton which seemed a bit simpler and directly what wanted to do. The demo script used GPIO 6 so used default. Do i need to use a pull_down resister? Thank Thank you again! VR Anthony
PS: Sam I looked for a link to buy you a cup of coffee, not found, but if you have one, please forward?
-
Mr @sdetweil, I also noted the below error ? Thank you!
[2024-09-20 16:36:07.413] [LOG] Sockets connected & modules started …
[2024-09-20 16:36:10.523] [LOG] Launching application.
[2024-09-20 16:36:15.920] [INFO] System information:SYSTEM: manufacturer: ; model: ; raspberry: undefined; virtual: false
OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch: arm64; kernel: 6.6.47+rpt-rpi-v8
VERSIONS: electron: 31.1.0; used node: 20.14.0; installed node: 22.9.0; npm: 10.8.3; pm2: 5.4.1
OTHER: timeZone: America/New_York; ELECTRON_ENABLE_GPU: undefined
[2024-09-20 16:36:20.989] [ERROR] Whoops! There was an uncaught exception…
[2024-09-20 16:36:21.019] [ERROR] Error: EINVAL: invalid argument, write
at Object.writeFileSync (node:fs:2346:20)
at exportGpio (/home/awwbaker/MagicMirror/modules/MMM-ModuleToggleButton/node_modules/onoff/onoff.js:18:8)
at new Gpio (/home/awwbaker/MagicMirror/modules/MMM-ModuleToggleButton/node_modules/onoff/onoff.js:172:36)
at Class.socketNotificationReceived (/home/awwbaker/MagicMirror/modules/MMM-ModuleToggleButton/node_helper.js:20:22)
at Socket. (/home/awwbaker/MagicMirror/js/node_helper.js:98:11)
at Socket.emit (node:events:519:28)
at Socket.emitUntyped (/home/awwbaker/MagicMirror/node_modules/socket.io/dist/typed-events.js:69:22)
at /home/awwbaker/MagicMirror/node_modules/socket.io/dist/socket.js:704:39
at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
errno: -22,
code: ‘EINVAL’,
syscall: ‘write’
}
[2024-09-20 16:36:21.022] [ERROR] MagicMirror² will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
[2024-09-20 16:36:21.027] [ERROR] If you think this really is an issue, please open an issue on GitHub: https://github.com/MagicMirrorOrg/MagicMirror/issues
[2024-09-20 16:36:21.066] [LOG] Create new calendarfetcher for url: http://p134-caldav.icloud.com/published/2/ODY3MDc3ODQxODY3MDc3OIsPCPqyTd7gfFTuhUgnU3E8veSROaMD9lC0bXMqbeTrcdUcRFgL2q0GROkcc6XtdbepSRYxUGbDtoDb3se2UkE - Interval: 604800000
[2024-09-20 16:36:21.372] [LOG] Create new calendarfetcher for url: http://p134-caldav.icloud.com/published/2/ODY3MDc3ODQxODY3MDc3OIsPCPqyTd7gfFTuhUgnU3HnE0ZEnCaHErJrwvkzJ3o- - -
@awwbaker ps: i don’t accept coffee etc. i do this because i truly enjoy it.
i love the challenge, the great people here, and the fascinatingly huge amount of differences among all your designs. -
-
Dear Mr @sdetweil
I think you are teaching me to fish…Did you see the error message below? Beyond the below, I booted the RPI 3B+, ran the “pinctrl set 6 op dl” command. Started MM and as previously the expected modules were hidden on start up. Pressing pushbutton did not have any affect on the display. I ran the button.py script and the button was sensed as previous. As your time permits I could use another push. Your efforts are VERY appreciated. VR Anthony Baker2024-09-21 13:33:31.232] [LOG] Connecting socket for: MMM-MktIndex
[2024-09-21 13:33:31.234] [LOG] Sockets connected & modules started …
[1856:0921/133334.081312:ERROR:object_proxy.cc(576)] Failed to call method: org.freedesktop.DBus.StartServiceByName: object_path= /org/freedesktop/DBus: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
[2024-09-21 13:33:35.622] [LOG] Launching application.
[2024-09-21 13:33:55.076] [INFO] System information:SYSTEM: manufacturer: ; model: ; raspberry: undefined; virtual: false
OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch: arm64; kernel: 6.6.47+rpt-rpi-v8
VERSIONS: electron: 31.1.0; used node: 20.14.0; installed node: 22.9.0; npm: 10.8.3; pm2:
OTHER: timeZone: America/New_York; ELECTRON_ENABLE_GPU: undefined
[2024-09-21 13:33:58.321] [ERROR] Whoops! There was an uncaught exception…
[2024-09-21 13:33:58.343] [ERROR] Error: EINVAL: invalid argument, write
at Object.writeFileSync (node:fs:2346:20)
at exportGpio (/home/awwbaker/MagicMirror/modules/MMM-ModuleToggleButton/node_modules/onoff/onoff.js:18:8)
at new Gpio (/home/awwbaker/MagicMirror/modules/MMM-ModuleToggleButton/node_modules/onoff/onoff.js:172:36)
at Class.socketNotificationReceived (/home/awwbaker/MagicMirror/modules/MMM-ModuleToggleButton/node_helper.js:20:22)
at Socket. (/home/awwbaker/MagicMirror/js/node_helper.js:98:11)
at Socket.emit (node:events:519:28)
at Socket.emitUntyped (/home/awwbaker/MagicMirror/node_modules/socket.io/dist/typed-events.js:69:22)
at /home/awwbaker/MagicMirror/node_modules/socket.io/dist/socket.js:704:39
at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
errno: -22,
code: ‘EINVAL’,
syscall: ‘write’
}
[2024-09-21 13:33:58.345] [ERROR] MagicMirror² will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
[2024-09-21 13:33:58.347] [ERROR] If you think this really is an issue, please open an issue on GitHub: https://github.com/MagicMirrorOrg/MagicMirror/issues
[1976:0921/133401.533219:ERROR:gl_utils.cc(424)] [.WebGL-0x34004b5b00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels
[2024-09-21 13:34:01.636] [LOG] Create new calendarfetcher for url: http://p134-caldav.icloud.com/published/2/ODY3MDc3ODQxODY3MDc3OIsPCPqyTd7gfFTuhUgnU3E8veSROaMD9lC0bXMqbeTrcdUcRFgL2q0GROkcc6XtdbepSRYxUGbDtoDb3se2UkE - Interval: 604800000 -
@awwbaker i am on my phone, i can’t edit, and it wants to quote whole thing .
the os has changed the rules
i posted a response the other day to a topic that had some workarounds without coding changes
-
Dear Mr @sdetweil
Please see above, it seems “on-off” is throwing errors. It seems it is used by Remote-Control-Modules as well as Buttons. I wnet back and tried buttons. The error is below: Thank you very much. Anthony[2024-09-22 11:34:50.557] [LOG] Launching application.
[2024-09-22 11:35:05.029] [ERROR] ERROR! Could not validate main module js file.
[2024-09-22 11:35:05.037] [ERROR] ReferenceError: Log is not defined
at Object. (/home/awwbaker/MagicMirror/modules/MMM-RAIN-MAP/MMM-RAIN-MAP.js:28:158622)
at Module._compile (node:internal/modules/cjs/loader:1373:14)
at Module._extensions…js (node:internal/modules/cjs/loader:1432:10)
at Module.load (node:internal/modules/cjs/loader:1215:32)
at Module._load (node:internal/modules/cjs/loader:1031:12)
at c._load (node:electron/js2c/node_init:2:17025)
at Module.require (node:internal/modules/cjs/loader:1240:19)
at require (node:internal/modules/helpers:179:18)
at Class.loadModuleDefaultConfig (/home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:314:30)
at /home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:268:26
at FSReqCallback.oncomplete (node:fs:198:5)
[2024-09-22 11:35:05.689] [INFO] System information:SYSTEM: manufacturer: ; model: ; raspberry: undefined; virtual: false
OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch: arm64; kernel: 6.6.47+rpt-rpi-v8
VERSIONS: electron: 31.1.0; used node: 20.14.0; installed node: 22.9.0; npm: 10.8.3; pm2:
OTHER: timeZone: America/New_York; ELECTRON_ENABLE_GPU: undefined
[2024-09-22 11:35:13.286] [LOG] Initialize button monitor_control on PIN 6
[2024-09-22 11:35:13.293] [ERROR] Whoops! There was an uncaught exception…
[2024-09-22 11:35:13.318] [ERROR] Error: EINVAL: invalid argument, write
at Object.writeFileSync (node:fs:2346:20)
at exportGpio (/home/awwbaker/MagicMirror/modules/MMM-Buttons/node_modules/onoff/onoff.js:18:8)
at new Gpio (/home/awwbaker/MagicMirror/modules/MMM-Buttons/node_modules/onoff/onoff.js:172:36)
at Class.intializeButton (/home/awwbaker/MagicMirror/modules/MMM-Buttons/node_helper.js:74:19)
at Class.intializeButtons (/home/awwbaker/MagicMirror/modules/MMM-Buttons/node_helper.js:90:18)
at Class.socketNotificationReceived (/home/awwbaker/MagicMirror/modules/MMM-Buttons/node_helper.js:26:18)
at Socket. (/home/awwbaker/MagicMirror/js/node_helper.js:98:11)
at Socket.emit (node:events:519:28)
at Socket.emitUntyped (/home/awwbaker/MagicMirror/node_modules/socket.io/dist/typed-events.js:69:22)
at /home/awwbaker/MagicMirror/node_modules/socket.io/dist/socket.js:704:39
at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
errno: -22,
code: ‘EINVAL’,
syscall: ‘write’
}
[2024-09-22 11:35:13.335] -
@awwbaker yes as i posted before
errno: -22,
code: ‘EINVAL’,
syscall: ‘write’
}the os has changed how this needs to be done
i posted a link to suggestions on how to resolve it without code changesthe Log not found is caused by the remotecontrol module
-
Thank you, I tried the pinctrl to no avail. Thank you though! Anthony
-
@awwbaker did you solve this?
-
@sdetweil Sorry have been on travel last several weeks. No I never did. I have the remote control module in and working just never could not get the button push. I have mmm-GroveGesture installed and working with sensor. Still working towards getting modules to hide and show. Could I ask another question???
What can/should I do on this?:
[2024-10-28 10:10:15.299] [ERROR] ERROR! Could not validate main module js file. [2024-10-28 10:10:15.528] [ERROR] ReferenceError: Log is not defined at Object.<anonymous> (/home/awwbaker/MagicMirror/modules/MMM-RAIN-MAP/MMM-RAIN-MAP.js:28:158622) 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:17025) at Module.require (node:internal/modules/cjs/loader:1318:19) at require (node:internal/modules/helpers:179:18) at Class.loadModuleDefaultConfig (/home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:318:30) at /home/awwbaker/MagicMirror/modules/MMM-Remote-Control/node_helper.js:272:26 at FSReqCallback.oncomplete (node:fs:198:5) ---------------------------------------------------- -
@awwbaker remote control is loading the main js from other modules, but in the wrong runtime context.
i don’t know why it is doing that
-
@sdetweil ,
Hmmm…thanks Sam!!! -
Hi guys, I’ve been trying to figure this out too. I think I’m close with these two files using ‘pinctrl’ instead of ‘/sys/class/gpio/’ but I can’t figure out what I’m missing.
Based on the console log it looks like there’s an issue in my node_helper file, possible with the socketNotification functions because I’m not seeing any of my test messages.
And based on the log files there may be something missing from the package.json file because sometimes I get this error “Error: Cannot find module ‘node helper’ MODULE_NOT_FOUND” but other times I don’t. And I tried running this fix but couldn’t get it to work.
[https://forum.magicmirror.builders/user/jorickjuh](link url)Other than that I’m not seeing any other errors and module does appear to be working but it’s just not processing any button presses. I’ll keep trying but I’ll post my progress so far on here in case someone can see what I’m missing.
test file:
Module.register("MMM-PinToggleTest", { defaults: { pin: 19, modulesToToggle: ["clock", "calendar"], interval: 1000 }, //consol.log("MMM-PinToggleTest is starting..."); start: function() { Log.info("MMM-PinToggleTest is starting, sending CONFIG..."); consol.log("MMM-PinToggleTest is starting, sending CONFIG..."); this.sendSocketNotification("CONFIG", { interval: this.config.interval, pin: this.config.pin }); }, start: function() { console.log("MMM-PinToggleTest started"); this.previousPinState = null; // Request initial pin check from the helper this.sendSocketNotification("CONFIG", this.config); }, socketNotificationReceived: function(notification, payload) { if (notification === "PIN_STATE") { const pinState = payload; console.log(`Received pin state: ${pinState}`); // Log received state // Toggle modules based on pin state if (pinState !== this.previousPinState) { this.previousPinState = pinState; this.toggleModules(pinState === 1); } } }, toggleModules: function(show) { console.log(`Toggling modules to ${show ? "show" : "hide"}`); this.config.modulesToToggle.forEach(moduleName => { const modules = MM.getModules().withClass(moduleName); modules.forEach(module => { if (show) { module.show(1000); // Show module with fade-in effect } else { module.hide(1000); // Hide module with fade-out effect } }); }); }, getDom: function() { const wrapper = document.createElement("div"); wrapper.innerHTML = "<small>MMM-PinToggleTest</small>"; return wrapper; } });node_helper:
const NodeHelper = require("node_helper"); const exec = require("child_process").exec; //const rpio = require("rpio"); //const Gpio = require("onoff").Gpio; module.exports = NodeHelper.create({ start: function() { console.log("node_helper for MMM-PinToggleTest has started."); // Confirm helper initialization this.previousPinState = null; this.lastChangeTime = 0; this.debounceDelay = 200; }, socketNotificationReceived: function(notification, payload) { if (notification === "CONFIG") { console.log("Received CONFIG in node_helper:", payload); // Log receipt of configuration this.config = payload; this.schedulePinCheck(); } }, schedulePinCheck: function() { console.log(`Setting up pin check every ${this.config.interval} ms`); // Confirmation log setInterval(() => { this.checkPinState(); }, this.config.interval); }, checkPinState: function() { const pinNumber = this.config.pin; exec(`pinctrl ${pinNumber}`, (error, stdout, stderr) => { if (error) { console.error(`Error reading GPIO pin ${pinNumber}: ${stderr}`); return; } const pinState = parseInt(stdout.trim(), 10); const now = Date.now(); console.log(`Current pin state for GPIO ${pinNumber}: ${pinState}`); if (pinState !== this.previousPinState && (now - this.lastChangeTime > this.debounceDelay)) { this.previousPinState = pinState; this.lastChangeTime = now; console.log(`Pin state changed to ${pinState} at ${new Date(now).toISOString()}`); this.sendSocketNotification("PIN_STATE", pinState); // Small delay to avoid multiple triggers //setTimeout(() => {}, 100); } }); } });
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