@james1787
That’s pretty nice! I like the classic look.
I’m a pretty heavy user of Google Calendars (16 different calendars between me, the wife, and the kids) and I definitely recommend MMM-CalendarExt3.
@james1787
That’s pretty nice! I like the classic look.
I’m a pretty heavy user of Google Calendars (16 different calendars between me, the wife, and the kids) and I definitely recommend MMM-CalendarExt3.
@monark said in small outburst - opencv:
Some people may find it fun to find solutions, but for many it is not, especially if years go by without finding solutions either on their own or with the help of the developer who claims to have installed it on other platforms. I would add that the people who find this type of activity fun are precisely those who created the module and know exactly how to untangle it.
I understand your pain. I’ve been working on my MM for a couple of years now and only just recently got it where I feel I’m satisfied for now. But it’s not perfect.
There is a module which will show the arrival times of the next bus/streetcar that I never could get to work reliably, even with the module author’s help. The MMM-Bluelinky module (to display the status of Hyundai/Kia EVs) works occasionally on my test system but almost never on the actual instance. I could go on about things I’ve tried that don’t work. It can be incredibly frustrating.
I am one of those people who enjoys figuring things out but my time is severely limited (full-time job, mentoring a robotics team, serving on the board of a non-profit, going back to college) so I wouldn’t mind a bit more of a finished product.
Here’s the thing, though: I could get a totally finished, polished, ready-to-go with no futzing about product. I would just have to pay for it. (There is a product called DAKboard, I think that might be worth looking into.)
The MagicMirror core system and all of the modules are created and maintained by volunteers who get nothing out of it. I don’t think there’s even any corporate sponsors or anything. So what you get is what people want to put into it.
Most of the people who work on MM and its modules are techies who want to figure out how to get something working either for the fun of it or because they want some functionality. Once they get to that point – working for them – many aren’t interested in the “boring” bits of polishing it up and documenting and so on. And there’s no paycheck to incentivize them to do that.
Take Linux, for example. Linux started out as a personal project and then others started contributing but for a long time it was difficult to use and install and you really had to be pretty tech-savvy to use it. Then companies started getting interested in using it and were willing to pay for a finished product. So other companies – Red Hat, Suse, etc. – were born to do the boring bits of writing manuals and help screens and testing and bug fixes and so on to make it into a product that you can pretty much install off the shelf and use without knowing much. But for a long time, there was a huge difference between Linux and Windows/MacOS because the latter had big companies that invested in them because they weren’t free. Linux was (and is) free, so you got what you paid for.
MagicMirror is the same. You get what you pay for. Actually, that’s not true – you get a lot more because of all the module developers and folks like the amazing @sdetweil who really do put in a lot of time and effort to make MM as off-the-shelf usable as possible. But it’s not going to be as polished as a commercial product.
Now, here’s a thought: Perhaps you could find someone with the time and expertise who would be willing to get your mirror set up for you the way you want it if you pay them. It’s not unheard of – there are folks who will build Ikea furniture for you and folks who will run your garage sale for you. This isn’t any different.
So it comes down to either doing all the work yourself or paying someone else to do it for you (either a freelance MM person or DAKboard/etc.).
If you choose to do it yourself, there are a lot of folks here who can and will answer questions.
@_V_ said in The typical beginner question:
Just a last question: So Ive read a couple of times that people warn to check for the right angle/position/whatever of the hdmi port of the screen - is this more related to the people who plan on put the screen into a housing / behind a frame? I guess with a 90° or even 180° adapter itll be good for me if I am going to attach it to a wall?
Out of curiousity: Any screen suggestions?
The adapters are really just so you can get things to fit in the frame or whatever you’re using to mount it. I’m working on a small one for my son where I have 180° adapters for power & hdmi for the screen to save space and get the cables going in the right direction. I went through a lot of different adapters to get that right. (Aliexpress can be your friend here.)
I just used a monitor I had already. It happened to fit the space I wanted it for. Basically, any monitor will work. Note that different size screens (esp. screen ratio – width to height) will display things differently.
This module checks an e-mail address for new e-mails and displays the subject line on the Magic Mirror. This allows you to post an announcement for all to see or provide information (current wifi password or soup-of-the-day?).
I wanted something like this decades ago (in the time of pagers) but the technology wasn’t available or accessible. Now we all have cellphones and text messages so this is likely not terribly useful but I still wanted to implement the idea.
I’ve tried to document it adequately and done my best to test it but do let me know if you have questions or find a bug.


[card:Unclearogre/MMM-MailMessage]
@sdetweil
I’ve updated the module list:

