A Step by Step Guide to Build your own Smart Mirror

Keshav Chawla
Aug 9, 2019 · 4 min read

In July of 2017, I stumbled across this video by Ryan Nelwan where he showcases his custom made touchscreen smart mirror. It immediately inspired me to make my own smart mirror-based off the MagicMirror² platform. This post is my journey through the process and.

Ryan Nelwan’s Touchscreen “PANL” Mirror Source: https://youtu.be/sh2EJzplkpM

The Parts

  • A Rasberry Pi 3 B+ or 4 (with power supply)
  • 8GB+ SD Card & an HDMI Cable
  • Keyboard and Mouse
  • A two-way mirror (two-way acrylic will also work)
  • A monitor/TV (with wall mount)
  • Mini USB Mic
  • USB Extension Cable

I recommend the Rasberry Pi 3B+ or 4 based on their sheer power and ease of use when installing node dependencies and the MagicMirror² platform. Feel free to use an older Rasberry Pi or the Pi Zero, but expect additional hoops to jump through.

Unquestionably, the hardest item to find to build a MagicMirror is a two-way mirror itself. These mirrors work by being reflective (like a normal mirror) on one side and transparent on the other. “The half-silvered surface will reflect about half the light that strikes its surface while letting the other half go straight through.”¹ I was able to find a large two-way mirror on Kijiji for about $50 and then got it polished and cut at a glass and mirror shop for an additional $20.

The USB microphone and extension cable will come in handy later when we install the Google Assistant. Optional, of course, but well worth the additional hassle.


1. Setup your Rasberry Pi with the Raspbian OS.

If this is your first time working with a Rasberry Pi I would recommend buying a kit that comes with everything almost ready to go. Otherwise, follow this tutorial here that will allow you to set up the NOOBS (New Out Of Box Software) OS from which you can select Raspbian to install.

Note: Make sure you install the full version of Raspbian and not Raspbian Lite.

2. Enable SSH on your Rasberry Pi

I should note that this step is optional but if you are like me and find working in Raspbian to be tedious then enabling SSH will make your life a lot easier. See the steps here to enable SSH and connecting to your primary computer.

3. Use the one line Bash Command

Using the Rasberry Pi terminal or through SSH run the following bash command to go through the full installation.

Alternatively, if you choose to manually install MagicMirror² follow the README on Github repo page making sure you have installed Node.js and all necessary dependencies.

4. Starting your MagicMirror

In the terminal, navigate to your MagicMirror (cd MagicMirror/) directory and start (npm start/). If at this point you see a screen that asks you to create a config file you have done everything correctly so far.

What you should see at this point. Source: https://forum.magicmirror.builders/topic/9353/please-create-a-config-file-problem

5. Setting up your config.js file

Navigate to this directory (/home/pi/MagicMirror/config) and copy the contents of theconfig.js.sample file and create a new config.js file in the same directory. Depending on your settings there may be some minor modifications that need to be made to your config file. At this point, your MagicMirror² is complete (sort of) an can be run in the same way we did so in step 4.

6. Customizing your mirror

The beauty of the MagicMirror community is all the different add-ons called modules which you can install to your mirror. See the list of 3rd party modules and install works best for you.

Here is the list of modules I have installed:

  • Clock
  • Calendar (synced to my Google Calendar and iCal in live time)
  • Current Weather
  • Weather Forecast
  • News Feed (CBC News RSS feed)
  • Compliments
  • Hello World
  • Alert
  • MMM-NowPlayingOnSpotify (displays current song playing on Spotify in live time)
  • MMM-GoogleAssistant (turns my mirror into a google assistant)
  • MMM-JEOPARDY (cycles through 40 years of Jeopardy questions)
  • MMM-TwitterTrendsByPlace (shows the top trending Twitter hashtags in Toronto)

If you want to save yourself some time for including each of these modules in your config file you can copy and paste my Config file. Of course, you will still have to install each module and paste the corresponding API keys if applicable.

I will be updating this shortly with photos and videos from my own mirror along with some additional steps to building hardware to go along with your mirror.


[1]: “How do one-way mirrors work?” 12 July 2000.
HowStuffWorks.com. <https://science.howstuffworks.com/question421.htm> 27 July 2019

Keshav Chawla

Written by

University of Waterloo — Candidate for Computing and Financial Management 24'

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade