How I Built a Smart Mirror with Raspberry Pi and MagicMirror
How I Built a Smart Mirror with Raspberry Pi and MagicMirror (And Why It Almost Drove Me Crazy)
Let me start by saying this: I did not expect my weekend Raspberry Pi project to turn into a two-week saga of frustration, tiny victories, and way too much Googling. But hey, that’s DIY tech for you.
If you’ve ever seen those sleek smart mirrors in sci-fi movies (or on YouTube) and thought, “I want that, but I also don’t want to spend $2,000,” then this post is for you. Here’s how I built my own smart mirror using a Raspberry Pi and MagicMirror—complete with all the messy, unglamorous details.
Why a Smart Mirror? (And Why Not Just Buy One?)
First, the why. I’ve always loved the idea of a mirror that does more than just reflect my questionable morning hair. Weather, calendar, news headlines—all at a glance while I brush my teeth? Sign me up.
But commercial smart mirrors? Oof. The price tags are wild (we’re talking "might as well buy a used car" territory). Plus, where’s the fun in that?
So, I settled on the classic DIY approach:
- Raspberry Pi (because of course)
- MagicMirror² (open-source, modular, and endlessly customizable)
- A two-way mirror (more on this later)
- A monitor (scavenged from an old laptop because I’m cheap)
Step 1: Gathering Supplies
I thought I had most of what I needed. Spoiler: I did not.
The Big Three:
- Raspberry Pi – I used a Pi 4 because I had one lying around, but a Pi 3 would work too.
- Monitor – I ripped apart an old 24-inch LCD monitor. (Note: This involved way more screws than expected.)
- Two-way mirror acrylic – This was the trickiest part. I ordered a custom-cut piece online, which almost fit perfectly. (Almost.)
The “Oh Right, I Need That Too” List:
- HDMI cable
- Power supply
- Frame (ended up using an IKEA poster frame because, again, cheap)
- Double-sided tape (so much tape)
Step 2: Setting Up the Raspberry Pi
Installing MagicMirror² should be simple. And it is… if you’re familiar with Linux terminal commands. I was not.
The Process :
- Flash Raspberry Pi OS – Easy. Used Raspberry Pi Imager, no issues.
- Open Terminal – Alright, I got this.
- Run the one-line MagicMirror install command – Wait, why is it erroring?
- Spend 45 minutes realizing I forgot to update packages first – Cool, cool, cool.
After some frantic Googling and a few sudo apt-get
incantations later, MagicMirror was running. First victory.
Step 3: Configuring MagicMirror
MagicMirror works via a config.js file, which is just JSON with extra steps. I wanted:
- Clock
- Weather
- Calendar
- News feed
Problems I Faced:
- Weather API Keys – Why does Dark Sky no longer exist? Switched to OpenWeatherMap after much grumbling.
- Calendar Syncing – Google Calendar should be easy. It was not. (Pro tip: Make sure your API credentials are set to “internal” if you’re self-hosting.)
- Module Positioning – My clock kept overlapping the weather. Took me way too long to realize I could just adjust the position values.
At one point, my mirror just displayed: Error: Cannot find module 'moment'
I screamed internally.
Step 4: The Physical Build
The Steps (And Mistakes):
- Disassemble the monitor – Surprisingly easy. Just don’t break the LCD.
- Fit the two-way mirror acrylic – Wait, why is there a gap? Had to trim it with a utility knife. (Do not recommend.)
- Mount the Pi behind the frame – Used Velcro because I have commitment issues.
- Power it all up – Please work. Please work. Please—oh thank God.
The first time it booted up and I saw the time, weather, and my own sleep-deprived face staring back? Pure magic.
Final Thoughts
Pros:
- Looks incredibly cool.
- Actually useful (I check the weather every morning now).
- Learned a ton about Raspberry Pi, APIs, and my own patience.
Cons:
- Took way longer than expected.
- The frame is slightly crooked (but we don’t talk about that).
- Now I want to add more modules.
Comments
Post a Comment