Read the statement by Michael Teeuw here.
Let it snow now Magic Mirror
-
And this is my second module, again for the entertainment of my daughters. This one just adds a nice snow fall across the screen - for the winter festivities.
I made it on a Linux computer, but realised when testing it on my Raspberry Pi 3B, that the Pi really struggled with it. So it now has two settings: light and “rich” - the latter for more powerful platforms.
This is a part of me trying to learn how to make modules, so any input is welcome.
Next: Im thinking of connecting it to one of the providers from the Weather module, to maybe make it snow when the temperature is freezing, or if the forcast warns of snow.
But for now, just a simple snowfall on your MagicMirror.
-
@cgillinger cool. the weather modules broadcast their info. so you could pick it up from the notification
-
Oh, nice. I was looking at the api-solution for SMHI (being a swede and also, the SMHI api requires no key), but that sounds even better. I’ll definately look into that.
-
@cgillinger Nice! Don’t forget to add it to the module list. And please add a screenshot 🙂❄️
-
@cgillinger weather sends 2 different broadcasts
1 for current weather
if (this.weatherProvider.currentWeather()) { this.sendNotification("CURRENTWEATHER_TYPE", { type: this.weatherProvider.currentWeather().weatherType.replace("-", "_") }); }and 1 for all the weather info
const notificationPayload = { currentWeather: this.config.units === "imperial" ? WeatherUtils.convertWeatherObjectToImperial(this.weatherProvider?.currentWeatherObject?.simpleClone()) ?? null : this.weatherProvider?.currentWeatherObject?.simpleClone() ?? null, forecastArray: this.config.units === "imperial" ? this.weatherProvider?.weatherForecastArray?.map((ar) => WeatherUtils.convertWeatherObjectToImperial(ar.simpleClone())) ?? [] : this.weatherProvider?.weatherForecastArray?.map((ar) => ar.simpleClone()) ?? [], hourlyArray: this.config.units === "imperial" ? this.weatherProvider?.weatherHourlyArray?.map((ar) => WeatherUtils.convertWeatherObjectToImperial(ar.simpleClone())) ?? [] : this.weatherProvider?.weatherHourlyArray?.map((ar) => ar.simpleClone()) ?? [], locationName: this.weatherProvider?.fetchedLocationName, providerName: this.weatherProvider.providerName }; this.sendNotification("WEATHER_UPDATED", notificationPayload); -
@KristjanESPERANTO Added to the module list, and working on a screenshot ( I cleared my MM installtion of modules to test this, so I have to re add them, otherwise its just a black image with snow icons on them…)
-
@cgillinger said in Let it snow now Magic Mirror:
I cleared my MM installtion of modules to test this
just fyi… you can use another config.js
without removing the existing or removing any modulesin the terminal window you are using to start/stop/test mm
export MM_CONFIG_FILE=config/_other_config_name.jsthen npm start will use _other_config_name.js for config
(and in that other config you can point to a different custom.css!)
see https://docs.magicmirror.builders/configuration/introduction.html -
@sdetweil I had no idea this could be done. Thank you!
-
-
Hey, thanks for the module! Really like it.
Just two things that come to my mind:- From other modules I’m used to only do the config in the config.js (only compliments is different, but for a good reason). For your module I have to add it in config.js, but do the module configuration in a separate file. I’d really would appreciate it, if you could move the configuration also to the config.js. Also not sure if it the config would be reverted if I have to update the module or something.
- there are two Flake Counts, one in the “defaults” part and one in the performancePresets, same for size. Not sure which wins in which situation.
Thanks again for the module!
-
@OliWer I’ll fix this, this is one of my first modules, so I’ve done quite a few errors when it comes to following the frame work standard. And I think the flake count is because I sort of panicked when I realised that my Raspberry Pi almost choked on my first iteration, and I speed fixed the performance part. Ill look into it.
-
And think I got it going, after reworking the module yesterday.
-
Just updated and changed my config. Thanks for your fast response and changes!
Good work now and easier for me to play with to find perfect settings for my screen =) -
@sdetweil said in Let it snow now Magic Mirror:
@cgillinger said in Let it snow now Magic Mirror:
I cleared my MM installtion of modules to test this
just fyi… you can use another config.js
without removing the existing or removing any modulesin the terminal window you are using to start/stop/test mm
export MM_CONFIG_FILE=config/_other_config_name.jsthen npm start will use _other_config_name.js for config
(and in that other config you can point to a different custom.css!)
see https://docs.magicmirror.builders/configuration/introduction.htmlThanks for the tip, that’s a great suggestion. Using export MM_CONFIG_FILE=config/_other_config_name.js makes testing easier without removing modules or modifying the main config.js. Plus, being able to point to a different custom.css in that alternate config is really useful. I’ll give it a try!
-
@HNpis you never have to uninstall modules. just add
disabled:true.on a line after the module: line
you can also run multiple MagicMirror instances at once off the same folder and using any of the modules installed, even same module in both instances.(warning some modules write data to their folder)
AND altho i wrote config/
it can be any folder off the MagicMirror folder
we run testing with the tests folder
-
@sdetweil I think I actually managed to implement it—so now snow falls whenever “Current conditions” report any of the various “snow” messages.
I renamed the module and uploaded it as a standalone: “MMM-DynamicSnow”
👉 https://github.com/cgillinger/MMM-DynamicSnow
It should work with all weather providers. I created a separate dictionary for it, but so far, I’ve only had time to test it with Swedish SMHI. Also not easy to test during this mild winter, but I did finally manage to find a place where it snowed up north here in Sweden.
-
And here are the precipitation words used by the different providers:

openMeteo showers, Rain, Snow, Showers, sleet, drizzle, precipitation, hail, rain, Precipitation, snow
overrideWrapper
pirateWeather rain, sleet, snow
smhi showers, Rain, Snow, sleet, Drizzle, precipitation, rain, drizzle, snow
ukMetOffice showers, sleet, hail, rain, snow
ukMetOfficeDataHub showers, sleet, hail, rain, Precipitation, snow
weatherBit rain, sleet, snow
weatherFlow snow
weatherGov showers, Snow, Rain, Showers, Drizzle, precipitation, rain, snow
yr rain, sleet, precipitation, snowI did notice a lot of just plain “precipitation” and one future fix might be combining a broadcast of “precipitation” and negative degrees centigrades, as that would also indicate snow.
Also thinking of adding rain functionality, after testing the module more.
-
I want to run the module but actually i hang on the Problem with Openweather an the API V3.0.
Do you have a Solution for your Module? -
@cgillinger said in Let it snow now Magic Mirror:
Also thinking of adding rain functionality
Hello,
that’s a wonderful idea, to combine the two.
And then add “sunshine”, “clouds” (for overcast).
Great. Thanks, keep it up… -
@det I actually did add rain: https://github.com/cgillinger/MMM-WeatherEffects
Cheers,
C
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login