<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[How to send a notification]]></title><description><![CDATA[<p dir="auto">So I’ve been playing around with this or a while now but cant seem to get it. I essentially want to send a notification to a modules using another. Sounds simple but I cant find any examples on how to do this. If anyone can help that would be great I’m sure its something simple in the end but please have a look at the below files and let me know what I’m missing and where, many thanks in advance!</p>
<p dir="auto">Node_Helper.js for MMM-ALEXACONTROL</p>
<pre><code>/**
 * Magic Mirror
 * Node Helper: MMM-AlexaControl
 * 
 * By JoChef2
 * MIT Licensed.
 */

var NodeHelper = require("node_helper");
var FauxMo = require('node-fauxmo');
var pm2 = require('pm2');
const exec = require("child_process").exec;

module.exports = NodeHelper.create({
	
	start: function () {
        console.log('MMM-AlexaControl helper, started...');
        this.config = null;
        this.setDevicesCounter = 0;  //  Counter for only one node_helper start look line 225 
    },
	
    formattedName: function(devname,actionString){
        var result=actionString
        if(devname != undefined){
            var s = actionString.split(' ')
            if(s.length&gt;1)
                s.splice(1,0,devname)
            else
                s.unshift(devname)
            result = s.join(' ')
        }        
        return result;
    },
    
	setDevices: function(){
        _this = this;

        cD = this.customDevices(this.config.devices);
        nD = this.notificationDevices(cD, this.config.notifications);
        coD = this.commandDevices(nD, this.config.commands)
        pD = this.pageDevices(coD);
        mD = this.menuDevices(pD);
        //console.log(pD);
        //console.log(mD);

        fauxMoPages = new FauxMo(mD);       // creates fauxmo devices
    },

    customDevices : function(customD){      //  creates your custom devices from config
        _this = this
        for(i = 0; i &lt; Object.keys(customD.devices).length; i++){
            if(customD.devices[i].port === undefined){
                customD.devices[i].port = _this.config.startPort + 30 + i;
            }
            customD.devices[i].handler = new Function('action', customD.devices[i].handler)
        }
        return customD;
    },

    notificationDevices: function(notificationD, notifications){    //  creates your notification devices
        _this = this

        counter = 0 + Object.keys(notificationD.devices).length        
        _this.n = []

        for(i = 0; i &lt; Object.keys(notifications).length; i++){
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],notifications[i].name)
            if(notifications[i].port === undefined){
                device.port = _this.config.startPort + 50 + i
            }else{
                device.port = notifications[i].port
            }
            if(notifications[i].OnOff){
                _this.n[i] = notifications[i].notification
                device.handler = new Function('action', 'if(action === 1){_this.sendSocketNotification("CUSTOM",' + JSON.stringify(_this.n[i][0]) + ')}else{_this.sendSocketNotification("CUSTOM",' + JSON.stringify(_this.n[i][1]) + ')}')
            }else{
                _this.n[i] = notifications[i].notification
                device.handler = new Function('action', '_this.sendSocketNotification("CUSTOM",' + JSON.stringify(_this.n[i]) + ')')
            }
            notificationD.devices[i + counter] = device
        }
        return notificationD;
    }, 

    commandDevices: function(commandD, commands){
        _this = this

        counter = 0 + Object.keys(commandD.devices).length        
        _this.n = []
        _this.opts = { timeout: 8000 };
        _this.exec = exec

        for(i = 0; i &lt; Object.keys(commands).length; i++){
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],commands[i].name)
            if(commands[i].port === undefined){
                device.port = _this.config.startPort + 75 + i
            }else{
                device.port = commands[i].port
            }
            _this.n[i] = commands[i].command
            if(commands[i].OnOff){
                device.handler = new Function('action', 'if(action === 1){_this.exec(' + JSON.stringify(_this.n[i][0]) + '), _this.opts, (error, stdout, stderr) =&gt; {_this.checkForExecError(error, stdout, stderr); }}else{_this.exec(' + JSON.stringify(_this.n[i][1]) + '), _this.opts, (error, stdout, stderr) =&gt; {_this.checkForExecError(error, stdout, stderr); }}')
            }
            else{
                device.handler = new Function('action', 'if(action === 1){_this.exec(' + JSON.stringify(_this.n[i]) + '), _this.opts, (error, stdout, stderr) =&gt; {_this.checkForExecError(error, stdout, stderr); }}')
            }
            commandD.devices[i + counter] = device
        }
        return commandD;
    },

    pageDevices: function(pageD){      //  creates your page devices
        _this = this;

        counter = 0 + Object.keys(pageD.devices).length
        this.pPort = _this.config.startPort

        if(_this.config.pages &gt; 0){
            for(i = 0; i &lt; _this.config.pages; i++){
                device = {}
                device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["page"] + (i + 1))
                device.port = _this.pPort - 100
                device.handler = new Function('action', `_this.sendSocketNotification("PAGE_CHANGED", ` + i +`)`)

                pageD.devices[i + counter] = device
                this.pPort++
            }
        }
        return pageD
    },

    menuDevices: function(menuD){       //  create your devices to control the Mirror and pi
        _this = this;
        var opts = { timeout: 8000 };
        //console.log("menu device ")
        counter = 0 + Object.keys(menuD.devices).length

        if(this.config.refresh){
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["refresh"])
            device.port = _this.config.startPort
            device.handler = function(action) {_this.sendSocketNotification("ACTION", "refresh")}

            menuD.devices[counter] = device;
            counter++;
        }
        _this.config.startPort++

        if(this.config.restart){        // only with PM2
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["restart"])
            device.port = _this.config.startPort
            device.handler = function(action) {
                pm2.connect((err) =&gt; {
                    if (err) {
                        console.error(err);
                    }
        
                    console.log("Restarting PM2 process: " + _this.config.pm2ProcessName);
                    pm2.restart(_this.config.pm2ProcessName, function(err, apps) {
                        pm2.disconnect();
                        if (err) { console.log(err); }
                    });
                });
            }
            
            menuD.devices[counter] = device;
            counter++;
        }
        _this.config.startPort++
        
        if(this.config.stop){        // only with PM2
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["stop"])
            device.port = _this.config.startPort
            device.handler = function(action) {
                pm2.connect((err) =&gt; {
                    if (err) {
                        console.error(err);
                    }
        
                    console.log("Stopping PM2 process: " + _this.config.pm2ProcessName);
                    pm2.stop(_this.config.pm2ProcessName, function(err, apps) {
                        pm2.disconnect();
                        if (err) { console.log(err); }
                    });
                });
            }

            menuD.devices[counter] = device;
            counter++;
        }
        _this.config.startPort++
        
        if(this.config.reboot){        //reboot the pi
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["reboot"])
            device.port = _this.config.startPort
            device.handler = function(action) {
                exec("sudo shutdown -r now", opts, (error, stdout, stderr) =&gt; {
                     _this.checkForExecError(error, stdout, stderr); 
                    });
                }
            menuD.devices[counter] = device;
            counter++;
        }
        _this.config.startPort++
        
        if(this.config.shutdown){        // shutdwon the pi
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["shutdown"])
            device.port = _this.config.startPort
            device.handler = function(action) {
                exec("sudo shutdown -h now", opts, (error, stdout, stderr) =&gt; {
                    _this.checkForExecError(error, stdout, stderr); 
                });
            }           
            menuD.devices[counter] = device;
            counter++;
        }
        _this.config.startPort++

        /**
         * for me worked only vcgencmd display_power 0 and vcgencmd display_power 1
         * probably for you work tvservice --off and tvservice --preferred
         * test it in terminal if you aren't sure
         */
        
        if(this.config.monitorToggle){ 
        	console.log("monitorToggle requested")
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["monitor"])
            device.port = _this.config.startPort
            if(this.config.vcgencmd =='vcgencmd'){
                device.handler = function(action) {     
                    if(action === 1){
                        exec("vcgencmd display_power 1", opts, (error, stdout, stderr) =&gt; {
                            _this.checkForExecError(error, stdout, stderr); 
                        });
                    }if(action === 0){
                        exec("vcgencmd display_power 0", opts, (error, stdout, stderr) =&gt; {
                            _this.checkForExecError(error, stdout, stderr); 
                        });
                    }
                }
            }
            else if(this.config.vcgencmd =='tvservice'){
                device.handler = function(action) {     
                    if(action === 1){
                        exec("tvservice --preferred", opts, (error, stdout, stderr) =&gt; {
                            _this.checkForExecError(error, stdout, stderr);
                        });
                    }if(action === 0){
                        exec("tvservice --off", opts, (error, stdout, stderr) =&gt; {
                            _this.checkForExecError(error, stdout, stderr);
                        });
                    }
                }
            }
            else if(this.config.vcgencmd =='cec-client'){
                device.handler = function(action) {     
                    if(action === 1){
                        exec("echo \'on "+ _this.config.cecAddress +"\' | cec-client -s -d 1", opts, (error, stdout, stderr) =&gt; {
                            _this.checkForExecError(error, stdout, stderr);
                        });
                    }if(action === 0){
                        exec("echo \'standby "+ _this.config.cecAddress +"\' | cec-client -s -d 1", opts, (error, stdout, stderr) =&gt; {
                            _this.checkForExecError(error, stdout, stderr);
                        });
                    }
                }
            }
            else if(this.config.vcgencmd =='hide'){
            	console.log("configuring toggle with hide")
            	device.handler = function(action) {     
            		console.log("received monitor toggle with hide action="+action)
           	 		_this.sendSocketNotification('MONITOR_ACTION', action?"SLEEP_WAKE":"SLEEP_HIDE")
          		}	
            }
            else{
                device.handler = function(action){
                    console.log("Please configure the option vcgencmd")
                }
            }
            menuD.devices[counter] = device;
            counter++;
        }
        _this.config.startPort++

        if(this.config.usb){        // toggle usb power of your pi
            device = {}
            device.name = _this.formattedName(_this.translations["deviceName"],_this.translations["usb"])
            device.port = _this.config.startPort
            device.handler = function(action) {
                if(action === 0){
                    exec("echo '1-1' |sudo tee /sys/bus/usb/drivers/usb/unbind", opts, (error, stdout, stderr) =&gt; {
                        _this.checkForExecError(error, stdout, stderr); 
                    });
                }
                else{
                    exec("echo '1-1' |sudo tee /sys/bus/usb/drivers/usb/bind", opts, (error, stdout, stderr) =&gt; {
                        _this.checkForExecError(error, stdout, stderr); 
                    });
                }
            }           
            menuD.devices[counter] = device;
            counter++;
        }
        _this.config.startPort++
        return menuD; 
    },

  /*  monitorOff: function(){
        var opts = { timeout: 8000 };
        if(this.config.vcgencmd){
            exec("vcgencmd display_power 0", opts, (error, stdout, stderr) =&gt; {
                _this.checkForExecError(error, stdout, stderr); 
            });
        }else{
            exec("tvservice --off", opts, (error, stdout, stderr) =&gt; {
                _this.checkForExecError(error, stdout, stderr);
            });
        }
    }, */

    checkForExecError: function(error, stdout, stderr) {
        if (stderr) {
            console.log('stderr: "' + stderr + '"');
            return 1;
        }
        if (error !== null) {
            console.log('exec error: ' + error);
            return 1;
        }
        return 0;
    },
    
	socketNotificationReceived: function(notification, payload) {
		if(notification === "SET_DEVICE"){      //  set all your devices
            this.config = payload;
            if(this.setDevicesCounter === 0){   //  set your devices only the first time a 
                this.setDevices();              //  notification is received
                this.setDevicesCounter++;
            }
        }
        if(notification === "TRANSLATIONS"){    //  get translations and put them in an array
            this.translations = [];            
            this.translations = payload;
		}
	}	
});

