• 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.

My Magic Mirror - 100x70cm

Scheduled Pinned Locked Moved Show your Mirror
19 Posts 10 Posters 22.9k 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 Mar 15, 2018, 12:55 PM Mar 15, 2018, 12:50 PM

    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 Aug 28, 2020, 2:14 PM Reply Quote 5
    • M Offline
      marcnlx
      last edited by Mar 15, 2018, 12:52 PM

      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
      • Y Offline
        yawns Moderator
        last edited by Mar 15, 2018, 1:41 PM

        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 Mar 15, 2018, 1:44 PM Reply Quote 0
        • M Offline
          marcnlx @yawns
          last edited by Mar 15, 2018, 1:44 PM

          @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
          • Y Offline
            yawns Moderator
            last edited by Mar 15, 2018, 2:03 PM

            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 Mar 15, 2018, 2:13 PM Reply Quote 0
            • M Offline
              marcnlx @yawns
              last edited by marcnlx Mar 15, 2018, 5:12 PM Mar 15, 2018, 2:13 PM

              @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 Mar 15, 2018, 4:18 PM

                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 Mar 15, 2018, 4:19 PM Reply Quote 0
                • M Offline
                  marcnlx @Peter
                  last edited by Mar 15, 2018, 4:19 PM

                  @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
                  • M Offline
                    Mykle1 Project Sponsor Module Developer @marcnlx
                    last edited by Mar 15, 2018, 8:20 PM

                    @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 Mar 15, 2018, 8:52 PM Reply Quote 0
                    • M Offline
                      marcnlx @Mykle1
                      last edited by Mar 15, 2018, 8:52 PM

                      @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
                      1 / 2
                      • First post
                        6/19
                        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