A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
  • Shutting down/restarting via PM2 not closing server

    Solved
    2
    0 Votes
    2 Posts
    1k Views
    bheplerB
    Update: I’ve traced this to the MMM-RTSPStream module. Disabling this module lets PM2 restart the process normally. I’ll take this problem over there. Feel free to close this out.
  • Is there a way to sort calendar by colours?

    7
    0 Votes
    7 Posts
    3k Views
    ?
    So, you can import your ‘home’ calendar and ‘office’ calendar into a mm calendar module. Then, these two kinds of events are mixed. If you want to display them separately, just use mm calendar module twice. One for your ‘office’ and the other for ‘home’.
  • Help Please I am new and unable to install correctly!

    Unsolved
    1
    0 Votes
    1 Posts
    708 Views
    ?
    I am new and trying to install the magic mirror but this code comes up: Cloning MagicMirror Done! Installing dependencies … npm WARN deprecated isarray@2.0.1: Just use Array.isArray directly npm ERR! Linux 4.9.35-v7+ npm ERR! argv “/usr/bin/nodejs” “/usr/bin/npm” “install” npm ERR! node v6.11.0 npm ERR! npm v3.10.10 npm ERR! file /home/pi/.npm/css/2.2.1/package/package.json npm ERR! code EJSONPARSE npm ERR! Failed to parse json npm ERR! Unexpected token ‘/’ at 1:1 npm ERR! /github.com/reworkcss/css.git"},“homepage”:"https://github.com/reworkcss/css#re npm ERR! ^ npm ERR! File: /home/pi/.npm/css/2.2.1/package/package.json npm ERR! Failed to parse package.json data. npm ERR! package.json must be actual JSON, not just JavaScript. npm ERR! npm ERR! This is not a bug in npm. npm ERR! Tell the package author to fix their package.json file. JSON.parse npm ERR! Please include the following file with any support request: npm ERR! /home/pi/MagicMirror/npm-debug.log Unable to install dependencies! pi@raspberrypi:~ $
  • MagicMirror not starting

    Unsolved
    5
    0 Votes
    5 Posts
    2k Views
    B
    Hi, thanks for this. I will try this today evening and let you know if this was working. Thanks
  • Problem with to Magic Mirror on one pi

    2
    0 Votes
    2 Posts
    1k Views
    pascal456P
    For first instance you could just remove the entry from pm2. So that just one MM gets started at system startup. Do you really need to deinstall the other one? You could just disable it.
  • MMM-Remote-Control is disabling MMM-scrobbler?

    3
    0 Votes
    3 Posts
    2k Views
    J
    @malicious_banjo Have you used the Hide/Show functionality of the remote control module? Please try deleting settings.json in the remote control module directory. Do you have other modules hiding and showing modules, such as ProfileSwitcher or FaceRecognition?
  • MM 2.1.2 and Node 4.3

    2
    0 Votes
    2 Posts
    1k Views
    Mykle1M
    @shgmongohh You can try but MM will likely want a newer version of node. Have you tried Pimatic with a newer version of node? Perhaps it works with node 4.3 or higher. There’s only one way to find out. Good luck!
  • MMM-awesome-alexa black screen, installation error

    7
    0 Votes
    7 Posts
    3k Views
    M
    @mc_landin read the gitter forum…there are a few solution for problems and common mistakes.
  • Pulse-Eight

    8
    0 Votes
    8 Posts
    3k Views
    D
    @yawns Disply off command does nothing
  • Default Calender using ics file from a path on pi.

    3
    0 Votes
    3 Posts
    1k Views
    Mykle1M
    @arifms This page shows all the config options. “Show Location” is NOT one of them. https://github.com/MichMich/MagicMirror/tree/master/modules/default/calendar
  • MMM-PIR-SENSOR after updating

    2
    0 Votes
    2 Posts
    1k Views
    F
    ok i find the solution … I have delete the folder MagicMirror/modules/MMM-PIR-Sensor git clone npm install and its ok .
  • Blackscreen with no errors.

    Solved
    6
    0 Votes
    6 Posts
    3k Views
    Mykle1M
    @zimmcognito Oh, that’s good news. Enjoy your mirror
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    12 Views
  • Problem working with MMM-iFrame

    5
    0 Votes
    5 Posts
    3k Views
    K
    Hi, thanks for the feedback. I have scanned the forum and tried several potential solutions, but they all failed with MMM-iFrame. Yesterday I have installed an earlier version of the iFrame module, the MMM-iFrameReload (by “The BogueRat”) and this module works for me!! I can iFrame my D-Link camera streaming (and it also works fine for youtube streaming).
  • MMM-Gestures

    3
    0 Votes
    3 Posts
    2k Views
    A
    @Tobi91 Hey Tobi, no I am sry … Aly
  • Mirror won't start...

    6
    0 Votes
    6 Posts
    4k Views
    RamblingGeekUkR
    How did you Install MM?
  • Exchange calendar not showing up

    Solved
    6
    0 Votes
    6 Posts
    3k Views
    P
    So sorry for the very late reply. I didn’t have time to work on my project. But today I picked it up again and also found https://github.com/MichMich/MagicMirror/issues/839. When I updated the ical.js and node-ical.js in this thread, my calendar started showing up. So I’m happy and almost finished my MM. Version 0.1, that is…
  • Error after update..

    5
    0 Votes
    5 Posts
    2k Views
    C
    Ah. I got it after a long time back and forth. Once again deleted and the folder copied again. Many thanks for your help.
  • CORS using node_helper.js for Uber and Lyft APIs

    10
    0 Votes
    10 Posts
    4k Views
    kalK
    I was able to fix this. See below for the module code /* global Module */ /* Magic Mirror * Module: Uber * * Shows the time and surge pricing for UberX * * By Kyle Kelly * based on MagicMirror work by Michael Teeuw http://michaelteeuw.nl * and by derickson https://github.com/derickson/MMderickson/tree/master/uber * MIT Licensed. */ Module.register("MMM-uber",{ // Default module config. defaults: { lat: null, lng: null, ride_type: "uberX", uberServerToken: null, updateInterval: 5 * 60 * 1000, // every 5 minutes animationSpeed: 1000, }, // Define required scripts. getScripts: function() { return ["moment.js", "https://code.jquery.com/jquery-2.2.3.min.js"]; }, // Define required styles. getStyles: function() { return ["MMM-uber.css"]; }, start: function() { Log.info("Starting module: " + this.name); // Set locale. moment.locale(config.language); // variables that will be loaded from service this.uberTime = null; this.uberSurge = null; this.loaded = false; Log.log("Sending CONFIG to node_helper.js in " + this.name); Log.log("Payload: " + this.config) this.sendSocketNotification('CONFIG', this.config); }, // unload the results from uber services processUber: function(FLAG, result) { var self = this; Log.log("ProcessUber"); // go through the time data to find the uberX product if (FLAG === "TIME"){ Log.log("Time:"); Log.log(result); for (var i = 0, count = result.times.length; i < count ; i++) { var rtime = result.times[i]; if(rtime.display_name === this.config.ride_type){ // convert estimated seconds to minutes this.uberTime = rtime.estimate / 60; break; } } } // go through the price data to find the uberX product else if (FLAG === "PRICE"){ Log.log("Price:"); Log.log(result); for( var i=0, count = result.prices.length; i< count; i++) { var rprice = result.prices[i]; if(rprice.display_name === this.config.ride_type){ // grab the surge pricing this.uberSurge = rprice.surge_multiplier; break; } } } }, // Override dom generator. getDom: function() { var wrapper = document.createElement("div"); var uber = document.createElement("div"); uber.className = "uberButton"; var uberIcon = document.createElement("img"); uberIcon.className = "badge"; uberIcon.src = "modules/MMM-uber/UBER_API_Badges_1x_22px.png"; var uberText = document.createElement("span"); if(this.loaded) { var myText = this.config.ride_type + " in "+ this.uberTime +" min "; Log.log("ubersurge: " + this.uberSurge); // only show the surge pricing if it is above 1.0 if(typeof this.uberSurge !== "undefined" && this.uberSurge > 1.0){ myText += " - " + this.uberSurge + "X surge pricing"; } uberText.innerHTML = myText; } else { // Loading message uberText.innerHTML = "Checking Uber status ..."; } uber.appendChild(uberIcon); uber.appendChild(uberText); wrapper.appendChild(uber); return wrapper; }, socketNotificationReceived: function(notification, payload) { Log.log(this.name + " received a socket notification: " + notification + " - Payload: " + payload); if (notification === "TIME") { this.processUber("TIME", JSON.parse(payload)); this.updateDom(this.config.animationSpeed) } else if (notification === "PRICE") { this.processUber("PRICE", JSON.parse(payload)); this.loaded = true; this.updateDom(this.config.animationSpeed); } } }); and the node_helper.js code 'use strict'; /* Magic Mirror * Module: MMM-uber * * By Kyle Kelly * MIT Licensed. */ const NodeHelper = require('node_helper'); var request = require('request'); var moment = require('moment'); module.exports = NodeHelper.create({ start: function() { var self = this; console.log("Starting node helper for: " + this.name); this.config = null; }, getData: function() { var self = this; this.sendSocketNotification("Test", 2); this.sendSocketNotification("LATITUDE", this.config.lat); this.sendSocketNotification("LONGITUDE", this.config.lng); request({ url: "https://api.uber.com/v1/estimates/time?start_latitude=" + this.config.lat + "&start_longitude=" + this.config.lng, method: 'GET', headers: { 'Authorization': 'Token ' + this.config.uberServerToken, 'Accept-Language': 'en_US', 'Content-Type': 'application/json' }, }, function (error, response, body) { if (!error && response.statusCode == 200) { self.sendSocketNotification("TIME", body); } else { self.sendSocketNotification("ERROR", "In TIME request with status code: " + response.statusCode); } }); request({ url: "https://api.uber.com/v1/estimates/price?start_latitude=" + this.config.lat + "&start_longitude=" + this.config.lng + "&end_latitude=" + this.config.lat + "&end_longitude=" + this.config.lng, method: 'GET', headers: { 'Authorization': 'Token ' + this.config.uberServerToken, 'Accept-Language': 'en_US', 'Content-Type': 'application/json' }, }, function (error, response, body) { if (!error && response.statusCode == 200) { self.sendSocketNotification("PRICE", body); } else { self.sendSocketNotification("ERROR", "In PRICE request with status code: " + response.statusCode); } }); setTimeout(function() { self.getData(); }, this.config.updateInterval); }, socketNotificationReceived: function(notification, payload) { //var self = this; this.sendSocketNotification("Test", 0); if (notification === 'CONFIG') { this.sendSocketNotification("Test", 1); this.config = payload; this.getData(); } } });
  • Voicecontrol interaction with compliments

    1
    0 Votes
    1 Posts
    1k Views
    L
    Hi, I am using the voicecontrol by alexya and I am trying to display a message on the mirror after saying a hotword. Because this is a one-time thing, I figured I could use the compliments module to display the message. I have downloaded the .pmdl file from Snowboy, but I still struggle to implement the code in the compliments module. This is how my config file looks like: { module: 'voicecontrol', position: 'bottom_left', config: { models: [ { keyword: "Test", // keyword description: "Say 'Test", file: "Test.pmdl", // trained model file name message: "PLAY_MUSIC" // notification message that's broadcast in the MagicMirror app }, ] } }, Obvously I know PLAY_MUSIC is incorrect, but I still havent found out what the correct command would be to display the message in the compliments module. Also if I understood it correctly the following code is suppsoed to go within the compliments.js file. notificationReceived: function(notification, payload, sender) { if (notification === "Test"){ this.media.play(); } }, What should I replace with PLAY_MUSIC and this.media.play(); to display a message from the compliments module ? And how do I specify what kind of message that get displayed?