</code></pre>
<p dir="auto">MMM- AlexaControl config.js</p>
<pre><code>/**
 * Magic Mirror
 * Module: MMM-AlexaControl
 * 
 * By JoChef2
 * MIT Licensed.
 */

Module.register("MMM-AlexaControl",{
     
    defaults:{
        image: true,    //  shows the image
        height: 265,    // heigth of the image
        width: 265,     // width of the image
        pages: 0,       //  number off pages in MMM-Pages module. 0 means you doesn't use it
        devices: {      //  empty object for your custom devices
            devices: []
        },
        notifications: [],  //  empty array for your notification devices
        commands: [],       // empty array for your command devices
        startPort: 11000,   //  the lowest used port
        refresh: true,      //  refresh your Mirror
        restart: true,      //  restart your Mirror with pm2
        stop: true,         //  stops your Mirror with pm2
        reboot: false,      //  reboot your pi
        shutdown: false,    //  shutdown your pi
        pm2ProcessName: "mm",  //  name of your pm2 process
        monitorToggle: true,   //  switch your monitor on and off
        vcgencmd: 'vcgencmd',  //  command you use for monitor toggle
        cecAddress: "0.0.0.0", //  Address for the cec-client
        usb: false          // toggle usb power of your pi
    },

    getTranslations: function(){            // add more translations
        return {
            en: "translations/en.json",
            de: "translations/de.json"
        }
    },

    start: function(){
        Log.log('Starting module: ' + this.name);

        // send all translations to node_helper
        this.sendSocketNotification('TRANSLATIONS', {"monitor": this.translate("MONITOR"), "shutdown": this.translate("SHUTDOWN"), "reboot": this.translate("REBOOT"), "page": this.translate("PAGE"), "refresh": this.translate("REFRESH"), "restart": this.translate("RESTART"), "stop": this.translate("STOP"), "usb": this.translate("USB"), "deviceName":this.translate(this.config.deviceName)});
        this.sendSocketNotification('SET_DEVICE', this.config);  // send the config to node_helper
    },

    getDom: function(){             // returns only an image or an empty div (necessary for MMM-Pages)
        if(this.config.image){
            let img = document.createElement("img");
            img.classList = "img";
            img.src = "MMM-AlexaControl/AlexaLogoGrey.png";
            img.height = this.config.height;
            img.width = this.config.width;
            return img;
        }else{
            return document.createElement("div");
        }
    },

    socketNotificationReceived: function(notification, payload) {
        if(notification === "PAGE_CHANGED"){              //  change pages of MMM-Pages
            this.sendNotification("PAGE_CHANGED", payload);
        }
        if(notification === "ACTION"){                    //  refresh the Mirror
            if(payload === "refresh"){
                window.location.reload(true);
            }
        } 
        if(notification === "SELFIE_SHOOT"){
            this.sendNotification("SELFIE_SHOOT");  //  send any notification to any module
        }
        if(notification =='MONITOR_ACTION'){
            Log.log('RECEIVE monitor NOTIFICATION='+payload)
            this.sendNotification(notification,payload)
        }
    }
 });

</code></pre>
<p dir="auto">Config.js</p>
<pre><code>/* Magic Mirror Config Sample
 *
 * By Michael Teeuw https://michaelteeuw.nl
 * MIT Licensed.
 *
 * For more information on how you can configure this file
 * see https://docs.magicmirror.builders/getting-started/configuration.html#general
 * and https://docs.magicmirror.builders/modules/configuration.html
 */
let config = {
	address: "localhost", 	// Address to listen on, can be:
							// - "localhost", "127.0.0.1", "::1" to listen on loopback interface
							// - another specific IPv4/6 to listen on a specific interface
							// - "0.0.0.0", "::" to listen on any interface
							// Default, when address config is left out or empty, is "localhost"
	port: 8080,
	basePath: "/", 	// The URL path where MagicMirror is hosted. If you are using a Reverse proxy
					// you must set the sub path here. basePath must end with a /
	ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"], 	// Set [] to allow all IP addresses
															// or add a specific IPv4 of 192.168.1.5 :
															// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
															// or IPv4 range of 192.168.3.0 --&gt; 192.168.3.15 use CIDR format :
															// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],

	useHttps: false, 		// Support HTTPS or not, default "false" will use HTTP
	httpsPrivateKey: "", 	// HTTPS private key path, only require when useHttps is true
	httpsCertificate: "", 	// HTTPS Certificate path, only require when useHttps is true

	language: "en",
	locale: "en-UK",
	logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
	timeFormat: 12,
	units: "metric",
	serverOnly:  true,
	// local for armv6l processors, default
	//   starts serveronly and then starts chrome browser
	// false, default for all NON-armv6l devices
	// true, force serveronly mode, because you want to.. no UI on this device

	modules: [
			{
		disabled: false,
		module:"MMM-Config",
		position:"top_right",  // the QR code (if requested) will appear here
		config:{
			showQR: false,
			//restart: "pm2",
			//force_update: true,
			//debug: true
			
		}
	},
	
    {
        module: 'MMM-AlexaControl',
        position: 'middle_center',
	notifications:[
    {
        name: 'Next page',
        port: 11102,
        OnOff: false,
        notification: ["PAGE_INCREMENT", 'payload']
    },
     {
        name: 'Previous page',
        port: 11103,
        OnOff: false,
        notification: ["PAGE_DECREMENT", 'payload']
    },
    {
        name: 'Selfie',
        port: 11104,
        OnOff: false,
        notification: ["SELFIE_SHOOT"]
    }
],

	config:{
		
            image: true,
	    deviceName: "mirror",
            pm2ProcessName: "mm",
            vcgencmd: "hide",
	    startPort: 11001,
	    refresh: true,
	    restart: true,
	    //stop: true,
	    reboot: true,
	    shutdown: true,
	    monitorToggle: true,
	    //cecAddress: "0.0.0.0",
	    //usb: false
	    pages: 2,
        }
    },
    {
    module: 'MMM-SleepWake',
    config:{
       //delay:  15,               // default
       mode: 'pi'
    }
},
 {
        module: 'MMM-pages',
	
        config: {
		pages: 2,
                modules:
                    [[ "MMM-Astro" ],
                     [ "MMM-OpenWeatherMapForecast", "compliments" ]],
                fixed: [ "clock", "MMM-page-indicator" ],
                hiddenPages: {
                    "screenSaver": [ "clock", "MMM-SomeBackgroundImageModule" ],
                    "admin": [ "MMM-ShowMeSystemStatsModule", "MMM-AnOnScreenMenuModule" ],
                },
        }
    },
    {
        module: 'MMM-page-indicator',
        position: 'bottom_bar',
        config: {
            pages: 2,
        }
    },
    {
	disabled: false,
	module: "MMM-Selfieshot",
    position: "bottom_center",
	config: {
    displayButton: "portrait",
	storePath: "/media/smartmirror/Storage/Photos",
	width:1280,
	height:720,
	quality: 100,
	device: null,
	shootMessage: "Smile!",
	shootCountdown: 3,
	displayCountdown: true,
	displayResult: true,
	playShutter: true,
	shutterSound: "shutter.mp3",
	}
},



		{
        disabled: false,
        module: 'MMM-Astro',
        position: 'top_left',
		      config: {
		      sign: "leo",
		      iconset: "4",
		      extend: false,
		             }
       },
       {
  		module: "MMM-OpenWeatherMapForecast",
  		header: "Weather",
  		position: "top_right",
  		classes: "default everyone",
  		disabled: true,
  		config: { 
    			iconset: "4c",
    			units: "metric",
    			useAnimatedIcons: true,
    			concise: false,
    			forecastLayout: "table",
    			showWind: true
  			}
		},
		


		{
			module: "alert",
		},
		{
			module: "updatenotification",
			position: "top_bar"
		},
		{
			module: "clock",
			position: "top_center"
		},
		
		{
			module: "compliments",
			position: "lower_third"
		},
		
		
		
	]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = config;}

