We’re back in the office after a brief break for a plague. So I got into the mirrors and uploaded some moving portrait videos.
First, the right side:
https://youtu.be/5647bHkcUw0
And on the left side:
https://youtu.be/HT6_DEtfaSc
We’re back in the office after a brief break for a plague. So I got into the mirrors and uploaded some moving portrait videos.
First, the right side:
https://youtu.be/5647bHkcUw0
And on the left side:
https://youtu.be/HT6_DEtfaSc
The 2nd mirror I made was for my office using a really wide piece of one-way mirror that I had fall into my lap. After a lot of tribulations, I got it done. But I was never really happy with it. The mounting system was clunky, it hung away from the wall a lot, there was a huge dead space in the middle, I used two different processors for the monitors, power was via a concealed power strip mounted on the wall, etc.
I just finished upgrading the double-wide mirror to a triple-monitor setup. New frame, new facing, better mounting and a power plug that I highly recommend to anyone.
First, I build the support frame. I added a rabbit around the inside to hold the glass.
Next I built the facing out of chair rail molding. This is the same material as previous (the boss likes it).
After staining the facing, I joined the support frame to the facing. Eventually, the glass will sandwich between these two pieces. The metal L brackets are screwed in so that I can transport the entire thing as a unit and detach the pieces when it’s time to migrate the glass from the existing mirror to the new frame.
Next, I cut a hole for the power plug. I found these on Amazon. I did have to wait a couple weeks while they shipped from China, but I think they were worth the wait. No more inline switches on power cords!
The power port is wired into a power strip that I also bought off of Amazon. This will provide a place for the monitors and Pi to plug in. It just has enough slots. I’m using every AC and USB socket on this thing. I tried glueing it to the support frame but it didn’t work. I ended up zip tying it in place.
Quick testing to make sure I didn’t miswire anything. You can see some other steps here: the support frame has been painted black so it won’t show through the one way glass. The holes in the support frame for the power cords and USB cords have been drilled and the cords are threaded. The power cords were snipped in order to make it through the holes, so I reconnected those with some wire nuts. There are some pieces of scrap wood on the support frame that are screwed in with one screw. Those hold the monitor up against the glass so the monitor doesn’t slide out due to gravity. They’ll rotate into place one the monitors are in position up against the glass.
After testing, I took it to work and installed in over about 3 hours. I had someone in the office help me which was a lifesaver. It’s heavy! We took down the old mirror, disassembled it, moved the glass over to the new frame, screwed the facing on, flipped it over, removed the monitors from the old mirror, took off the bezels, installed them in the new mirror, took down the old VESA mounts, put up the new French cleats and then finally hung the mirror.
I went back today to configure it. I think it turned out really well!
https://youtu.be/A4nr88bGblI
I’ll have more on this in the next couple of days. But here’s a preview just to whet your appetite.
Now that photos are working again, here are some photos of the refreshed Magic Mirror Mark II. All three screens are active and the look is much cleaner.
And a close up of the switch.
IIRC, @michmich looked into offering this as a commercial product and he ran into patent and licensing problems. The laws of your country may vary, but the short version is you can’t offer a magic mirror as a commercial product without involving lawyers and giving the patent holders some sort of payment.
You may be able to make one for your friends as a favor, with them picking up the expense of the materials. But you won’t be able to turn this into a business without careful and professional legal advice.
@skr Because I’m a crap coder in Javascript.
Sorry for not helping earlier, folks. I was at a wedding and delivering my mirror as a gift. I’ll investigate and see if I can’t improve the mirror code.
You should not ever have to modify the compliments.js
file. You should be able to pull it off with just modifications to the config.js
file.
I confess, after reading the name of the module I had a completely wrong impression of what it was going to do.
So this was an interesting project. I showed my first mirror to my boss and he was so impressed with it, he voluntold me to make one for the office. He gave me a budget and told me to complete it at my own pace. Other than “make it impressive” and “modern”, I was given more or less a free hand.
I considered mounting a 65" TV and doing it that way, but I had a piece of one-way glass fall into my lap. I figured it would be faster to use it than order a chunk of glass large enough to make that ginormous mirror. The trouble is… the glass is 88" x 15". It’s repurposed from a faux-fireplace thing that my neighbor is installing in his bathroom (don’t ask). So in the end, I decided that two monitors behind one glass would work. This way, there’s always a portion that is just reflection so people can primp.
So I started out by working out the mounting problem. With two monitors and a really long piece of mirror, I decided that I could keep the bezel on the monitors and use commercial wall mounts that attach to the VESA holes in the back of the monitor. The mirror hangs off of the monitors, instead of the frame supporting both the monitor and mirror.
First step: Route a rabbit into the frame so that the glass will sit flush with the face of the frame.
A quick coat of stain in case someone sees it from the side:
Paint the inside edges black to cut down on the visibility of the lighter edge through the glass:
A layer of window weather stripping goes in the rabbit to provide cushioning to for the glass, and also to push the glass up against the moulding.
Screw the moulding down over the glass and into the frame. The moulding is a fairly simple round over type, usually used for chair rails. I wrapped it in a vinyl wrap with a carbon fiber pattern.
I haven’t ever mounted anything in an office before. They don’t use wooden studs, so I was unsure how to mount this thing into the walls. On the building construction supervisor’s advice, I build a mounting plate out of pine. A quick pass with the router put a good edge on it, and a stain plus sealant gave it some color.
Time to install everything in the office! Here’s what it looks like beforehand:
The mount is up along with the monitor mounts attached to the mounting board.
Monitors, power strip, RasPi and Fitlet in place:
And finally, we hang the mirror over the top of the two monitors.
@seedhe - The module framework that @MichMich created is where the technique of hosting the mirror on a Pi really shines. While the Magic Mirror is more-or-less a customizable web page, the ability for the modules to call background processes adds a level of utility.
For example, I can put a static web page up on an Amazon cloud IP and just hit that from my mirror. It will display static data and maybe some things from various APIs, if I code it cleverly enough. But that’s about it.
With the OS working behind the scenes, I can display anything behind my firewall (IP cameras, weather stations, temperature sensors, PIR sensors, etc.). I can also plug in a camera and/or microphone and use the data from those devices in my modules.
It also allows you to scale up if you need to. A Raspi is pretty slick for its size and cost. But if you put something like a NUC behind it, you can use that processing power for some really cool features. Voice recognition, facial recognition, complex animations, etc.
@mjlee - I copied your code and I’m not getting the same results.
From the browser console:
socketNotificationReceived: GOT_DATA MMM-MYTEST.js:20
MMM-MYTEST: Getting data MMM-MYTEST.js:34
socketNotificationReceived: GOT_DATA MMM-MYTEST.js:20
MMM-MYTEST: Getting data MMM-MYTEST.js:34
And from the terminal console:
Ready to go! Please point your browser to: http://localhost:8080
[28.02.2023 20:52.46.170] [LOG] Notification: GET_DATA Payload: {"config":{"intervalSecs":10}}
[28.02.2023 20:52.46.207] [INFO] Checking git for module: MMM-MYTEST
[28.02.2023 20:52.46.207] [INFO] Checking git for module: default
[28.02.2023 20:52.56.164] [LOG] Notification: GET_DATA Payload: {"config":{"intervalSecs":10}}
[28.02.2023 20:53.06.156] [LOG] Notification: GET_DATA Payload: {"config":{"intervalSecs":10}}
Perhaps the issue is that you’re looking at the wrong console log? The MYTEST.js log will write to the browser’s console rather than the terminal.
@vvrangler - if it helps, I use SVG graphics in the MMM-WeasleyClock module. And I know I borrowed some of the SVG code from the included Clock module.
The monitor stand is definitely unique. Good looking build.
@kpl4184 - You can specify a custom date format with anything you like.
{
module: "clock",
position: "top_left", // This can be any of the regions.
config: {
dateFormat: "[New York City]",
showDate: true
}
}
@alex1223 - If you’ve already adjusted the monitor brightness to it’s lowest level then you’ve got a problem. You may be able to adjust the contrast to increase it. That should make the gray/white pop a bit more, but if you’re seeing the back light then it won’t help all that much.
Unfortunately, the only solution I can think of is to replace your mirror glass with a variant that lets in less light. You can purchase samples of different one way glass recipes and hold them up to the monitor to find one that reflects enough light that the back light isn’t visible. It will limit how bright the white is, of course.
@Gucek - With some careful woodworking, you should be okay. I think the main issue is going to be how do you secure both the glass and the monitor so that they don’t fall out when you open the glass/frame component. You don’t want the glass to fall out and you don’t want the monitor to fall out.
My very first mirror had a 3/4" gap between the mirror and the monitor and it was noticeable. You will want to find some way to secure the glass so that it’s held securely but presses flush up against the monitor when closed.
Take your time and plan out everything. Good luck.
@thiske - Nice work. That’s a very clean build you have there. Can you give us some dimension? It’s hard to get a sense of scale.
@Richtw - Yeah, that error usually means that there is an error in your config.js
file.
Couple suggestions:
npm run config:check
. It will let you know if there are any errors in your config.js
file.config.js
file in this thread. Be sure to use the markdown features of the forum for readability.[Dammit, I am about this close to just deleting my repository. It’s not my module and I’m sick of fixing it.]
@dwburger - Thanks for the recommendation. I’ll check it out.
You may also want to take a look at MMM-RAIN-MAP.
@omarr - That’s amazingly thin. Is that sunk into the wall? It looks great.