Chances are, if you’re at this page, you’ve seen at least one part of the PoE Smart Mirror project on YouTube. If you haven’t this might not make sense yet, so be sure to go back and watch the videos to see the mirror come together. Maria has been wanting to build this smart mirror for some time now and it was great to see the final product. We hope everyone enjoyed watching the process and liked how the mirror turned out. It might not be the most high-end option out there, but it was a great project that any new, or experienced hobbyist can tackle. If you want to learn more about the process, or see what specific steps we took, read through this page and maybe it’ll inspire you to build one for yourself!

See how it all came together!


Hi, ya’ll! Maria here to give some background about this project before we dive into specifics. Now that it’s complete, I can say that it was such a great project to take on. I was definitely nervous at first because I have never built a project like this, let alone built anything with coding involved. Thankfully I was able to recruit Jeremy who was excited about the process and became a huge help. The concept came about because we wanted to find a cool project to do for our YouTube channel using a Raspberry Pi. We wanted to show build/application options you can do with an R-Pi and have it POE powered using our GAF-PiHAT accessory. We had an old laptop screen at the office and thought it’d be great for a first video project concept. Seeing the mirror come together was so rewarding. It made the ups-and-downs of coding worth it. I’m excited to provide you with this guide for those who want to build one of their own.

Materials and Tools You’ll Need

Materials Used:

  • 2-Way Mirror
  • Pi Case
  • Raspberry Pi (we used a 3B+)
  • GAF-PiHAT (POE powered application)
  • Cat5e cable
  • 802.3af POE injector
  • GAT-12v25w PoE splitter
  • MircoSD Memory Card
  • LED strip lights
  • Mounting adhesive strips
  • Hobby Board/wooden planks
  • Upcycled laptop screen/Pi Screen
  • Software of choice
  • Black foam to block out negative space


  • Nails (wood glue is an option as well)
  • Zip ties
  • Screws
  • Nail gun
  • Saw and Sandpaper (used to make the wooden frame)
  • Scissors
  • Marker
  • Measuring tape


  • Win32 or other imaging software
  • MagicMirror
  • Raspberry Pi OS (32-bit with Desktop worked for us)

Part 1: The Build Process

Step 1: Measure for your frame. Whether you’re using hobby board or wooden planks, it’s important to get your frame measurements correct since this is the base for the mirror. You’ll want to make sure it fits the screen size you’re using.

Step 2. Cut. Once you’ve measured the dimensions needed for your frame, cut the pieces out and sand them down. This is where you can paint your frame, too. We went with a neutral, blonde finish.

Step 3: Assemble. The three main pieces to assemble as the base for your frame are the rods (hidden underneath) to hold the screen in place, the outside cover piece, and the frame itself.

Step 4: Mounting.  This is when we mounted the screen to the inner, hidden rods and find the right position for your screen. The right position for our build was right in the middle. Cut the foam to hide the excess space, and place it around the screen to create blackout effect.

Step 5: Add your Mirror. Put the mirror in place and attach the ‘lid’ part of frame to hold it in place. The way ours was measured and cut, you could hear a physical ‘snap’ sound when the two pieces connected. We secured ours a step further with latches and screws.

Step 6: Cable management. Time to add your connections. This is when we connected our Raspberry Pi, GAF-PiHAT, HDMI cable running to the screen console, and the LED lights. The LED lights were powered from an open USB port on the R-Pi and attached to the sides of the frame with the included adhesive strips.

At this point your build should look like a regular mirror. The next steps will bring the smart mirror aspect into it as you begin to program the software.

Part 2: The Programming Process

Download Raspberry Pi OS, your smart mirror software of choice, and image/re-image your SD card. MagicMirror provided us with a set of commands for the basic configuration, but a small knowledge of basic terminal commands is definitely helpful in this process.

Your Raspberry Pi is only the computer. The “brain” is going to be the SD card since that is where the operating system is downloaded. If you try to connect the blank SD card to the brand new Raspberry Pi, nothing will happen. This is why you have to download the Raspberry Pi OS. There are different versions to choose from so find the one that fits your application You will have to download the file and image your SD card. Once it’s imaged it will be able to run your operating system. Now you can move forward with downloading and installing the smart mirror software of choice. In our case, we used MagicMirror. This will be downloaded to your Raspberry Pi.

Open the terminal and run shells commands to start the process of bringing the smart mirror to life. There are different versions of this MagicMirror software so your commands might be different. This is why I decided to not list the specific commands we used. You can find updated versions on, or even google MagicMirror terminal commands.

MagicMirror Software:

Follow the basic steps on the site to download and install the most updated version. At the time of our build it was Node.js


Once we had the basic commands set up, we were able to choose which MagicMirror modules to customize our mirror interface with.

Module 1: Weather

Module 2: MMM – Astrology

Module 3: Holidays

This module is stock, so we just had to find and code our region — Austin, TX.

Module 4: Compliments

We decided to disable this module because of the default wording it uses. In the video, you’ll get an example of the compliments this stock module greets you with. Instead, we replaced it with a standard text module to say “Hello, world.”

Module 5: Date/time

This module was another stock feature. To make it accurate for our region, we simply had to set it to CST.

Would You Like to Know More? We’re happy to discuss it with you.

Drop Us a Line to Schedule a One-on-One Consultation