</code></pre>
]]></description><link>https://forum.magicmirror.builders/topic/15896/how-to-send-a-notification</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 11:17:15 GMT</lastBuildDate><atom:link href="https://forum.magicmirror.builders/topic/15896.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Nov 2021 18:36:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to How to send a notification on Thu, 25 Nov 2021 21:46:58 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> yes makes sense and no I cant see any indication of a port opening up for any devices even.</p>
<p dir="auto">Dev Console tab on MM</p>
<pre><code>main.js:481 Initializing MagicMirror.
translator.js:128 Loading core translation file: translations/en.json
translator.js:146 Loading core translation fallback file: translations/en.json
loader.js:184 Load script: modules/MMM-Config/MMM-Config.js
module.js:509 Module registered: MMM-Config
MMM-Config.js:31 undefined is in init!
loader.js:155 Bootstrapping module: MMM-Config
loader.js:160 Scripts loaded for: MMM-Config
loader.js:203 Load stylesheet: modules/MMM-Config/MMM-Config.css
loader.js:162 Styles loaded for: MMM-Config
translator.js:107 MMM-Config - Load translationfalse: translations/en.json
loader.js:164 Translations loaded for: MMM-Config
loader.js:184 Load script: modules/MMM-AlexaControl/MMM-AlexaControl.js
module.js:509 Module registered: MMM-AlexaControl
loader.js:155 Bootstrapping module: MMM-AlexaControl
loader.js:160 Scripts loaded for: MMM-AlexaControl
loader.js:162 Styles loaded for: MMM-AlexaControl
translator.js:107 MMM-AlexaControl - Load translationfalse: translations/en.json
loader.js:164 Translations loaded for: MMM-AlexaControl
loader.js:184 Load script: modules/MMM-SleepWake/MMM-SleepWake.js
module.js:509 Module registered: MMM-SleepWake
loader.js:155 Bootstrapping module: MMM-SleepWake
loader.js:160 Scripts loaded for: MMM-SleepWake
loader.js:162 Styles loaded for: MMM-SleepWake
loader.js:164 Translations loaded for: MMM-SleepWake
loader.js:184 Load script: modules/MMM-pages/MMM-pages.js
module.js:509 Module registered: MMM-pages
loader.js:155 Bootstrapping module: MMM-pages
loader.js:160 Scripts loaded for: MMM-pages
loader.js:203 Load stylesheet: modules/MMM-pages/pages.css
loader.js:162 Styles loaded for: MMM-pages
loader.js:164 Translations loaded for: MMM-pages
loader.js:184 Load script: modules/MMM-page-indicator/MMM-page-indicator.js
module.js:509 Module registered: MMM-page-indicator
loader.js:155 Bootstrapping module: MMM-page-indicator
loader.js:160 Scripts loaded for: MMM-page-indicator
loader.js:203 Load stylesheet: vendor/css/font-awesome.css
loader.js:203 Load stylesheet: modules/MMM-page-indicator/page-indicators.css
loader.js:162 Styles loaded for: MMM-page-indicator
loader.js:164 Translations loaded for: MMM-page-indicator
loader.js:184 Load script: modules/MMM-Selfieshot/MMM-Selfieshot.js
module.js:509 Module registered: MMM-Selfieshot
loader.js:155 Bootstrapping module: MMM-Selfieshot
loader.js:160 Scripts loaded for: MMM-Selfieshot
loader.js:203 Load stylesheet: modules/MMM-Selfieshot/MMM-Selfieshot.css
loader.js:244 File already loaded: font-awesome.css
loader.js:162 Styles loaded for: MMM-Selfieshot
loader.js:164 Translations loaded for: MMM-Selfieshot
loader.js:184 Load script: modules/MMM-Astro/MMM-Astro.js
module.js:509 Module registered: MMM-Astro
loader.js:155 Bootstrapping module: MMM-Astro
loader.js:184 Load script: vendor/node_modules/moment/min/moment-with-locales.js
loader.js:160 Scripts loaded for: MMM-Astro
loader.js:203 Load stylesheet: modules/MMM-Astro/MMM-Astro.css
loader.js:162 Styles loaded for: MMM-Astro
loader.js:164 Translations loaded for: MMM-Astro
loader.js:184 Load script: modules/MMM-MoonPhase/MMM-MoonPhase.js
module.js:501 Check MagicMirror version for module 'MMM-MoonPhase' - Minimum version:  2.1.0 - Current version: 2.17.1
module.js:503 Version is ok!
module.js:509 Module registered: MMM-MoonPhase
loader.js:155 Bootstrapping module: MMM-MoonPhase
loader.js:160 Scripts loaded for: MMM-MoonPhase
loader.js:203 Load stylesheet: modules/MMM-MoonPhase/MMM-MoonPhase.css
loader.js:162 Styles loaded for: MMM-MoonPhase
translator.js:107 MMM-MoonPhase - Load translationfalse: translations/en.json
loader.js:164 Translations loaded for: MMM-MoonPhase
loader.js:184 Load script: modules/MMM-OpenWeatherMapForecast/MMM-OpenWeatherMapForecast.js
module.js:501 Check MagicMirror version for module 'MMM-OpenWeatherMapForecast' - Minimum version:  2.2.0 - Current version: 2.17.1
module.js:503 Version is ok!
module.js:509 Module registered: MMM-OpenWeatherMapForecast
loader.js:155 Bootstrapping module: MMM-OpenWeatherMapForecast
loader.js:244 File already loaded: moment.js
loader.js:184 Load script: modules/MMM-OpenWeatherMapForecast/skycons.js
loader.js:160 Scripts loaded for: MMM-OpenWeatherMapForecast
loader.js:203 Load stylesheet: modules/MMM-OpenWeatherMapForecast/MMM-OpenWeatherMapForecast.css
loader.js:162 Styles loaded for: MMM-OpenWeatherMapForecast
loader.js:164 Translations loaded for: MMM-OpenWeatherMapForecast
loader.js:184 Load script: modules/lifecounter/lifecounter.js
module.js:509 Module registered: lifecounter
loader.js:155 Bootstrapping module: lifecounter
loader.js:244 File already loaded: moment.js
loader.js:160 Scripts loaded for: lifecounter
loader.js:162 Styles loaded for: lifecounter
loader.js:164 Translations loaded for: lifecounter
loader.js:184 Load script: modules/default/alert/alert.js
module.js:509 Module registered: alert
loader.js:155 Bootstrapping module: alert
loader.js:184 Load script: modules/default/alert/notificationFx.js
loader.js:160 Scripts loaded for: alert
loader.js:203 Load stylesheet: modules/default/alert/notificationFx.css
loader.js:244 File already loaded: font-awesome.css
loader.js:162 Styles loaded for: alert
translator.js:107 alert - Load translationfalse: translations/en.json
loader.js:164 Translations loaded for: alert
loader.js:184 Load script: modules/default/clock/clock.js
module.js:509 Module registered: clock
loader.js:155 Bootstrapping module: clock
loader.js:244 File already loaded: moment.js
loader.js:184 Load script: vendor/node_modules/moment-timezone/builds/moment-timezone-with-data.js
loader.js:184 Load script: vendor/node_modules/suncalc/suncalc.js
loader.js:160 Scripts loaded for: clock
loader.js:203 Load stylesheet: modules/default/clock/clock_styles.css
loader.js:162 Styles loaded for: clock
loader.js:164 Translations loaded for: clock
loader.js:184 Load script: modules/default/compliments/compliments.js
module.js:509 Module registered: compliments
loader.js:155 Bootstrapping module: compliments
loader.js:244 File already loaded: moment.js
loader.js:160 Scripts loaded for: compliments
loader.js:162 Styles loaded for: compliments
loader.js:164 
</code></pre>
<p dir="auto">Snap  of Config</p>
<pre><code>let config = {
	address: "0.0.0.0", 	// Address to listen on, can be:
							// - "localhost", "127.0.0.1", "::1" to listen on loopback interface
							// - another specific IPv4/6 to listen on a specific interface
							// - "0.0.0.0", "::" to listen on any interface
							// Default, when address config is left out or empty, is "localhost"
	port: 8080,
	basePath: "/", 	// The URL path where MagicMirror is hosted. If you are using a Reverse proxy
					// you must set the sub path here. basePath must end with a /
	ipWhitelist: [], 	// Set [] to allow all IP addresses
															// or add a specific IPv4 of 192.168.1.5 :
															// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
															// or IPv4 range of 192.168.3.0 --&gt; 192.168.3.15 use CIDR format :
															// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],

	useHttps: false, 		// Support HTTPS or not, default "false" will use HTTP
	httpsPrivateKey: "", 	// HTTPS private key path, only require when useHttps is true
	httpsCertificate: "", 	// HTTPS Certificate path, only require when useHttps is true

	language: "en",
	locale: "en-UK",
	logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
	timeFormat: 12,
	units: "metric",
	serverOnly:  true,
	// local for armv6l processors, default
	//   starts serveronly and then starts chrome browser
	// false, default for all NON-armv6l devices
	// true, force serveronly mode, because you want to.. no UI on this device

	modules: [
			{
		disabled: false,
		module:"MMM-Config",
		position:"top_right",  // the QR code (if requested) will appear here
		config:{
			showQR: false,
			//restart: "pm2",
			//force_update: true,
			//debug: true
			
		}
	},
	
    {
        module: 'MMM-AlexaControl',
        position: 'middle_center',
	

	config:{
		
            image: true,
	    deviceName: "mirror",
            pm2ProcessName: "mm",
            vcgencmd: "hide",
	    startPort: 11001,
	    refresh: true,
	    restart: true,
	    //stop: true,
	    reboot: true,
	    shutdown: true,
	    monitorToggle: true,
	    //cecAddress: "0.0.0.0",
	    //usb: false
	    pages: 3,
	    notifications:[
    {
        name: 'Selfie',
        port: 11106,
        OnOff: false,
        notification: ["SELFIE_SHOOT"]
    }
],
</code></pre>
]]></description><link>https://forum.magicmirror.builders/post/96801</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96801</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Thu, 25 Nov 2021 21:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Thu, 25 Nov 2021 12:30:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> if it’s not responsive, that means the little web server Alexa is calling didn’t work</p>
<p dir="auto">that is the port you set in the notification definition</p>
<p dir="auto">when you start mm, there are messages that say which ports are listening</p>
<p dir="auto">that is the info Alexa records on Alexa discover devices</p>
]]></description><link>https://forum.magicmirror.builders/post/96778</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96778</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Thu, 25 Nov 2021 12:30:19 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Thu, 25 Nov 2021 09:34:51 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> ok so I removed my static IP and the Alexa features are working again well some…</p>
<p dir="auto">Also rebooted there with no luck and deleted the devices and repaired… The monitor on/off is working but the selfie shoot isnt. I checked the dev panel and the notification isnt being received and alexa is saying its not responsive?</p>
]]></description><link>https://forum.magicmirror.builders/post/96776</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96776</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Thu, 25 Nov 2021 09:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Thu, 25 Nov 2021 09:12:23 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> hmmmm would you think it has something to do with my static IP?</p>
<p dir="auto">I did the whole thing via my interfaces file and then reserved an IP in my router for it also.</p>
<p dir="auto">Edit: I did the static in in the DHCP file. Interfaces is just to activate my USB network adapter (PI OS on desktop)</p>
]]></description><link>https://forum.magicmirror.builders/post/96774</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96774</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Thu, 25 Nov 2021 09:12:23 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Thu, 25 Nov 2021 02:12:58 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> sorry, don’t know how u to debug this. it’s really hard</p>
<p dir="auto">you config works perfectly here<br />
your devices are found (that means the module is running) and the ssdp discovery worked</p>
<p dir="auto">now alexa will call back at the server (MM system) ip address and port for each switch<br />
which goes into the node_helper and is then sent up to the modulename.js to send to other modules</p>
]]></description><link>https://forum.magicmirror.builders/post/96767</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96767</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Thu, 25 Nov 2021 02:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Wed, 24 Nov 2021 23:13:24 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> I did that but still isnt working</p>
]]></description><link>https://forum.magicmirror.builders/post/96760</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96760</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Wed, 24 Nov 2021 23:13:24 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Wed, 24 Nov 2021 22:33:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> no after u get a static IP, and your mm  config.js has</p>
<pre><code>address:"0.0.0.0",
ipWhitelist:[],
</code></pre>
<p dir="auto">to allow incoming connections from outside the pi machine</p>
<p dir="auto">it should work</p>
]]></description><link>https://forum.magicmirror.builders/post/96758</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96758</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Wed, 24 Nov 2021 22:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Wed, 24 Nov 2021 22:00:12 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> ok so after fighting with my interfaces file for a few days I have a static IP</p>
<p dir="auto">Only issue is that I can discover devices on the Alexa app but they arent usable and just come up an unresponsive…</p>
<p dir="auto">It seems the static IP has messed with that feature ? Any advise on this please?</p>
]]></description><link>https://forum.magicmirror.builders/post/96756</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96756</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Wed, 24 Nov 2021 22:00:12 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 16:09:10 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> yeh  the Alexa design is devices don’t move around, and one would only do discovery occasionally</p>
<p dir="auto">then u have to delete the devices and rediscover</p>
]]></description><link>https://forum.magicmirror.builders/post/96679</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96679</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 16:09:10 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 15:59:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> ah ok I’ll set a static! TBH I did have that concern but i was wrong to assume it was dynamic with the IP’s</p>
<p dir="auto">I’ll come back if this works or not , I have a call rn</p>
]]></description><link>https://forum.magicmirror.builders/post/96678</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96678</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 15:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 15:54:00 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> so, discovery records the IP address of the ‘device’ and the port.</p>
<p dir="auto">so, if your pi changes ip address during boot, then it won’t work again …</p>
<p dir="auto">all  my pi type devices have fixed addresses to avoid this problem…</p>
]]></description><link>https://forum.magicmirror.builders/post/96677</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96677</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 15:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 15:51:27 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> ok I  re added the selfie device on the alexa app and it found it fine but its now coming up as unresponsive</p>
]]></description><link>https://forum.magicmirror.builders/post/96676</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96676</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 15:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 15:22:29 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> i don’t know… i didn’t change anything in your config…</p>
<p dir="auto">if you use the alexa app to turn the plug on or off, do you see the notifications?</p>
]]></description><link>https://forum.magicmirror.builders/post/96671</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96671</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 15:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 15:19:21 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> oh… where do you think I went wrong so?</p>
]]></description><link>https://forum.magicmirror.builders/post/96670</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96670</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 15:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 14:58:32 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> I added your config to my MM and added debugging… and it works as expected</p>
<p dir="auto">samplemodule reports Selfie_shoot was received</p>
<pre><code>SampleModule received a module notification: SELFIE_SHOOT from sender: MMM-AlexaControl
</code></pre>
<p dir="auto">and because u have is as onOff:false<br />
u get a notification every time (on or off)</p>
<p dir="auto">I did this using the alexa app…</p>
]]></description><link>https://forum.magicmirror.builders/post/96664</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96664</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 14:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 14:27:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> ah my one says ‘ok’ but id assume its the same</p>
]]></description><link>https://forum.magicmirror.builders/post/96662</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96662</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 14:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 14:26:12 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> when u turn on or off a device, alexa does tada sound… to says it processed your request</p>
]]></description><link>https://forum.magicmirror.builders/post/96661</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96661</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 14:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 14:21:27 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> what do mean by a completion sound? Do you mean the confirmation of ‘ok’ after? If so then yes</p>
]]></description><link>https://forum.magicmirror.builders/post/96660</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96660</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 14:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 14:09:27 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> ok, and when MM is running you get the completion sound from alexa, correct?</p>
]]></description><link>https://forum.magicmirror.builders/post/96659</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96659</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 14:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 14:07:34 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> Apoligies, tested there.</p>
<p dir="auto">So I stopped magic mirror/ restarted the pi and it came up with  device unresponsive.</p>
]]></description><link>https://forum.magicmirror.builders/post/96658</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96658</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 14:07:34 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 13:55:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> said in <a href="/post/96656">How to send a notification</a>:</p>
<blockquote>
<p dir="auto">Yep that makes sense but it isnt popping up below is a quick snapshot of the dev panel</p>
</blockquote>
<p dir="auto">one thing at a time</p>
<p dir="auto">you didn’t answer the question about connection</p>
]]></description><link>https://forum.magicmirror.builders/post/96657</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96657</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 13:55:05 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 13:52:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> Yep that makes sense but it isnt popping up below is a quick snapshot of the dev panel</p>
<pre><code>
MMM-MotionDetector.js:75 MMM-MotionDetector: DiffCamEngine init successful.
module.js:195 MMM-AlexaControl is suspended.
module.js:195 MMM-NASA is suspended.
module.js:195 MMM-ISS-Live is suspended.
module.js:195 MMM-MotionDetector is suspended.
module.js:195 lifecounter is suspended.
module.js:195 compliments is suspended.
module.js:195 MMM-chromecast is suspended.
MMM-NASA.js:132 Hailing NASA
module.js:202 MMM-page-indicator is resumed.
module.js:202 MMM-Selfieshot is resumed.
module.js:202 MMM-Astro is resumed.
module.js:202 MMM-MoonPhase is resumed.
module.js:202 clock is resumed.
eventtracking-log.services.video.ibm.com/eventtracking.web.player/:1 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
eventtracking-log.services.video.ibm.com/eventtracking.web.player/:1 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
eventtracking-log.services.video.ibm.com/eventtracking.web.player/:1 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
eventtracking-log.services.video.ibm.com/eventtracking.web.player/:1 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
eventtracking-log.services.video.ibm.com/eventtracking.web.player/:1 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
eventtracking-log.services.video.ibm.com/eventtracking.web.player/:1 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT
MMM-AlexaControl.js:75 RECEIVE monitor NOTIFICATION=SLEEP_WAKE
MMM-AlexaControl.js:75 RECEIVE monitor NOTIFICATION=SLEEP_HIDE
MMM-AlexaControl.js:75 RECEIVE monitor NOTIFICATION=SLEEP_WAKE
MMM-pages.js:97 
</code></pre>
<p dir="auto">The errors lead to this page<br />
400 Bad Request<br />
‘json’ or ‘msgpack’ parameter is required</p>
]]></description><link>https://forum.magicmirror.builders/post/96656</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96656</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 13:52:43 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 13:45:20 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alyx" aria-label="Profile: alyx">@<bdi>alyx</bdi></a> not really.  if u stop MagicMirror, and then tell Alexa to turn on your notification device, you should get a ‘not responding’ message from alexa</p>
<p dir="auto">that will tell you the two are really connected.</p>
<p dir="auto">Alexa turn on selfie</p>
]]></description><link>https://forum.magicmirror.builders/post/96655</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96655</guid><dc:creator><![CDATA[sdetweil]]></dc:creator><pubDate>Mon, 22 Nov 2021 13:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to How to send a notification on Mon, 22 Nov 2021 13:33:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sdetweil" aria-label="Profile: sdetweil">@<bdi>sdetweil</bdi></a> Hi sam,</p>
<p dir="auto">Great so i can see that the notification isnt being sent via the dev console, it shows up via Alexa app but isnt communicating to the MM. Would you happen to know the cause?</p>
<pre><code> {
        module: 'MMM-AlexaControl',
        position: 'middle_center',
	

	config:{
		
            image: true,
	    deviceName: "mirror",
            pm2ProcessName: "mm",
            vcgencmd: "hide",
	    startPort: 11001,
	    refresh: true,
	    restart: true,
	    //stop: true,
	    reboot: true,
	    shutdown: true,
	    monitorToggle: true,
	    //cecAddress: "0.0.0.0",
	    //usb: false
	    pages: 3,
	    notifications:[
    {
        name: 'Next page',
        port: 11102,
        OnOff: false,
        notification: ["PAGE_INCREMENT", 'payload']
    },
     {
        name: 'Previous page',
        port: 11103,
        OnOff: false,
        notification: ["PAGE_DECREMENT", 'payload']
    },
    {
        name: 'Selfie',
        port: 11104,
        OnOff: false,
        notification: ["SELFIE_SHOOT", 'payload']
    }
],
        }
    },
</code></pre>
]]></description><link>https://forum.magicmirror.builders/post/96654</link><guid isPermaLink="true">https://forum.magicmirror.builders/post/96654</guid><dc:creator><![CDATA[Alyx]]></dc:creator><pubDate>Mon, 22 Nov 2021 13:33:49 GMT</pubDate></item></channel></rss>