Fixed. IP can now be defined in the config.js:
InverterIP: "<yourInverterIP>",
Fixed. IP can now be defined in the config.js:
InverterIP: "<yourInverterIP>",
@roysim11 See the css in the calendar module. If this is Ext3 you’ll find this:
.CX3 .event.passed {
filter: brightness(0.8) grayscale(0.5);
opacity:0.5;
}
Then for example to this:
.CX3 .event.passed {
/* filter: brightness(0.8) grayscale(0.5);
opacity:0.5; */
}
Cheers,
Chris
See also my fork: MMM-GoogleMapsTraffic.
Runs fine without any issue since months.
@chrisfr1976 Hi,
maybe interesting also for others: There is a canvas opacity parameter set now. So you can can keep all your stuff visible in the background while the fireworks is dancing on your mirror. I didn’t had this feature in mind, but I got this request on GitHub. I like that, too ;-)
A picture from my playground to explain what I mean:

@bobbylx
Hello,
for the radius update the css and add a border-radius in .CX3 .cell:
.CX3 .cell {
border: 1px solid var(--celllinecolor);
background-color: var(--cellbgcolor);
height: calc(
var(--cellheaderheight) + var(--cellfooterheight) +
calc(var(--eventheight) * var(--maxeventlines))
);
position: relative;
border-radius: 25px; /*adjust as you like it*/
}
But it might look strange if it is too big. This radius is valid for every calendar cell of course. I use it, too with 3px only.
Result with 25px:

For the other issue I’m also searching for a solution. You can see it my picture :)
I had this idea:
CX3 .week {
width: 100%;
padding: 0 5px;
margin-top: 5px; /*this helps but is stupid in the next week*/
height: calc(
var(--cellheaderheight) + var(--cellfooterheight) +
calc(var(--eventheight) * var(--maxeventlines))
);
position: relative;
}
@plainbroke
Then use this:
/usr/local/bin/pm2
@Eagleyes27
The message from google maps can be ignored currently. There is a plan to change the marker but currently the old AND EASY way is still working. I have a new version already ready but to get the new marker running is really complicated. So I didn’t update the module to this until now.
I care about the module now. Is works good on my side. If you discover any general issues I can fix it. But this is important: do you run my fork?: https://github.com/ChrisF1976/MMM-GoogleMapsTraffic
Hi,
I’ve just released an update to solve several requests and problems.
https://github.com/ChrisF1976/MMM-Fireworks
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 });
}
});
I’ve found it!
.CX3 .weekGrid {
display: grid;
width: 100%;
grid-template-columns: repeat(7, [cell-start] 1fr [cell-end]);
grid-auto-columns: 0fr;
margin-top: 5px; /* ADD THIS*/
}

@bugphunk The sliding option is a really nice idea. I’ve just implemented it to the code. If you discover any bugs or new improvement ideas please let me know :)
Hello,
I’m using EVCC for load PV surplus. Currently I’m using parts of the EVCC dashboard in an I-Frame. This is not as nice as it could be.
For all who don’t know what it is: EVCC.
Has anyone tried to create something for the MM project?
BR Chris.
@sdetweil Hey, no problem generally but I‘m out until Thursday. I‘ll send it then.
@sdetweil thats why I made the module. The Pi is completely headless. So I’m in the kitchen with my laptop and enjoy this autorefresh now. Before that I’ve used a Script on my Smartphone. Also manual and annoying :-)
And sure, also the xdotool command is just pressing “ctrl+r” for me.
@0m4r There is a problem with the token. I think, I’m stupid, but:
You write for the config token: [YOUR_TOKEN]
So I’ve tried token:[1234567890], With this I get an error in the config.js and the mirror does not start up.
Then I’ve tried token:1234567890,. Same issue.
Then I’ve tried token:"1234567890", Then the config.js is okay and electron starts. But in this case I get an error message:
[ERROR] MMM-euro2024 fetchTeams 2018 {"message":"Your API token is invalid.","errorCode":400}
…of course I received a real API-key from Daniel. Copy+paste, so the key real in my config is okay.
How should I enter the API-Key? :thinking_face:
Hi,
I’m currently working on a new module. I had a lot of updates to do in my code to adjust the layout. After saving changes, I had to manually refresh the MagicMirror application every time. This process is tedious, especially if you’re frequently experimenting with configurations.
That’s where this script comes in. By monitoring your config.js file (or a module.js file) for changes, it automates the refresh process. Now, every time I save my config.js, the Mirror refreshes itself instantly.
It’s seamless, efficient, and saves you from the hassle of restarting the application manually.
Perfect for developers and tinkerers alike, this script ensures your MagicMirror reflects your updates in real-time, letting you focus on creativity instead of logistics.
https://github.com/ChrisF1976/MM-Watcher
Give it a try…
Regards,
Chris.