Read the statement by Michael Teeuw here.
VoiceControl module
-
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 ]
-
[card:alexyak/voicecontrol]
-
This is a really cool module. Does anyone know a good microphone that will work for the whole room? The mic I have only works when you are close.
-
Hi,
@alexyak sorry, but i have a little Problem. Maybe you can help me.
You write on Github in your Readme file, I have to put the code (notificationReceived: function(notification, payload, sender)…) into the module to use it. I like to controll the module Simple music player by @EoF so i clone your github files copy the code into the config.js File train and download a pmdl file. But where should i paste the code notificationReceived: function(notification, payload, sender)… In the config.js File or in the mmm-music-player.js file in folder modules simple music Player?
Sorry i’m new in the coding world, and now a little bit confused :-D
Greets gismo2006
-
@gismo2006 This part has to go into
mm-music-player.js
. This is where you receive the notification. Then instead ofthis.media.play()
you have to do access the play and stop functions of the mm-music-player (which unfortunately is seems a little bit complicated, since they are only elements on the web page).Edit: Maybe the easiest is to give the Play and Stop button an
id
and then ‘fake’ a click event on the the buttons.var playButton = document.getElementById('play-button'); playButton.click();
-
Hi @Jopyth thank you for your helping.
But I think i’m to stupid… :-(
I have copy your first code line into the mm-music-player.js file. But now the module isn’t shown at the mirror. But the mirror shows all other module i installed at the same time… (I use pavrios Facial-Recogination module) If I cut out your line the mirrors behaviour is like it should be. On searching my misstake i found a line called: var playButton = document.createElement(“div”);. I cut this line and put in your line but nothing.
greets gismo
-
@gismo2006 Have you put this into the notificationReceived function, e.g. in line 26?
notificationReceived: function(notification, payload, sender) { if (notification === "PLAY_MUSIC"){ var playButton = document.getElementById('play-button'); playButton.click(); } if (notification === "STOP_MUSIC"){ var stopButton = document.getElementById('stop-button'); stopButton.click(); } },
Also add the id somewhere here, e.g. with
playButton.id = 'play-button'
Same for the stop button.
-
Hey, thank you for your help!
I really like to say many many thank that you spend your time to help me.
I will try it today evening again, because now my little son likes to play whit me. :-)
greets gismo
-
@Pierre @simonsays
First of all sorry for the long waiting…
I guess u already have run the voice control module with the speech files (pmdl) from snopwboy and put this in your root.
Here is my config part for the VoiceControl module:{ module: 'voicecontrol', config: { models: [ { keyword: "gotosleep", // keyword file: "gotosleep.pmdl", // trained model file name message: "go_to_sleep" // notification message that's broadcast in the MagicMirror app }, { keyword: "wake up", // keyword file: "Wake_up.pmdl", // trained model file name message: "wake_up" // notification message that's broadcast in the MagicMirror app }, ] } }, { module: 'notification', position: 'bottom_right', // This can be any of the regions. },
Because the voicecontrol module send a notafication to all other modules i wrote a separate module to show text messages for what is happening:
notification.js/* global Module */ /* Magic Mirror * Module: notification */ var awake = 1; Module.register("notification",{ // Default module config. defaults: { text: "", animationSpeed: 500, }, start: function() { this.sendSocketNotification("CONNECT", {}); }, 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); } }, socketNotificationReceived: function(notification) { if (notification === "autosleep") { awake = 0; } }, // Override dom generator. getDom: function() { var wrapper = document.createElement("div"); wrapper.innerHTML = this.config.text; return wrapper; } });
In my node helper i put the exec code to turn on and off my monitor.
node_helper.js'use strict'; const NodeHelper = require('node_helper'); const exec = require('child_process').exec; var timer; //function initialize() { //} //(function(){ // initialize(); // autosleep(); //})(); module.exports = NodeHelper.create({ start: function() { this.started = false; }, socketNotificationReceived: function(notification) { if (notification === "CONNECT") { clearTimeout(timer); this.autosleep(); } 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); this.autosleep(); } }, autosleep: function(){ var self = this; timer=setTimeout(function(){ exec("/opt/vc/bin/tvservice -o", null); self.sendSocketNotification("autosleep", {}); }, 10*60*1000); } });
I also put conditions in it so it can only wake up when it’s asleep. There is also a autosleep function thats now on 10 minutes.