A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
Read the statement by Michael Teeuw here.
Motion Detector and OSX
-
@0v3rNuLL said in Motion Detector and OSX:
pmset displaysleepnow blocked by app electron.js
there is an npm module to work around that it appears
-
hi sdetweil!
I try on node_helper.js located on MMM-MotionDetector at the begining and did not work still getting display slep prevented by electron
here is the part i change
//////Original code///// const NodeHelper = require("node_helper"); const exec = require("child_process").exec; /////////////////// const { powerSaveBlocker } = require('electron'); const id = powerSaveBlocker.start('prevent-app-suspension'); console.log(powerSaveBlocker.isStarted(id)); powerSaveBlocker.stop(id)
Its the correct place ?
Sorry but im totally new on node.
Thanks in advance -
@0v3rNuLL said in Motion Detector and OSX:
complete node helper
const NodeHelper = require("node_helper"); const exec = require("child_process").exec; const { powerSaveBlocker } = require('electron'); module.exports = NodeHelper.create({ start: function () { this.started = false; this.isMonitorOn(function(result) { console.log("MMM-MotionDetector: monitor on " + result); }); }, activateMonitor: function () { this.isMonitorOn(function(result) { if (!result) { let id = powerSaveBlocker.start('prevent-app-suspension'); if(powerSaveBlocker.isStarted(id)) powerSaveBlocker.stop(id) exec("vcgencmd display_power 1", function(err, out, code) { if (err) { console.error("MMM-MotionDetector: error activating monitor: " + code); } else { console.log("MMM-MotionDetector: monitor has been activated"); } }); } }); this.started = false; }, deactivateMonitor: function () { this.isMonitorOn(function(result) { if (result) { let id = powerSaveBlocker.start('prevent-app-suspension'); if(powerSaveBlocker.isStarted(id)) powerSaveBlocker.stop(id) exec("vcgencmd display_power 0", function(err, out, code) { if (err) { console.error("MMM-MotionDetector: error deactivating monitor: " + code); } else { console.log("MMM-MotionDetector: monitor has been deactivated"); } }); } }); this.started = false; }, isMonitorOn: function(resultCallback) { exec("vcgencmd display_power", function(err, out, code) { if (err) { console.error("MMM-MotionDetector: error calling monitor status: " + code); return; } console.log("MMM-MotionDetector: monitor " + out); resultCallback(out.includes("=1")); }); }, // Subclass socketNotificationReceived received. socketNotificationReceived: function (notification, payload) { if (notification === "MOTION_DETECTED" && this.started === false) { console.log("MMM-MotionDetector: MOTION_DETECTED, score " + payload.score); this.started = true; this.activateMonitor(); } if (notification === "DEACTIVATE_MONITOR" && this.started === false) { console.log("MMM-MotionDetector: DEACTIVATE_MONITOR"); this.started = true; this.deactivateMonitor(); } } });
-
Finally figured it out, this module now can put the screen off and on (osx el capitan).
Here is the modification for node_helpder.jsconst NodeHelper = require("node_helper"); const exec = require("child_process").exec; var cmd=require('node-cmd'); // install node-cmd (npm install node-cmd) first and add excute command osx style then change exec to cmd.get <-- return the result to analize module.exports = NodeHelper.create({ start: function () { this.started = false; this.isMonitorOn(function(result) { console.log("MMM-MotionDetector: monitor on " + result); }); }, activateMonitor: function () { this.isMonitorOn(function(result) { if (!result) { cmd.get('caffeinate -u -t 1', function(err, out, code) { if (err) { console.error("MMM-MotionDetector: error activating monitor: " + code); } else { console.log("MMM-MotionDetector: monitor has been activated"); } }); } }); this.started = false; }, deactivateMonitor: function () { this.isMonitorOn(function(result) { if (result) { cmd.get('pmset displaysleepnow', function(err, out, code) { if (err) { console.error("MMM-MotionDetector: error deactivating monitor: " + code); } else { console.log("MMM-MotionDetector: monitor has been deactivated"); } }); } }); this.started = false; }, isMonitorOn: function(resultCallback) { cmd.get('pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29', function(err, out, code) { console.log("MMM-MotionDetector: monitor " + out); if (err) { console.error("MMM-MotionDetector: error calling monitor status: " + code); return; } console.log("MMM-MotionDetector: monitor " + out); resultCallback(out.includes("4")); // <4 is off }); }, // Subclass socketNotificationReceived received. socketNotificationReceived: function (notification, payload) { if (notification === "MOTION_DETECTED" && this.started === false) { console.log("MMM-MotionDetector: MOTION_DETECTED, score " + payload.score); this.started = true; this.activateMonitor(); } if (notification === "DEACTIVATE_MONITOR" && this.started === false) { console.log("MMM-MotionDetector: DEACTIVATE_MONITOR"); this.started = true; this.deactivateMonitor(); } } });
This can be marked as SOLVED :slightly_smiling_face:
-
Icant post the entire code so, link to pastebin :)