Read the statement by Michael Teeuw here.
VoiceControl module
-
@tyho said in VoiceControl module:
notificationReceived
You can put it in any other module that you would like to react on the voice command and then just call self.updateDom(self.config.animationSpeed);
-
Wow! @alexyak nice work. I got it running. and i am playing around with it.
1 question:
I want to display the commands i said for 3 seconds.If i say a command i can get the text with:
this.config.text = “going to sleep…”;
this.updateDom(this.config.animationSpeed);Is there a way to auto reset it to default/hide after a few seconds? (i am trying this for hours already ^^)
-
@tyho, you can use setTimeout function to wait a for few seconds and then reset the text value. Something like that:
var self = this;
setTimeout(function(){
self.config.text = “”;
self.updateDom …
}, 3000); -
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.