Apparently, GitHub’s automated abuse detection decided I was a bad guy and did indeed shadowban me. (They probably talked to my kids or something.) Anyway, it looks like it’s fixed now.
That’s an awesome idea. The advantage being that you could have a scrolling calendar so you always see 12 months with the current date at the left. In addition, people could then pull it up on their own desktop to see it.
My first thought was to set up a google calendar for each person (just for this) and maybe use something like MMM-CalendarExt3 to display it. I think you’d have to standardize calendar entries (like “Sick”, “Holiday”, “Personal”, “Work-at-Home”) which could be picked up on for the color formatting.
But there might be other, simpler options, such as a simple text file where people could add dates they were out (“Uncle Roger”,“20260428”,“Sick”) that could be updated via a back-end webpage which is then used to fill in date cells in a simple table.
I suspect it will be a fair bit of work to get it set up but worth it in the long run.
You could look through the list of existing modules to see if there’s something that would work: https://kristjanesperanto.github.io/MagicMirror-3rd-Party-Modules/ or https://github.com/MagicMirrorOrg/MagicMirror/wiki/3rd-Party-Modules
If you don’t have someone on staff who could handle the project, maybe find a teenager/college kid who would do it for a reasonable stipend?
Best of luck!
@_V_ said in The typical beginner question:
you maybe wanna share a pic or two of this controller and how it is connected? :)
I guess Ill do as you adviced and get a Pi. Actually I already got one to play some retro games with it.
Usually I buy overpowered hardware, just cause Im one of those victims who can hardly resist ^^
Unfortunately, I don’t really have any good pictures of how the Pi and monitor are connected. The Pi itself sits in a little bracket my son designed and 3d printed.
The whole mounting process went a little cattywumpus because it turns out that the box that holds the monitor electronics isn’t connected to the screen, other than by a couple of pieces of tape and I was mounting everything and then it started to fall apart and fall off the wall so I panicked and just screwed it to the wall. One of these days, I’m going to have to deal with that but that’s a problem for future me. 8^)
As a heads up, MMM-SFMuniBusTimes (https://github.com/vikramraja1995/MMM-SFMuniBusTimes) no longer works due to Muni switching APIs. I’ve looked at it and have info about the new API but, honestly, I’m like a bumblebee in the deep end of a swimming pool.
@KristjanESPERANTO said in [MMM-MailMessage] Send messages to your MagicMirror via e-mail:
@UncleRoger Nice. Do you want to add it to the list of modules?
I should do that. I will do that. Thanks for the reminder.
@MZ-BER
FYI, I’ve published and posted in the modules/showcase forum.
You could try this module: https://github.com/Unclearogre/MMM-CustomTable
I wrote it to be a simple legend underneath my monthly calendar to show which color corresponds to which calendar. I’m not sure how you’d easily update the info though.
Google sheets might be the way to go. Depending on how much time you have to spend on this, you could try using AI to create a module.
That’s an awesome idea. The advantage being that you could have a scrolling calendar so you always see 12 months with the current date at the left. In addition, people could then pull it up on their own desktop to see it.
My first thought was to set up a google calendar for each person (just for this) and maybe use something like MMM-CalendarExt3 to display it. I think you’d have to standardize calendar entries (like “Sick”, “Holiday”, “Personal”, “Work-at-Home”) which could be picked up on for the color formatting.
But there might be other, simpler options, such as a simple text file where people could add dates they were out (“Uncle Roger”,“20260428”,“Sick”) that could be updated via a back-end webpage which is then used to fill in date cells in a simple table.
I suspect it will be a fair bit of work to get it set up but worth it in the long run.
You could look through the list of existing modules to see if there’s something that would work: https://kristjanesperanto.github.io/MagicMirror-3rd-Party-Modules/ or https://github.com/MagicMirrorOrg/MagicMirror/wiki/3rd-Party-Modules
If you don’t have someone on staff who could handle the project, maybe find a teenager/college kid who would do it for a reasonable stipend?
Best of luck!
Thanks!
P.S., I really appreciate all your help, not just for me but for everyone. You really are a rock star!
Okay, so I should back everything up, install MM on a new card, and then reinstall config/css/etc.? Ugh.
One of these days, I’m going to rebuild everything (physical stuff) to make it easier to access the RPi and all.
Thanks!
I’m not sure what happened but it seems that npm and node are no longer set up on my RPi. The MM seems to run fine but updating (npm install) modules returns “-bash: npm:” command not found".
I did “node -v” and got the same error (only “node” instead of “npm”).
Is there an easy way to get this set up correctly again?
Thanks!
So I think the “Suspended” thing is a red herring. I booted up my dev system and watched the console messages there. I saw the same behaviour of BackgroundSlideshow being suspended but it does show the images.
I’ll update just MMM-BackgroundSlideshow on that system and see what happens.
I’m using MMM-BackgroundSlideshow with MMM-Pages and it was working fine. My mirror was down for a while and when I booted it up again, it seemed to be working fine except that a bunch of modules needed updating – MMM-Traffic, MMM-EarthquakeAlerts, MMM-CalendarExt3, and MMM-BackgroundSlideshow.
Like an idiot, I updated them all (git pull/npm install) without backing things up first. I didn’t change the config except to add something to another module on a different page.
I have not reloaded the MM on the actual MM downstairs, but when I access it via a web browser from my computer, it doesn’t show any images.
I looked in the console and see that when switching to page 1 (images), it suspends the modules that were active on page 0, resumes a few always-on modules (MMM-Pages, MMM-Keypress, etc.) and then… suspends MMM-BackgroundSlideshow.
MMM-Pages.js:97 [Pages]: received a notification to change to page 1 of type number
module.js:182 clock is suspended.
module.js:182 MMM-Worldclock is suspended.
2module.js:182 calendar is suspended.
module.js:182 MMM-connection-status is suspended.
module.js:182 MMM-WiFiPassword is suspended.
module.js:182 MMM-SystemStats is suspended.
module.js:182 weather is suspended.
5module.js:182 MMM-Traffic is suspended.
module.js:182 MMM-MoonPhase is suspended.
module.js:182 MMM-EarthquakeAlerts is suspended.
module.js:182 MMM-CalendarExt3 is suspended.
module.js:182 MMM-CustomTable is suspended.
module.js:182 MMM-SimpleText is suspended.
3module.js:182 MMM-homeassistant-sensors is suspended.
module.js:182 MMM-CustomTable is suspended.
module.js:182 MMM-NextEvent is suspended.
module.js:182 MMM-Bluelinky is suspended.
module.js:182 MMM-WeeklySchedule is suspended.
module.js:182 MMM-Canvas is suspended.
module.js:182 MMM-CalendarExt3Agenda is suspended.
module.js:182 MMM-SimpleText is suspended.
5module.js:182 MMM-AddressBook is suspended.
module.js:182 MMM-SimpleText is suspended.
4module.js:182 MMM-AddressBook is suspended.
module.js:182 MMM-SimpleText is suspended.
3module.js:182 MMM-AddressBook is suspended.
module.js:189 alert is resumed.
module.js:189 MMM-Pages is resumed.
module.js:189 MMM-Keypress is resumed.
module.js:189 MMM-AutoDimmer is resumed.
module.js:182 MMM-BackgroundSlideshow is suspended.
One other note - when I change pictures (mouse scrollwheel, picked up my MMM-Keypress and sent as a notification to MMM-BackgroundSlideshow), I see this error:
MMM-BackgroundSlideshow.js:666 Uncaught TypeError: Cannot set properties of undefined (setting 'displayedName')
at Class.updateImageInfo (MMM-BackgroundSlideshow.js:666:38)
at Image.<anonymous> (MMM-BackgroundSlideshow.js:553:40)
at handleBinaryFile (exif.js:379:26)
at getImageData (exif.js:386:17)
at EXIF.getData (exif.js:983:13)
at image.onload (MMM-BackgroundSlideshow.js:531:12)
updateImageInfo @ MMM-BackgroundSlideshow.js:666
(anonymous) @ MMM-BackgroundSlideshow.js:553
handleBinaryFile @ exif.js:379
getImageData @ exif.js:386
EXIF.getData @ exif.js:983
image.onload @ MMM-BackgroundSlideshow.js:531
Displaying paintings is one of, if not the most important aspects of this for me so I’d really like to figure this out. Alas, I seem to be an idiot so…
Thanks in advance!
Thank you! I think that fixed it.
nvm was not found but n was – it gave me the option to install 20.8.0 or 20.9.0 so I picked the latter and got a whole lot of “cannot remove” errors. That’s the version I have currently.
So should I use the upgrade script or have I mucked it up too much for that?
My Mirror was down for a while and when I booted it up again, I had some updates to do. These included MMM-EarthquakeAlerts and MMM-BackgroundSlideshow.
I did a “git pull” and “npm install” for MMM-BackgroundSlideshow and it seemed fine. I did the same for MMM-Traffic and again, it seemed fine. Then I did it for MMM-EarthquakeAlerts and got a bunch of messages after the “npm install” saying “EBADENGINE”:
npm install
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@eslint/config-array@0.23.2',
npm WARN EBADENGINE required: { node: '^20.19.0 || ^22.13.0 || >=24' },
npm WARN EBADENGINE current: { node: 'v20.9.0', npm: '10.1.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@eslint/config-helpers@0.5.2',
npm WARN EBADENGINE required: { node: '^20.19.0 || ^22.13.0 || >=24' },
npm WARN EBADENGINE current: { node: 'v20.9.0', npm: '10.1.0' }
npm WARN EBADENGINE }
and so on. There are a total of 11 sets, all for “@eslint/something” except the last which just says "espree@11.1.1’ for the package.
I think that I need to update node.js to at least version 20.19 but I’m not sure how to do that. I honestly have no idea how I installed it in the first place except that it was probably via Sam’s excellent scripts?
If anyone has any suggestions on how to fix this, I’d really appreciate it. I found that I’ve really come to rely on it.