A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
  • MMM-Spotify problem with the ./Token-js and the token

    a day ago
    0 Votes
    7 Posts
    42 Views
    @sdetweil we did these steps
  • Made a birthday module

    Jan 19, 2025, 11:43 AM
    1
    7 Votes
    37 Posts
    2k Views
    @xIExodusIx Hi! First, the green debug code was displayed because I forgot to set it to “false” by default. You can change this in config.js, but I’ll update the default setting so it only appears when the user wants it (ie when setting “true” in config.js). Second, the module still has some quirks in its startup behavior—it requires a full cycle before everything runs smoothly. I’m working on it, but to be honest, it’s a low-priority fix since it’s a fringe case. Typically, the module will be running continuously, so birthday initialization should trigger when the mirror is already active. That’s probably why you’re not seeing the confetti right away. Third, regarding the different versions of Fireworks—absolutely! The reason there are multiple versions is simply that I left them in from my experiments. I didn’t originally plan to include that functionality, but once the core features are fully ironed out, I’d be happy to refine and expand on it. As for positioning, the module is currently designed to use the entire screen. I might look into allowing more customization in the future, but for now, it just places the message in the center and then launches confetti and fireworks. When you say it “ignores the page,” are you referring to the page cycling? I’ve also attached my test config.js. It has three pages, and after cycling through them to align the timings, the expected behavior should be: Page 1 – Normal modules Page 2 – Birthday celebration with dimming Page 3 – Birthday celebration without dimming Test config.js (which needs MMM-page-indicator). I’ve let this run for about an hour now, and everything (apart from weather module because its not part of the test) works as intended: /* MagicMirror² Config for testing MMM-Birthday-Paged with immersiveMode */ let config = { address: "localhost", port: 8080, basePath: "/", ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"], useHttps: false, httpsPrivateKey: "", httpsCertificate: "", language: "en", locale: "en-US", logLevel: ["INFO", "LOG", "WARN", "ERROR", "DEBUG"], timeFormat: 24, units: "metric", modules: [ { module: "alert", }, { module: "clock", position: "top_left", classes: "page1 page3" // Show on page 1 and 3 }, { module: "calendar", header: "Holidays", position: "top_left", classes: "page1 page3", // Show on page 1 and 3 config: { calendars: [ { symbol: "calendar-check", url: "webcal://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics" } ] } }, { module: "weather", position: "top_right", classes: "page1 page3", // Show on page 1 and 3 config: { weatherProvider: "yr", type: "current", location: "Stockholm", locationID: "2673730", // Stockholm's ID roundTemp: true } }, { module: "compliments", position: "lower_third", classes: "page1 page3", // Show on page 1 and 3 }, // MMM-Birthday-Paged with immersiveMode = true (dims modules) { module: "MMM-Birthday-Paged", position: "middle_center", classes: "page2", // Show on page 2 config: { birthdays: [ // Today's date (March 16, 2025) with name John { name: "John", date: "03-16" } ], fireworkDuration: "infinite", confettiDuration: "infinite", immersiveMode: true, // Dims other modules debug: true, startupDelay: 500 // Shorter startup delay for testing } }, // MMM-Birthday-Paged with immersiveMode = false (original module behavior) { module: "MMM-Birthday-Paged", position: "middle_center", classes: "page3", // Show on page 3 config: { birthdays: [ // Today's date (March 16, 2025) with name John { name: "John", date: "03-16" } ], fireworkDuration: "infinite", confettiDuration: "infinite", immersiveMode: false, // Does NOT dim other modules debug: true, startupDelay: 500 // Shorter startup delay for testing } }, // Page indicator to see which page is showing { module: "MMM-page-indicator", position: "bottom_bar", config: { pages: 3 } }, // MMM-pages for page switching { module: "MMM-pages", config: { modules: [ ["page1"], // Page 1 - Normal modules ["page2"], // Page 2 - Birthday celebration with dimming ["page3"] // Page 3 - Birthday celebration without dimming ], fixed: ["alert", "MMM-page-indicator"], rotationTime: 15000, // 15 seconds between page changes rotationDelay: 15000, animationTime: 1000 } } ] }; /*************** DO NOT EDIT THE LINE BELOW ***************/ if (typeof module !== "undefined") {module.exports = config;}
  • MMM-trakt-ondeck

    15 days ago
    1 Votes
    2 Posts
    99 Views
    Trakt is a fantastic tool for keeping track of your favorite shows, progress, and upcoming episodes. If you’re ever looking to promote content like TV shows or movies to the right audience, digital marketing can play a vital role. At ixoric, a trusted [digital marketing company, we specialize in creating strategies that help businesses connect with their audience effectively—whether it’s through social media, targeted ads, or content marketing. Let us know if you’d like to learn more about how we can help your brand shine!
  • 0 Votes
    20 Posts
    773 Views
    @sdetweil MMM-BackgroundSlideshow seems to do exactly what I want, but I think your handling of formatting the images is better.
  • Let it snow now Magic Mirror

    Dec 11, 2024, 1:39 PM
    3 Votes
    23 Posts
    1k Views
    @sdetweil Yes, I understand, but it’s not the cost itself that’s the issue (although it would have been a problem if there was a cost). The concern is having to provide my credit card details. It’s not that I distrust OpenWeather, but I prefer not to share them unnecessarily. You never know, for example, if they might get hacked.
  • 5 Votes
    7 Posts
    1k Views
    @KristjanESPERANTO Now that’s a whole new approach. Thanks, it works!
  • MMM-Fireworks

    Dec 29, 2024, 9:44 PM
    3 Votes
    15 Posts
    894 Views
    Hi, I’ve just released an update to solve several requests and problems. https://github.com/ChrisF1976/MMM-Fireworks Multiple Scheduled Events: The module now accepts an array of scheduled events (each with its own start time and text message). At each event time, the fireworks start with the corresponding overlay text. Two separate notifications have been added: NotificationStart (e.g. “FireFireFire”) starts the fireworks immediately using either the notification’s payload text or a default (textNotification). NotificationStop (e.g. “StopFire”) stops the fireworks immediately if they are running. When a notification is received, it overrides the scheduled events temporarily without affecting future scheduled shows. See also updated config! You can test the notifications with this simple module. I used it during development. I created a small start and stop button you can use. If you want to test the notification sender module you need to change the “fullscreen_above” to any other region of the mirror. Otherwise you cannot click on the buttons because they’re “behind” the MMM-Fireworks module… Config: { module: "MMM-NotificationSender", position: "top_left", config: { startNotification: "FireFireFire", stopNotification: "StopFire", startText: "Test me!", //leave blank to use text from MMM-Fireworks stopText: "Stop Fire", //nothing happens currently - maybe not needed } }, Module: Module.register("MMM-NotificationSender", { // Default configuration options. These can be overwritten in config.js. defaults: { // Notification names to send. Other modules can listen to these names. startNotification: "START_NOTIFICATION", stopNotification: "STOP_NOTIFICATION", // Text payloads for the notifications. startText: "This is a start notification.", stopText: "This is a stop notification." }, // Called when the module is started start: function() { Log.info("Starting module: " + this.name); }, // Override the getDom method to create your custom UI. getDom: function() { // Create a wrapper element to contain the buttons. var wrapper = document.createElement("div"); wrapper.style.textAlign = "center"; // Create the Start button var startBtn = document.createElement("button"); startBtn.innerHTML = "Start"; startBtn.style.marginRight = "10px"; startBtn.addEventListener("click", this.sendStartNotification.bind(this)); wrapper.appendChild(startBtn); // Create the Stop button var stopBtn = document.createElement("button"); stopBtn.innerHTML = "Stop"; stopBtn.addEventListener("click", this.sendStopNotification.bind(this)); wrapper.appendChild(stopBtn); return wrapper; }, // Function to send the start notification sendStartNotification: function() { // Log to console and MagicMirror logs to check the button click event. console.log("Start button pressed. Sending start notification..."); Log.info( "Sending start notification: " + this.config.startNotification + " with payload: " + JSON.stringify({ text: this.config.startText }) ); // Send the notification with the configured name and payload. this.sendNotification(this.config.startNotification, { text: this.config.startText }); }, // Function to send the stop notification sendStopNotification: function() { // Log to console and MagicMirror logs to check the button click event. console.log("Stop button pressed. Sending stop notification..."); Log.info( "Sending stop notification: " + this.config.stopNotification + " with payload: " + JSON.stringify({ text: this.config.stopText }) ); // Send the notification with the configured name and payload. this.sendNotification(this.config.stopNotification, { text: this.config.stopText }); } });
  • Bird of the day

    Dec 3, 2024, 3:43 PM
    1
    4 Votes
    5 Posts
    622 Views
    @cgillinger We are really enjoying the Bird of the Day on the MagicMirror! Not sure if this was just a problem for me, but we were finding the same birds were being displayed and they were almost all ducks. I think the nuthatch API was always using the “Default value : 1” for page and “Default value : 25” for pageSize, so there were only 25 possible birds. With the pageSize of 25 I think there are a maximum of 15 pages in their database. I fudged my .js file like this, but there is probably a better was to do this, I’m not a developer. Something to consider for future updates getBird: function () { const randPage = Math.floor(Math.random() * 15) + 1; const endpoint = this.config.endpoint + "&page=" + randPage; fetch(endpoint, { headers: { "api-key": this.config.apiKey }, })
  • 0 Votes
    2 Posts
    796 Views
    I know this is an old thread, but I just came across this today. I found you can fix this by putting limitComicHeight: false, in your config This is what mine looks like and it works great. { disabled: false, module: 'MMM-CalvinAndHobbes', position: 'middle_center', classes: "calvin", config: { invertColors: false, grayScale: false, updateInterval: 1000 * 60 * 60 * 12, limitComicHeight: false, } } I also had to adjust my css because of the zoom, but you may not need to. #cahcomiccontent { zoom: 80%; }
  • 0 Votes
    1 Posts
    118 Views
    I created a very simple and lightweight background wallpaper module. It also exposes 3 URLs to control your wallpaper using your devices like phone and smart watch gestures. Here is the link to my github repository https://github.com/sumitnsit/MMM-Wallpaper [image: 1735054247091-example-resized.jpg] Control Slideshow using API Remote URL Description http://{IP Address}:8080/next Loads next wallpaper and pauses the slideshow for 30 seconds http://{IP Address}:8080/last Loads previous wallpaper and pauses the slideshow for 30 seconds http://{IP Address}:8080/resume Resume the slideshow if you want it to resume before 30 seconds pause. Control slide show using iPhone’s Shortcuts You can create shortcuts on iPhone’s Shortcuts app to control the slideshow using your iPhone Create a new shortcut Add Get contents of from actions and add URL for next/last/resume. Be a magician in font of MagicMirror and control wallpaper with your hand gestures. Go to Settings > Accessibliity > AssistiveTouch > Hand Gestures Assign gestures to shortcuts created ealiear. Tap > Last DoubleTap > Next Clench > Resume [image: 1735054239781-watch.jpeg]
  • New module: Weather effects

    Dec 28, 2024, 11:52 AM
    3
    4 Votes
    27 Posts
    1k Views
    @uros76 awesome… also no idea why it wouldn’t work before
  • 1 Votes
    1 Posts
    89 Views
    Hi guys, I’ve created a new module. My motivation was to see what’s up around me in my city. I’ve missed so many events in my life, so I was searching for an event reminder. But I didn’t find anything that fits to my belongings. So I decided to create something on my own: MMM-EventSearch The MMM-EventSearch module for MagicMirror fetches and displays event information using the SerpAPI to search for events based on a given query, location, and other parameters. It uses in this case google (see SerpApi for other options) and displays the list results from google which everyone has seen already. To find a suitable query go to goolge and try a little for your city or surrounding city/provice/state. The results are currently limited to the the results that google initally shows. So the “mode results” button does not work or is not accessible with this API! The module dynamically generates a table with event details, displaying: Date/Time: Event’s date and time. Title: The title of the event. Image: A thumbnail image of the event, if available, which links to the event’s page. Event Fetching: Events are refreshed periodically based on the updateInterval. On the free plan from SerpAPI 100 calls are free per month. So be careful. CSS Styling is a little acc. to Google results. [image: MMM-EventSearch.png?raw=true] Have fun! Cheers Chris.
  • 0 Votes
    1 Posts
    67 Views
    I created a very simple and lightweight background wallpaper module. It also exposes 3 URLs to control your wallpaper using your devices like phone and smart watch gestures. Here is the link to my github repository https://github.com/sumitnsit/MMM-Wallpaper
  • MMM-MovieListings

    Mar 13, 2017, 7:16 AM
    1 Votes
    29 Posts
    15k Views
    @sdetweil This is the results junior@MAGIC-MIRROR:~/MagicMirror/modules/MMM-MovieListings $ git pull hint: Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch this message by running one of the following hint: commands sometime before your next pull: hint: hint: git config pull.rebase false # merge (the default strategy) hint: git config pull.rebase true # rebase hint: git config pull.ff only # fast-forward only hint: hint: You can replace “git config” with “git config --global” to set a default hint: preference for all repositories. You can also pass --rebase, --no-rebase, hint: or --ff-only on the command line to override the configured default per hint: invocation. Updating e095eb5…b4f37fc error: Your local changes to the following files would be overwritten by merge: package-lock.json Please commit your changes or stash them before you merge. Aborting
  • MMM-S3Photos

    Nov 5, 2024, 12:58 AM
    1 Votes
    1 Posts
    150 Views
    I created a module to allow you to display (and upload) images from AWS S3. you can read more about the features on the github repo but in short the module has your standard affair when it comes to displaying images along with some scripts to both deploy aws resources and allow you to upload photos to the s3 bucket from the pi. There are a couple quirks i am still working on ironing out but thought i would share. the aws cost for 10gb of photos stored on the free tier should be about 30 cents monthly if you follow the recommended settings, and <4.5GB should stay within the free tier entirely. https://github.com/uphillcheddar/MMM-S3Photos
  • 2 Votes
    8 Posts
    640 Views
  • MMM-MovieListings

    Oct 4, 2024, 4:30 PM
    2
    2 Votes
    28 Posts
    2k Views
    UPDATES V1.1.0 Fixed issue with cast list appending cast members from different movies to the same list. Now only cast members of the displayed movie is displayed. Update and simplify the API calls to reduce the number of calls.
  • MMM-Globe

    Moved May 11, 2017, 7:55 PM
    4 Votes
    118 Posts
    114k Views
    @sdetweil thank you very much!
  • MMM-GooglePhotos

    Jul 20, 2018, 3:15 PM
    2
    1 Votes
    294 Posts
    224k Views
    @1a2a3a fullscreen_below
  • 0 Votes
    3 Posts
    571 Views
    @cjkowatsch sorry for late response. yes plese try a gain there has been a lot of updates.