Read the statement by Michael Teeuw here.
VoiceControl module
-
thanks again it’s working :)
i made a notification.js:
notificationReceived: function(notification, payload, sender) { var self = this; if (notification === "go_to_sleep"){ this.config.text = "going to sleep..."; this.updateDom(this.config.animationSpeed); setTimeout(function(){ self.config.text = ""; self.updateDom(self.config.animationSpeed); }, 3000); } if (notification === "wake_up"){ this.config.text = "waking up..."; this.updateDom(this.config.animationSpeed); setTimeout(function(){ self.config.text = ""; self.updateDom(self.config.animationSpeed); }, 3000); } },
i have made a node_helper.js:
const NodeHelper = require('node_helper'); const exec = require('child_process').exec; module.exports = NodeHelper.create({ start: function () { this.started = false }, socketNotificationReceived: function(notification, payload) { if (notification === 'go_to_sleep' && this.started == false) { exec("/opt/vc/bin/tvservice -o", null); } if (notification === 'wake_up' && this.started == false) { exec("/opt/vc/bin/tvservice -p", null); } } });
It shows the command i speak for 3 seconds. But i can’t get the node helper working to actualy turn on and off my monitor. How can i bind this 2 modules? Or do i have to include it as a separate js file?
-
@tyho try
this.sendSocketNotification('go_to_sleep', {});
in notification.js otherwise the node_helper doesnt’t get any msg and will not perform any action -
Great! it’s working! thanks!
-
I still have a little problem. I want to register that if the monitor is on or off. It’s working very well except on the autosleep function that is loaded in the node_helper.
My notification.js
var awake = 1; Module.register("notification",{ // Default module config. defaults: { text: "", animationSpeed: 500, }, notificationReceived: function(notification, callback) { var self = this; if (notification === "go_to_sleep" && awake === 1){ this.config.text = "going to sleep..."; this.updateDom(this.config.animationSpeed); setTimeout(function(){ self.sendSocketNotification('go_to_sleep', {}); self.config.text = ""; self.updateDom(self.config.animationSpeed); }, 1000); awake = 0; callback(awake); } if (notification === "wake_up" && awake === 0){ this.sendSocketNotification('wake_up', {}); this.config.text = "waking up..."; this.updateDom(this.config.animationSpeed); setTimeout(function(){ self.config.text = ""; self.updateDom(self.config.animationSpeed); }, 5000); awake = 1; callback(awake); } if (notification === "autosleep"){ awake = 0; callback(awake); } }, // Override dom generator. getDom: function() { var wrapper = document.createElement("div"); wrapper.innerHTML = this.config.text; return wrapper; } });
and my node_helper.js
'use strict'; const NodeHelper = require('node_helper'); const exec = require('child_process').exec; var timer; function initialize() { } (function(){ initialize(); autosleep(); })(); function autosleep(){ timer=setTimeout(function(){ var self = this; exec("/opt/vc/bin/tvservice -o", null); self.sendSocketNotification('autosleep'); }, 10*60*1000); } module.exports = NodeHelper.create({ start: function () { }, socketNotificationReceived: function(notification) { if (notification === 'go_to_sleep') { exec("/opt/vc/bin/tvservice -o", null); clearTimeout(timer); } if (notification === 'wake_up') { exec("/opt/vc/bin/tvservice -p", null); exec("/bin/fbset -depth 8 && /bin/fbset -depth 16 ", null); exec("/usr/bin/xrefresh",null); clearTimeout(timer); autosleep(); } } });
what i want is: if the autosleep function turns my monitor off, the variable awake in the notification.js set to 0.
any other suggestion on junky code are also welcome ^^
-
If you override socketNotificationReceived in your module then you should receive the message from node_helper and can reset your flag appropriately.
-
@alexyak how to override that module? I already call it with notifications === ‘autosleep’. And that notification gets send by the node_helper right? what am i missing?
-
@tyho What I meant is you need to add socketNotificationReceived to your module notification.js.
-
@alexyak i can’t get it to work. it tested:
It sends sockets notifications from notifications.js to node_helper.js. But not from node_helper.js back to notifications.js.Even if i put it in the start function of the node_helper.js:
start: function() { this.sendSocketNotification("autosleep", {}); },
it won’t get received it my notification.js:
socketNotificationReceived: function(notification) { if (notification === "autosleep") { alert("autosleep received"); awake = 0; } },
any idea? is it even possible to use it backwards?
-
Try to put a call in your start method of the module (notification.js) to establish the connection with node_helper. Something like that:
this.sendSocketNotification(“CONNECT”, {});
-
I’ve updated the VoiceControl module to display a list of commands on the mirror:
[ card : alexyak/voicecontrol ]