MagicMirror² v2.14.0 is available! For more information about this release, check out this topic.

Finally, my first mirror is complete!

  • Module Developer

    I always wanted to try building a magic mirror for myself, but I really started the journey about 6 months ago. The goal for this build was to have something simple and minimalist.

    My first step was to sort out the software part (easier for me as I am a software engineer during daylight) then move on to the hardware.


    I have a couple of raspberry pis lying around at home. I took one and installed MagicMirror on it without any troubles. I also started to look at modules that were available: weather, calendar and clock were of course in the final bracket. But I wanted something beyond that.

    I’m living in Edinburgh and commuting by bus, so a module to display the live time data from the bus stops around the house was a must-have. It didn’t exist so I created MMM-LothianBuses.
    I can see planes from the kitchen windows. As my wife is really curious, she always wants to know what planes they are so I built MMM-FlighTracker module which does exactly that.
    A late addition to the the curated list of modules I’m running was to know what current song is playing on my Sonos network. In the spirit of having a minimalist setup I also created another MMM-Sonos module as the other one didn’t suit my needs.



    With the software out of the way, I started to build the frame for my mirror. I bought an old 21’’ monitor from which I took all my measurements. The plan was to enclose this screen into a wooden frame, sandwiched between the mirror and angle brackets to secure it in place. I have a wood recycling center close-by home, went there and bought a 1.8cm plywood sheet from which I cut strips to do the frame. I used dove-tail joints to provide enough mechanical strength to support the weight of the final product.

    Initially, I wanted to keep the frame bare with a light stain, as the plywood layers give a nice feature. But I did sort of a mess when I cut the strips, and the plywood shipped quite a bit. At the end, I had to use some filler + paint to have an nice finish. Next, I made a channel with my router on each strip to slide the mirror in. This provides a nice look but it also means that once glued, the mirror cannot be extracted or changed without breaking the frame.

    Angled square brackets

    Mirror channel

    Dove-tail joints frame #1

    Dove-tail joints frame #2

    After the assembly of the frame + mirror, I did a couple of coats of filler, then paint. I pushed down the screen against the mirror and secured it with 3D printed angled brackets. I also soldered power leads to have a nice 3 pins IEC connector at the bottom of the screen. That way, I have a nice single unit that I can plug anywhere (bonus point of my screen is that the 2 USB ports are always delivering 5V even though the screen is “off”, so the raspberry pi can be plugged there directly rather then needed an external power source)

    Power leads

    Screen prepared

    Final assembly

    First coat of paint

    To hanged the mirror, I used a very simple french cleat within the frame which makes the mirror completely flushed with the wall. Here is the result!

    Nice picture #1

    Nice picture #2

    Nice picture #3

    Nice picture #4

    After thoughts

    I’m super happy with the way it turned out, and it gave me so much satisfaction when I finished the project. However there a couple of things that I might do differently if I had to do it again:

    • not using the channel to slide the mirror in, for reasons explained above. I would rather do a simpler design for the frame.
    • use a glass mirror. I have a pretty decent acrylic mirror. It looks good but unfortunately, it:
      • wrapped a bit.
      • reduces the brightness of the text quite a lot.
      • reduces the viewing angles significantly.
    • spend more time onto the smaller details like “externalised” the screen buttons (I have all the hardware but need to wire them up) + do a an integrated on/off and reset buttons for the raspberry pi. Although this can be added later on.

  • Project Sponsor

    Wow! That’s really good for a first mirror. I like the slot for the glass, frankly. I may have to try that technique next time.

  • Module Developer

    @bhepler Thanks! The slots fo the mirror give a neat finish but I’m sure there are easier technics to achieve this effect without the hassle (it wasn’t the easiest job to do the frame assembly)

    That being said, it was good woodworking practice 🙂

  • lovely one
    maybe juste try with a white cable for power

  • Project Sponsor

    Very nice and clean design! I love that sort of simplicity. I went the same route regarding the frame, but had to use two ready-made RIBBA frames, as I have no facility to build it myself. A Glas mirror is definitely the next upgrade you should consider. It really makes a significant difference. Maybe you could also try to move the power plug inside the frame to hide the massive cable shaft, which goes into the mirror plug. Or cut and strip the cable plug and wire it directly inside the frame, with a white cord of course.

  • Module Developer

    Thanks @seramik, @Fozi. I already planned to have a white cable, it just hasn’t arrived yet so I used a black one as a temporary measure.

    I’ll consider upgrade to glass but later, once I get bored of the current version.

  • Dear @tbouron , what a great idea to include the airtraffic data.
    Please allow me one question: Did you use an antenna or how did you get the data? I tried to follow the github instructions but failing misearbly.

    Kind regards,

  • It looks so cool but could try adding more slides or something if you haven’t already

  • Module Developer

    @PaulB I use the antenna that came with the USB dongle. Works like a charm

  • Module Developer

    @Mahieedaboss not sure what you mean by more slides?

Log in to reply