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.

    My Magic Mirror - 100x70cm

    Scheduled Pinned Locked Moved Show your Mirror
    19 Posts 10 Posters 24.4k Views 12 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.
    • M Offline
      marcnlx
      last edited by marcnlx

      Here are the pictures:

      The frame
      0_1521116946853_20180306_123613.jpg

      The frame mounted
      0_1521117148283_20180306_132427.jpg

      The frame mounted with everything in it
      0_1521117168352_20180315_001556.jpg

      Shot from the right
      0_1521117388425_20180315_012804.jpg

      Shot from the left
      0_1521117200486_20180315_012905.jpg

      Main Mirror
      0_1521117275752_20180315_012936.jpg

      Other Mirror
      0_1521117285590_20180315_012955.jpg

      A 1 Reply Last reply Reply Quote 5
      • M Offline
        marcnlx
        last edited by

        Here is my full config.js file (without private info):

        /*
         * The location of the module in which the module will be loaded. Possible values are top_ bar, top_left, top_center, top_right, upper_third, 
         * middle_center, lower_third, bottom_left, bottom_center, bottom_right, bottom_bar, fullscreen_above, and fullscreen_below. 
         * This field is optional but most modules require this field to set. Check the documentation of the module for more information.
         * Multiple modules with the same position will be ordered based on the order in the configuration file.
        */
        
        
        var config = {
        	address: "0.0.0.0",
        	port: 8080,
        	ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1", "192.168.1.11"],
        	language: "nl",
        	timeFormat: 24,
        	units: "metric",
        	modules: [
        
                        {
                                module: 'MMM-Carousel',
                                position: 'bottom_bar',  // Only required to show navigation
                                config: {
                                        transitionInterval: 0,
                                        ignoreModules: ['clock', 'alert'],
                                        mode: 'slides',
                                        showPageIndicators: true,
                                        showPageControls: true,
                                        slides: [
                                                ['MMM-cryptocurrency', 'worldclock', 'MMM-WunderGround', 'MMM-MyCommute', 'MMM-MirrorMirrorOnTheWall', 'MMM-Hue', 'MMM-NetworkScanner', 'domoticz', 'MMM-syslog', 'alert', 'updatenotification', 'clock', 'calendar', 'compliments', 'newsfeed'],
                                                ['MMM-MovieListings', 'MMM-Scrobbler', 'MMM-ping', 'calendar_monthly', 'MMM-Globe', 'MMM-Tools', 'MMM-soccer', 'clock', 'MMM-syslog', 'alert', 'updatenotification', 'MagicMirror-QuoteCatalog', 'currentweather', 'weatherforecast', 'MMM-rainfc']
                                                ],
                                        keyBindingsMode: "DEFAULT",
                                        keyBindings: {
                                        NextSlide: "ArrowRight",
                                        PrevSlide: "ArrowLeft",
                                        Slide0:    "Home"
                                                     }
                                        }
                        },
                        {
                                module: 'MMM-KeyBindings',
                                config: {
                                        enableNotifyServer: false,
                                        enableMousetrap: true,
                                        }
                        },
                        {
                                module: "currentweather",
                                position: "top_right",
                                header: "",
                                config: {
                                        location: "Almere Stad",
                                        locationID: "xxxxxxxx",  //ID from http://www.openweathermap.org/help/city_list.txt
                                        appid: "xxxxxxxxxxxxxxxxxxxxxxxxx",
                                        decimalSymbol: ","
        	                        }
                        },
                        {
                                module: "weatherforecast",
                                position: "top_right",
                                header: "Weersvoorspelling",
                                config: {
                                        location: "Almere Stad",
                                        locationID: "xxxxxxxx",  //ID from http://www.openweathermap.org/help/city_list.txt
                                        appid: "xxxxxxxxxxxxxxxxxxxxxxxxx",
                                        decimalSymbol: ","
                	                }
                        },
                        {
                                module: "alert",
                        },
                        {
                                module: "updatenotification",
                                position: "top_bar"
                        },
                        {
                                module: "clock",
                                position: "top_left",
        			config: {
        				displayType: "both",
        				analogSize: "150px",
        				analogFace: "simple",
        				analogPlacement: "right",
        				showWeek: "true"
        				}
                        },
                        {
                                module: "calendar",
                                header: "Kalender",
                                position: "top_left",
                                config: {
                                        calendars: [
                                                {
        					symbol: "calendar-check-o ",
        					url: "webcal://ical.mac.com/ical/Dutch32Holidays.ics",
                                                },
                                                {
                                                symbol: "calendar-check-o ",
                                                url: "https://.ics",
                                                },
                                                {
                                                symbol: "calendar-check-o ",
                                                url: "https://basic.ics",
                                                },
                                                {
                                                symbol: "calendar-check-o ",
                                                url: "https://calendar.ics",
                                                }
                                        	   ]
                                	}
                        },
                        {
                                module: "compliments",
                                position: "middle_center"
                        },
        		{
        			module: 'MMM-MyCommute',
        			header: 'Het Verkeer',
        			position: 'bottom_right',
        			config: {
        				apikey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        				origin: 'xxxx, 1111 xx xxxx',
        				startTime: '00:00',
        				endTime: '23:59',
        //				hideDays: [0,6],
        				destinations: [
        						{
        						destination: 'Amsterdam Centraal, Stationsplein, Amsterdam',
        						label: 'Amsterdam',
                                                        mode: 'driving',
                                                        color: '#82E5AA'
                                                        },
                                                        {
                                                        destination: 'Schiphol Airport, Schiphol Boulevard, Amsterdam',
                                                        label: 'Schiphol',
                                                        mode: 'driving',
                                                        color: '#82E5AA'
                                                        },
                                                        {
                                                        destination: 'Utrecht Centraal, Utrecht',
                                                        label: 'Utrecht',
                                                        mode: 'driving',
                                                        color: '#82E5AA'
                                                        },
                                                        {
                                                        destination: 'Centrum Almere Buiten, Almere',
                                                        label: 'Almere-Buiten',
                                                        mode: 'bicycling'
                                                        }
                                                      ]
        				}
        		},
        		{
        			module: 'MMM-domoticz/domoticz',
        			header: 'Smart Home',
        			position: 'bottom_left',
        			config: {
        			apiBase: "http://192.168.1.12",
        			apiPort: "80",
        			sensors: [
        				{
        				idx: "71", //Device IDX
        				symbolon: "fa fa-lock", //font-awesome icon if device is On
        				symboloff: "fa fa-unlock-alt", //font-awesome icon if device is Off (this will also be used if it is a temperature-de
        				hiddenon: true, //true = hide if device is on (default: false)
        				hiddenoff: false, //frue = hide if device is off (default: false)
        				customTitle: "Alarm Status",
              				},
        				{
        				idx: "235",
        				symbolon: "fa fa-circle-o-notch fa-spin",
        				symboloff: "fa fa-circle-o-notch",
                                        customTitle: "Voordeur",
        				},
        				{
        				idx: "252",
        				symbolon: "fa fa-circle-o-notch fa-spin",
        				symboloff: "fa fa-circle-o-notch",
        				hiddenoff: false,
                                        customTitle: "Achterdeur",
        				},
                                        {
                                        idx: "257",
                                        symbolon: "fa fa-circle-o-notch fa-spin",
                                        symboloff: "fa fa-circle-o-notch",
                                        customTitle: "Schuurdeur",
                                        },
                                        {
                                        idx: "262",
                                        symbolon: "fa fa-circle-o-notch fa-spin",
                                        symboloff: "fa fa-circle-o-notch",
                                        hiddenoff: false,
                                        customTitle: "Raam Beneden",
                                        },
          	 			 ],
        				}
        		},
                        {
        	                module: 'MMM-Hue',
        	                position: 'bottom_left',
                 		config:{
        	        	        bridgeip: "192.168.1.155",
                	        	userid: "xxxxxxxxxxxxxxxxxx",
        	                        colour: true
                		        }
                        },
        		{
        		        module: 'MMM-NetworkScanner',
        		        header: "Who's Home",
        		        position: 'bottom_left',
        		        config: {
        				devices: [
        //				{ ipAddress: "github.com", name: "Github", icon: "globe"},
        //				{ macAddress: "1a:1b:1c:1a:1b:1c", name: "Server", icon: "server"},
        //				{ macAddress: "2a:2b:2c:2a:2b:2c", name: "Desktop", icon: "desktop"},
        //				{ ipAddress: "10.1.1.10", name: "Laptop", icon: "laptop"},
                            		{ macAddress: "xx:xx:xx:xx:xx:xx", name: "Galaxy-S8", icon: "mobile"},
        			                ],
        				showUnknown: false,
        				showOffline: true,
        				keepAlive: 600,
        				updateInterval: 300,
        				}
        		},
        		{
        			module: "MMM-soccer",
        			header: "",
        			position: "bottom_right",
        			config: {
        				api_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        				colored: "false",
        				focus_on: "false",
        				max_teams: "10",
        				leagues: {"EREDIVISIE": 449},
        				show: "EREDIVISIE"
        				}
        		},
        		{
        			module: 'MMM-ping',
        			position: 'bottom_left',
        			header: 'Network Status',
        				config: {
        				colored: 'yes',
        				display: 'both',
        				updateInterval: '5',
        				font: 'medium',
        				hosts: [
        					'Domoticz',
        					'Bedroom',
        					'Guestroom',
        					'NAS',
        					'NAS2',
        					'NAS3'
        					]
        					}
        		},
        		{
        			module: 'MMM-Globe',
        			position: 'middle_center',
        			config: {
        				style: 'geoColor',
        				imageSize: 200,
        				ownImagePath:'',
        				updateInterval: 10*60*1000
        				}
        		},
         		{
        			module: "MMM-cryptocurrency",
        			header: "",
        			position: "top_left",
        			config: {
        				currency: ["bitcoin"],
        				conversion: "EUR",
        				showUSD: false,
        				headers: ['change24h', 'change1h', 'change7d'],
        				displayType: "logo",
        				coloredLogos: "true",
        				showGraphs: true,
        				fontSize: "medium"
        				}
        		},
        		{
        			module: 'MMM-syslog',
        			header: " ",
        			position: 'bottom_bar',
        			config: {
        		        	max: "1",
        //				format: ["DD:MM HH:mm"],
        				types: {INFO: "dimmed", WARNING: "normal", ERROR: "bright"},
        				alert: "true"
        				}
        		},
        		{
        			module: 'MagicMirror-QuoteCatalog',
        			header: '',
        			position: 'lower_third',
        			config: {
        				timeFormat: "20",
        				fadeSpeed: "5"
        				}
        		},
        		{
        			module: 'MMM-WunderGround',
        			position: 'top_right',
        			config: {
        				apikey: 'xxxxxxxxxxxxxxxxxx',
        				pws: 'pws:XXXXXX00',
        				hourly: '1',
        			        fctext: '1',
        			        fcdaycount: "4",
        			        fcdaystart: "0",
        			        hourlyinterval: "3",
        			        hourlycount: "2",
        			        alerttime: 10000,
        			        alerttruncatestring: "english:",
        				roundTmpDecs: 1,
        				coloricon: true,
        				daily:1,
        				iconset: "colourful",
        				UseCardinals: 0,
        				layout: "horizontal",
        				debug: 1, 
        				sysstat: 0
        				}
        		},
                        {
        	                module: "MMM-rainfc",
                	        position: "top_right",
                        	header: "Regenvoorspelling",
        	                config: {
                	                lat: "52.39",
                        	        lon: "5.29",
                                	width: 200,
        	                        height: 100,
                	                lineWidth: 2,
                        	        lineColor: "#e0ffe0",
        	                        fillColor: "#e0ffe0",
                	                maxPower: 300,
                        	        rainText: "Tot: ",
        	                        noRainText: "Geen regen tot: ",
                	                nrOfTimeLabels: 5 // advised values: 2-5
                        		}
                        },
        
        		{
        			module: "newsfeed",
        			position: "lower_third",
        			showSourceTitle: true,
        			showPublishDate: true,
        			config: {
        	                        startTags: "['video','Video','VIDEO']",
        				feeds: [
        					{
        					title: "NU Algemeen",
        				 	url: "http://www.nu.nl/rss/Algemeen"
        					},
        					{
                                                title: "NU Internet",
                                                url: "http://www.nu.nl/rss/Internet"
         					},
                                                {
                                                title: "NU Sport",
                                                url: "http://www.nu.nl/rss/Sport"
                                                },
                                                {
                                                title: "Ajax Nieuws",
                                                url: "http://ajax.netwerk.to/nieuws/rss.xml"
                                                },
                                                {
                                                title: "Tweakers.net",
                                                url: "http://feeds.feedburner.com/tweakers/nieuws"
                                                },
        				       ]
        				}
        		},
        		{
        			module: 'MMM-MirrorMirrorOnTheWall',
        			position: "middle_center",
        			config: {}
        		},
                        {
                                module: 'calendar_monthly',
                                position: 'top_left',
                                config: {
         				showHeader: "true",
                                        }
        		},
        		{
        			module: 'worldclock',
        			position: 'bottom_center',
        			header: '',
        			config: {
        				timeFormat: 'HH:mm A', //defined in moment.js format()
        				style: 'left', //predefined 4 styles; 'top', 'left','right','bottom'
        				clocks: [
        					{
        					title: "Amsterdam",
                                                timezone: "Europe/Amsterdam",
                                                flag: "nl",
                                                },
                                                {
                                                title: "London",
                                                timezone: "Europe/London",
                                                flag: "gb",
                                                },
                                                {
                                                title: "San Jose",
                                                timezone: "America/Los_Angeles",
                                                flag: "us",
                                                },      
                                                {
                                                title: "Dubai",
                                                timezone: "Asia/Dubai",
                                                flag: "ae",
                                                },
                                                ]
        				}
        		},
        		{
                        	module: 'MMM-MovieListings',
                                position: 'bottom_center',
                                config: {
        				apiKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        				region: 'NL',
        				language: 'nl-NL',
        				interface: 'poster', //'list', 'poster', 'detailed'
        				includeMoviePlot: true,
        				maxPlotLength: 198,
        				header: 'Movies Near You',
        				moviesPerPage: 0,
        				refreshInterval: 1000 * 60 * 60 * 24, //Once a day
        				baseUrl: 'https://api.themoviedb.org/3/movie/now_playing',
        				animationSpeed: 2.5 * 1000,
        				pageChangeInterval: 35 * 1000
        				}
        		},
                       {
                                module: 'MMM-Scrobbler',
                                position: 'upper_third',
                                config: {
                                        username: 'marcnlx',
                                        apikey: '1a71a102c5d07a998a44bd2d9dfaf513',
                                        //time interval to search for new song (every 15 seconds)
                                        updateInterval: 15 * 1000,
                                        //how often should we try to retrieve a song if not listening
                                        delayCount: 5,
                                        //time interval to search for new song if the 5 times not listening is received.
                                        //set this to the same number as updateInterval to ignore this option
                                        delayInterval: 120*1000,
                                        animationSpeed: 1000,
                                        showAlbumArt: true,
                                        showMetaData: true,
                                        //Determines the position of the meta text. Possible values: top, bottom, left, right
                                        alignment: "right",
                                        }
                        },
        
        		 ]
        
        	     };
        
        
        /*************** DO NOT EDIT THE LINE BELOW ***************/
        if (typeof module !== "undefined") {module.exports = config;}
        
        
        
        1 Reply Last reply Reply Quote 0
        • yawnsY Offline
          yawns Moderator
          last edited by

          I’m impressed. A nice and clean build, well written documentation, some nice pictures to look at and everything with markups and such. Very well done, this is how more Showrooms should look like :)

          M 1 Reply Last reply Reply Quote 0
          • M Offline
            marcnlx @yawns
            last edited by

            @yawns said in My Magic Mirror - 100x70cm:

            I’m impressed. A nice and clean build, well written documentation, some nice pictures to look at and everything with markups and such. Very well done, this is how more Showrooms should look like :)

            Thanks! If you know how many hours I spent “extra” on my laptop because of not so well written documentation, no markups and such…I thought I would save everybody some time ;)

            1 Reply Last reply Reply Quote 1
            • yawnsY Offline
              yawns Moderator
              last edited by

              Yes, I can imagine that.
              I guess the mirror glass is mounted directly on top of the frame, right? I cannot see any ventilation drills. Did/do you somehow monitor heat inside the frame?

              M 1 Reply Last reply Reply Quote 0
              • M Offline
                marcnlx @yawns
                last edited by marcnlx

                @yawns You are correct. It’s mounted directly on top of the frame.

                I didn’t notice heat is really a problem, except a little bit for the monitor board…although it now has way more room to let air out then when the back part of the monitor was still on it!
                I was thinking about drilling some holes in the top of the frame to let the hot air out. There is also a small gap between the frame and the wall itself. On the RPi you can monitor temp as follows:

                pi@mirror:~ $ vcgencmd measure_temp
                temp=54.7'C
                pi@mirror:~ $
                

                I use a small script that shows temperature, but also shows it in Domoticz and sends a Telegram notification if the temperature gets too high:

                pi@mirror:~ $ ./myscripts/rpitemp.sh
                Raspberry Pi Temperature (domoticz) is 54.6 °C
                
                pi@mirror:~ $ cat ./myscripts/rpitemp.sh
                #!/bin/sh
                
                domoticzip=192.168.1.12
                user=xxxx
                pass=xxxx
                tempidx=204
                maxtemp=70
                
                RED='\033[0;31m'
                NC='\033[0m'
                val_temp=`vcgencmd measure_temp | cut -c 6-9`
                val_temp2=`vcgencmd measure_temp | cut -c 6-9 | cut -c 1-2`
                curl -s 'http://'$user':'$pass'@'$domoticzip'/json.htm?type=command¶m=udevice&idx='$tempidx'&nvalue=0&svalue='$val_temp'' > /dev/null
                
                if [ $val_temp2 -gt $maxtemp ]; then
                    echo "${RED}Raspberry Pi Temperature ($(hostname)) is $val_temp °C ${NC}"
                    curl -s -X POST "https://api.telegram.org/botxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage" -F chat_id=xxxxxxxx -F text="Raspberry Pi Temperature ($(hostname)) is $val_temp °C"
                else
                    echo "Raspberry Pi Temperature ($(hostname)) is $val_temp °C"
                fi
                exit
                pi@mirror:~ $
                
                1 Reply Last reply Reply Quote 1
                • P Offline
                  Peter
                  last edited by

                  Very nice job!
                  You live in the Netherlands, like me; can I ask you some questions by mail?
                  You have some things in your mirror that make me very curious how you did it!
                  Peter

                  M 1 Reply Last reply Reply Quote 0
                  • M Offline
                    marcnlx @Peter
                    last edited by

                    @Peter said in My Magic Mirror - 100x70cm:

                    Very nice job!
                    You live in the Netherlands, like me; can I ask you some questions by mail?
                    You have some things in your mirror that make me very curious how you did it!
                    Peter

                    Thanks! Yeah sure, no problem.

                    1 Reply Last reply Reply Quote 0
                    • Mykle1M Offline
                      Mykle1 Project Sponsor Module Developer @marcnlx
                      last edited by

                      @marcnlx said in My Magic Mirror - 100x70cm:

                      the only thing was that 30min after hanging it on the wall, “version 1” came off the wall completely

                      This gave me a good laugh, thanks. :-)

                      I agree. Well thought out (the 2nd one), nicely executed, well documented, pictures and a story. I commend you. Fantastic! :-)

                      Create a working config
                      How to add modules

                      M 1 Reply Last reply Reply Quote 0
                      • M Offline
                        marcnlx @Mykle1
                        last edited by

                        @Mykle1 said in My Magic Mirror - 100x70cm:

                        @marcnlx said in My Magic Mirror - 100x70cm:

                        the only thing was that 30min after hanging it on the wall, “version 1” came off the wall completely

                        This gave me a good laugh, thanks. :-)

                        I agree. Well thought out (the 2nd one), nicely executed, well documented, pictures and a story. I commend you. Fantastic! :-)

                        After I realized I could’ve expected this with “version 1” and saw the screen was still okay…same here :)

                        Thanks! I just created a post the way I personally like to read it ;) I spend at least a week setting up everything, testing things out, seeing the “please create config file” after a restart a million times after making a change and forgetting an { [ , ’ or " somewhere :)
                        I hope this will give people a bit of a Quick Start in configuring all modules and how I got everything working together ;)

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 1 / 2
                        • First post
                          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