• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Problems with AlexaControl

Scheduled Pinned Locked Moved Unsolved Troubleshooting
3 Posts 2 Posters 225 Views 2 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • O Offline
    oldskoolz
    last edited by May 20, 2023, 2:58 PM

    Dear Magic Mirror Pros,

    I’ve encountered a problem that’s currently preventing the progress of my major project. Let me provide some background:

    Here’s my setup:

    I’m using a Windows 10 operating system.
    MagicMirror² and Alexa are installed on this Windows machine.
    I’ve also set up Fauxmo, MMM-pages, and MMM-AlexaControl modules.
    So, everything is operating well in the basic configuration of MagicMirror² on my Windows 10 system. Additionally, I have Alexa configured on the same Windows 10 device, ensuring both MagicMirror and Alexa are always on the same WiFi network. I’ve configured the Calendar and have successfully used voice commands via Alexa to create new calendar entries.

    However, I’ve hit a roadblock: I’m unable to switch pages using voice commands or the Alexa app. I am able to control the FAUXMO simulated devices, namely “Seite 1”, “Seite 2”, etc. For example, when I turn them on, they switch to 1 and to 0 when I turn them off. Despite this, I’m really struggling with page-switching—I just can’t get it to work, and I can’t identify the problem.

    To add to the confusion, there seems to be varying opinions about whether the pages module is necessary at all: some suggest it’s possible to manage without Pages, while others disagree. Lastly, I should mention that I’m not a developer—I have some basic knowledge of server and cloud services, but that’s about it.

    So, I really need your help to solve this problem. I appreciate any suggestions or guidance you can provide.

    The MM Config:

    /* MagicMirror² 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/configuration/introduction.html
     * and https://docs.magicmirror.builders/modules/configuration.html
     *
     * You can use environment variables using a `config.js.template` file instead of `config.js`
     * which will be converted to `config.js` while starting. For more information
     * see https://docs.magicmirror.builders/configuration/introduction.html#enviromnent-variables
     */
    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 --> 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-US",
    	logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
    	timeFormat: 24,
    	units: "metric",
    
    	modules: [
    		{
    			module: "alert",
    		},
    
        {
            module: 'MMM-pages',
            config: {
                    modules:
                        [[ "clock", "updatenotification", "MMM-AlexaControl", "newsfeed"],
                         [ "compliments", "calendar", "MMM-AlexaControl"]],
                    fixed: ["MMM-AlexaControl"],
            }
        },
        {
            module: "MMM-AlexaControl",
            position: "middle_center",
            config: {
                image: true,
                height: 265,
                width: 265,
                devices: [
                    {
                        name: "Seite 1",
                        port: 11100,
                        handler: 'PAGE_CHANGED',
                        payload: function(payload) {
                            return { 'page': 0 };
                        }
                    },
                    {
                        name: "Seite 2",
                        port: 11101,
                        handler: 'PAGE_CHANGED',
                        payload: function(payload) {
                            return { 'page': 1 };
                        }
                    }
                ],
                startPort: 11000,
                refresh: true,
                restart: true,
                stop: true,
                reboot: false,
                shutdown: false,
                pm2ProcessName: "pm2",
                monitorToggle: true,
                vcgencmd: true,
                usb: false
            }
        },
    
    
    .... and so on
    
    

    The MMM-AlexaControl JS:

    
    /**
     * Magic Mirror
     * Module: MMM-AlexaControl
     * 
     * By JoChef2
     * MIT Licensed.
     */
    
    Module.register("MMM-AlexaControl",{
         
    	defaults:{
        image: true,
        height: 265,
        width: 265,
        pages: 3,
    devices: {
        "Seite 1": {
            port: 11100,
            handler: 'PAGE_CHANGED',
            payload: function(payload) {
                return { 'page': 0 };
            }
        },
        "Seite 2": {
            port: 11101,
            handler: 'PAGE_CHANGED',
            payload: function(payload) {
                return { 'page': 1 };
            }
        },
    }
            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 === "CUSTOM"){
                this.sendNotification(payload[0], payload[1]);  //  send any notification to any module
            }
            if(notification =='MONITOR_ACTION'){
                Log.log('RECEIVE monitor NOTIFICATION='+payload)
                this.sendNotification(notification,payload)
            }
        }
     });
    
    

    Node Fauxmo index.js:

    'use strict';
    
    const FauxMo = require('node-fauxmo');
    
    let fauxMo = new FauxMo(
    {
        devices: [
        {
            name: 'Seite 1',
            port: 11000,
            handler: function(action) {
                console.log('Seite 1:', action);
            }
        },
        {
            name: 'Seite 2',
            port: 11001,
            handler: function(action) {
                console.log('Seite 2:', action);
            }
        },
        {
            name: 'Seite 3',
            port: 11002,
            handler: function(action) {
                console.log('Seite 3:', action);
            }
        }]
    });
    
    

    And the MMM-Pages is basically untouched… so default Config entrys in there.

    Any hints what i am doing wrong?

    Best Regards

    The Noob :)

    S 1 Reply Last reply May 20, 2023, 7:47 PM Reply Quote 0
    • S Away
      sdetweil @oldskoolz
      last edited by May 20, 2023, 7:47 PM

      @oldskoolz just got home. you don’t do anything w the fauxmo file the ac module does everything

      Sam

      How to add modules

      learning how to use browser developers window for css changes

      S 1 Reply Last reply May 20, 2023, 11:07 PM Reply Quote 0
      • S Away
        sdetweil @sdetweil
        last edited by sdetweil May 20, 2023, 11:10 PM May 20, 2023, 11:07 PM

        @oldskoolz

        rule 1… never change MagicMirror or a module source code, it breaks the ability to update. all config goes in MagicMirror/config/config.js

        you don’t add devices for pages, all you do is set the number of pages you want to navigate to … pages: 3
        this will give you devices for page 1, page 2 and page 3
        in the npm start output you should see the number of devices created
        that you can access via

        Alexa turn on page 2
        

        as the devices are fake outlets

        if u want a different voice command, you can use an actual alexa routine

        select voice
           go to page 2
        action 
           smart home devices
          page 2 
             power on
        

        alexa does not provide any symbolic replacement functions
        go to page {n}
        replace n with a number on execute

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        1 / 1
        • First post
          1/3
          Last post
        Enjoying MagicMirror? Please consider a donation!
        MagicMirror created by Michael Teeuw.
        Forum managed by Sam, technical setup by Karsten.
        This forum is using NodeBB as its core | Contributors
        Contact | Privacy Policy