A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Subcategories

  • Any suggestions or wishes for the forum?

    100 Topics
    698 Posts
    @com1cedric this was started as a conversation, not an issue…
  • 1 Votes
    1 Posts
    527 Views
    Unfortunately the author has decided to no longer provide modules for MagicMirror. Please save what you have, copy the folders. You may need to adjust your update notification module setting to disable notifications you can do nothing about. I do not know how long the modules will continue to work. Very sad turn of events.
  • New MagicMirror start options in version 2.30.0

    Pinned until 7/1/25, 4:02 PM Jan 1, 2025, 3:18 PM
    1 Votes
    2 Posts
    529 Views
    Thanks for posting this thread here. I just signed up a few minutes ago. I want to learn a lot things from here. I hope this community would be a good place to start with.
  • 0 Votes
    1 Posts
    296 Views
    as a reminder, Openweather is terminating their free 2.5 level api . latest reports say starting next week Oct 14 please take action to migrate to the 3.0 api and new apikey. this requires s credit card to be registered in case you go over the daily uncharged call limit, currently 1,000 otherwise your weather modules ( default and others) WILL FAIL
  • Github usage and module continuations

    Pinned Jan 7, 2024, 11:11 AM
    1 Votes
    8 Posts
    715 Views
    This sounds amazing as I found it very much useful and informative to be honest. Also, I have gone through this post which definitely helped me out a lot as a new member I am looking forward for more such discussion
  • help on new spam control idea

    Pinned Sep 1, 2022, 1:01 AM
    0 Votes
    19 Posts
    3k Views
    @RoyCormi already do that.
  • new user setup

    Pinned Apr 8, 2022, 12:22 AM
    1 Votes
    1 Posts
    878 Views
    https://www.raspberrypi.com/news/raspberry-pi-bullseye-update-april-2022/
  • forum. controls to stop more spam

    Pinned Locked Apr 5, 2022, 12:12 PM
    2 Votes
    1 Posts
    986 Views
    in an attempt to limit spammers from registering and posting goo, we have enabled a higher level of reputation required to fill out the ‘About me’ and signature fields in the use profile. edit: and the website and picture content as well no more free advertising sorry. I know this will be trouble for some
  • 1 Votes
    9 Posts
    2k Views
    @abuislam also, please don’t copy the prior post in your replies
  • 1 Votes
    6 Posts
    885 Views
    @sdetweil I’m glad to see that this site response to bullying. Bullying is unacceptable and they need to be accountable for it
  • Introduce yourself!

    Pinned community May 2, 2016, 6:44 PM
    3 Votes
    195 Posts
    290k Views
    Hi Guys, I’m a first time poster, long time lurker and owner of an MM2 system. I’ve been using MM2 for about 5 or so years now, it’s morphed many times over the years to fit my needs. Currently, it runs atop a Pi3 and has time, family shared calendar, weather, dad jokes and displays a carousel of still snapshots from my outdoor cameras. [image: 1739843551024-pxl_20250218_014145745.jpg]
  • 0 Votes
    9 Posts
    39 Views
    @karsten13 I don’t see that at all on bookworm full
  • Bugsounet and MMM-Pir

    Jan 27, 2025, 7:16 PM
    0 Votes
    57 Posts
    2k Views
    @sdetweil yes! :-)
  • Create a clone of MMM-Webview

    23 days ago
    0 Votes
    6 Posts
    247 Views
    @sdetweil Thank a mil for the info I am going to try and update my config as such, and see how to get this going i might reach out again if I am struggling
  • New module installer

    Jan 7, 2025, 10:11 PM
    4
    1 Votes
    51 Posts
    5k Views
    Just added search in the installer
  • MMM-update - Please help beginner and need help

    27 days ago
    0 Votes
    17 Posts
    839 Views
    @Rberry91 did you fix this?
  • Google fit or any health module

    19 days ago
    1 Votes
    2 Posts
    95 Views
    @kmanne none have been updated.
  • MMM-Carousel CSS influence

    24 days ago
    2 Votes
    2 Posts
    146 Views
    @chrisfr1976 for educational purposes, before you go reinstalling a module you THINK has been modified, do git status in the module folder this will tell you if any shipped files have been changed git diff will show you WHAT changed
  • Question about backup script

    28 days ago
    1 Votes
    30 Posts
    1k Views
    @sdetweil Your: git config --local user.name “my name” git config --local user.email “my email” plus git config --local user.password “myverylonggithubtoken” does the trick… The stackoverflow article is confusing to me but your suggestion is there :-) Thanks a lot! Warm regards, Ralf
  • 0 Votes
    4 Posts
    664 Views
    @sdetweil said in Contrasting text on changing background: @mwm341 I want that too. text over photos. haven’t figured out a way yet. I kludged something together today with the MMM-Wallpaper module. It’s not elegant, but it’s been working for me so far. What I’m doing is having the module draw the image onto an off-screen canvas and compute its average brightness using the luminance formula. Based on whether this brightness exceeds a defined threshold (115 has been working for me), the module then updates a global CSS variable with either a light or dark text color. I’m using color: var(--dynamic-text-color); as the variable. Since it’s determining global brightness, it can still “miss” picking a good color for each module. Depending on compute load, I’m thinking an update would be to determine that brightness value for each quadrant of an image then creating a variable for each quadrant and setting the text style in those areas to that color. A downside to this approach is that it won’t work perfectly with different display aspect ratios, but if you’re only ever using a 16:9 display that would be mitigated. Brightness function: // Helper function to compute average brightness of an image. getAverageBrightness: function(image, callback) { var canvas = document.createElement("canvas"); var width = image.naturalWidth; var height = image.naturalHeight; canvas.width = width; canvas.height = height; var context = canvas.getContext("2d"); context.drawImage(image, 0, 0, width, height); try { var imageData = context.getImageData(0, 0, width, height); } catch (error) { console.error("Error accessing image data:", error); callback(255); // Assume bright background if error. return; } var data = imageData.data; var colorSum = 0; var pixels = data.length / 4; for (var i = 0; i < data.length; i += 4) { var r = data[i]; var g = data[i + 1]; var b = data[i + 2]; // Calculate brightness using the luminance formula. var brightness = 0.299 * r + 0.587 * g + 0.114 * b; colorSum += brightness; } var averageBrightness = colorSum / pixels; callback(averageBrightness); }, Updated onImageLoaded function: onImageLoaded: function(imageData, element) { var self = this; return () => { self.resetLoadImageTimer(); element.className = `wallpaper ${self.config.crossfade ? "crossfade-image" : ""}`; element.style.opacity = 1; // Analyze the image brightness and adjust text color accordingly. // This will update both the module's caption and a global CSS variable. self.getAverageBrightness(element, function(brightness) { var threshold = 128; // Adjust this threshold as needed. var textColor = brightness > threshold ? "black" : "white"; self.title.style.color = textColor; // Set a global CSS variable for dynamic text color. document.documentElement.style.setProperty('--dynamic-text-color', textColor); }); self.title.style.display = "none"; setTimeout(() => { var caption = imageData.caption; if (self.config.caption && caption) { self.title.innerHTML = caption; self.title.style.display = "initial"; } if (self.imageElement !== null) { self.content.removeChild(self.imageElement); } self.imageElement = self.nextImageElement; self.nextImageElement = null; }, self.config.crossfade ? 1000 : 0); }; },
  • 0 Votes
    7 Posts
    288 Views
    @slaeyer99 https://github.com/sdetweil/MMM-ImagesPhotos