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

    103
    2 Votes
    103 Posts
    93k Views
    mumblebajM
    @ufransa Can you check if there are any errors? Check the Console Tab in the Developers Window and check in the pm2 logs if you using pm2 or the terminal if you starting MM with npm start
  • MMM-Forum

    1
    2 Votes
    1 Posts
    605 Views
    KristjanESPERANTOK
    Hello Community! I’m pleased to announce my new module, MMM-Forum, which brings unread topics, notifications and messages from this forum directly to your mirror. This module is designed to keep you up to date with what’s going on in the forum. It should also work for other NodeBB forums, but hasn’t been tested yet. Feedback would be nice. Here’s a (slightly doctored) screenshot of the module in action: [image: screenshot.png] You can find the repository and installation instructions here: https://github.com/KristjanESPERANTO/MMM-Forum. Your feedback is invaluable, so please share your thoughts, suggestions or any problems you encounter. I’m not that talented at web design, so please be gentle and give me some pointers, or even better a PR 😁
  • MMM-OpenWeatherMapForecast stuck on Loading....

    63
    0 Votes
    63 Posts
    56k Views
    R
    Just changed OS to Bookworm and reinstalled MM, stuck with weather modules loading… For me, @postb8822 's 29th April 2024 suggestion worked just fine, thank you :)
  • ] MMM-Sensibo: Display Sensibo Thermostats on Your MagicMirror

    2
    2 Votes
    2 Posts
    565 Views
    KristjanESPERANTOK
    @mmmallday Nice! Don’t forget to add it to the module list: https://github.com/MagicMirrorOrg/MagicMirror/wiki/3rd-party-modules 🙂
  • MMM-ShellyStatusTable

    1
    2 Votes
    1 Posts
    786 Views
    C
    Hello, finally I finished my first MM-module. I was struggling with the existing shelly modules so I decided to create a new one which uses only the cloud-api in order to be independent from the device itself. MMM-ShellyStatusTable The MMM-ShellyStatusTable module displays the switch status and power consumption of multiple Shelly devices in a table on the MagicMirror², including a total consumption sum. It regularly updates the data via the Shelly Cloud API Gen 1 and Gen 2+. So it should be independed from the devices in your smart home. It is currently hard to say if every device is considered correctly. I have the following devices and it works: Shelly Plug / PlugS Shelly Plus Plug S Shelly Plus 1 PM Currently no translation is available. It will follow in the next days. But it is not hard to fix by your own, I hope. I’m not really a module developer but ChatGPT finally fixed it :-) Please try and give me a feedback if you discover some problems. Maybe I can help, but I’m no sure at all :laugh:
  • MMM-NOAAAlerts

    3
    2 Votes
    3 Posts
    1k Views
    KristjanESPERANTOK
    @mattkab Please add it to the module list :-)
  • Rolling 30 day calendar

    2
    0 Votes
    2 Posts
    514 Views
    S
    @siujd2001 css, he gives names in the doc i think he has week view not day view
  • MMM-CalendarExt3 - wrong icon shown in legend

    1
    0 Votes
    1 Posts
    456 Views
    L
    Hi @all I have an issue with the icons/symbols, that are shown in the legend. Sometimes the legend shows an icon of the event (eventTransformer) instead of the default-calendar-icon. I am using iconify icons. For a better understanding please have a look at the screenshot: e.g. the yellow calendar. The default icon should be a brick-head one. You can find it e.g. on Monday at “LAC Training”. The Legend instead shows the bread icon. I am using the bread-icon via eventTransformer only for events that calls “Brotbüchse”. Why the legend shows this icon instead of the default one? [image: CalendarExt3.jpeg] Here the main code of the calendar module: { module: "calendar", header: "TErmINe", //position: "top_left", config: { defaultSymbolClassName: '', useIconify: true, broadcastPastEvents: true, calendars: [ { name: "Ludwig", color: "#CD2626", fetchInterval: 5 * 60 * 1000, symbol: "game-icons:trumpet", url: "webcal:" }, { name: "Albrecht", color: "#EEEE00", fetchInterval: 5 * 60 * 1000, symbol: "ph:lego-smiley-light", url: "webcal:" }, { name: "Samuel", color: "#4876FF", symbol: "healthicons:running", fetchInterval: 5 * 60 * 1000, url: "webcal:" }, { name: "Abfall", color: "#919191", symbol: "solar:trash-bin-minimalistic-outline", fetchInterval: 5 * 60 * 1000, url: "webcal://localhost:8080/" }, { name: "Franziska", symbol: "fluent-emoji-high-contrast:unicorn", /*color: "#800080",*/ color: "#E066FF", fetchInterval: 5 * 60 * 1000, url: "webcal:" }, { name: "Daniel", color: '#008000', symbol: "game-icons:full-motorcycle-helmet", fetchInterval: 5 * 60 * 1000, url: "webcal:" }, { name: "Familie", color: "#FF8C00", symbol: "material-symbols:family-restroom", fetchinterval: 5 * 60 * 1000, url: "webcal:" }, { name: "Jahrestage", color: "#622C00", symbol: "iconoir:birthday-cake", fetchInterval: 5 * 60 * 1000, url: "webcal:" } ] } }, Here you can find the config of the CalendarExt3 module: { module: "MMM-CalendarExt3", position: "upper_third", header: "14-Tage Vorschau", title: "14 Tage Übersicht", config: { refreshInterval: 5 * 60 * 1000, useIconify: true, mode: "week", displayLegend: true, displayEndTime: false, weekIndex: 0, weeksInView: 2, instanceId: "basicCalendar", locale: 'de-DE', useMarquee: true, maxEventLines: 7, fontSize: '17px', eventHeight: '40px', firstDayOfWeek: 1, useWeather: false, showMore: true, skipDuplicated: false, calendarSet: ['Ludwig', 'Samuel', 'Albrecht', 'Daniel','Franziska', 'Familie', 'Abfall', 'Jahrestage'], eventTransformer: (ev) => { if (ev.title.search('Saxophon') > -1) ev.symbol = ["game-icons:saxophone"] if (ev.title.search('Brotbüchse') > -1) ev.symbol = ["ph:bread"] if (ev.title.search('Sport Vorschule') > -1) ev.symbol = ["solar:bottle-outline"] if (ev.title.search('Jugendfeuerwehr') > -1) ev.symbol = ["ph:siren-light"] if (ev.title.search('Gitarre') > -1) ev.symbol = ["ph:guitar-light"] if (ev.title.search('Geburtstag') > -1) ev.symbol = ["simple-line-icons:present"] if (ev.title.search('GTA Fußball') > -1) ev.symbol = ["game-icons:soccer-ball"] if (ev.title.search('GTA Handball') > -1) ev.symbol = ["mdi:handball"] if (ev.title.search('Treffen') > -1) ev.symbol = ["tabler:pacman"] if (ev.title.search('FT:') > -1) ev.symbol = ["ion:calendar-outline"] return ev } } }, Can you help to find the the root cause of the problem?
  • 0 Votes
    3 Posts
    851 Views
    majsoftM
    yes i know that but i was hoping someone has dealt with a similar problem with this module and would know some advice.
  • Eunanibus / MMM-Globe no City names

    4
    0 Votes
    4 Posts
    530 Views
    S
    @Micha3110 yes, others have reported the same problem. however there has been no fix to date
  • MMM-CalendarExtMinimonth/MMM-CalendarExt2

    2
    0 Votes
    2 Posts
    356 Views
    M
    @veny I’m not supporting CX2* anymore, You may need to use CX3Agenda. https://github.com/MMRIZE/MMM-CalendarExt3Agenda [image: image]
  • MMM-MealieMenu: Display weekly meal plans from Mealie

    10
    2 Votes
    10 Posts
    3k Views
    zanixZ
    Version 1.7.0 Features Add support for Mealie v2 (Households) Bug Fixes Error log output
  • Open weather Api 3.0

    16
    0 Votes
    16 Posts
    10k Views
    A
    @sdetweil You’re welcome! I saw afterwards that there is another thread with similar info but this is the one the search engine led me to. After a few days of use I can see on the OpenWeatherMap.org website Billing section that I am running somewhere around 600 API calls per day. This is with four weather modules in place (for four different locations). So about 150 calls per day per module. The default updateInterval value is 10 minutes which would be 144 per day in theory. I’m going to bump my non-local ones to a 30 minute setting (careful to specify milliseconds i.e. 1,800,000 but without commas of course).
  • MMM-WeatherBackground

    54
    4 Votes
    54 Posts
    38k Views
    B
    Update for 20 October 2024: Thanks to the hard work of Kevin Sivic, the MMM-WeatherBackground module can function again. Unfortunately, the Unsplash service closed down their API to free use. You will have to log in to their website at www.unsplash.com and join their developer program. Once you have an Access Key, you can use that key to make the module function.
  • MMM-AuroraWatchUK

    1
    1 Votes
    1 Posts
    341 Views
    A
    Description: Show alerts on your mirror when there’s a chance of seeing aurora over the UK, using data from https://aurorawatch.lancs.ac.uk/ - updates every 5 mins to show the current status. Works well as a top_bar banner, that only appears when the criteria you set are met (e.g only show red alerts, at nighttime, when cloud cover is less than 20%). OpenWeather API key required for the daylight and cloudcover features. Screenshots: [image: 11112fa8-2f02-43c5-b0c7-89567d646a07-image.png] Download: [ card:AndyHazz/MMM-AuroraWatchUK] https://github.com/AndyHazz/MMM-AuroraWatchUK
  • Duplicate the Standardcalendar / Standartkalender duplizieren

    7
    0 Votes
    7 Posts
    814 Views
    M
    @sdetweil I did that too (for days), then I get the error message: “Error in the “calendar” module. Check the login files for further details” for one calendar I restarted the Raspberry Pi a few times and now it seems to be working. I don’t know where the error was. Thank you for your time and tips. Greetings Michael
  • MMM-BoschSmartHome

    29
    5 Votes
    29 Posts
    14k Views
    X
    Hi, just wanted to leave you my css, which costs me a bit of time. I wanted to have a clean overview, just see the temperatures in my house. Because I have 9 thermostats, a list with all the colors was just to much for me. This css gave me a 3 column design, just with the room name and the current temperature: /** * MMM-BoschSmartHome */ .MMM-BoschSmartHome .bsh-wrapper { background-color: rgba(0,0,0,0.00); color: #fff; font-size: 10px; display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 10px; line-height: normal; } .MMM-BoschSmartHome .bsh-wrapper br { display: none; } .MMM-BoschSmartHome .bsh-wrapper, .MMM-BoschSmartHome .bsh-tile { margin: 0; padding: 0; } .MMM-BoschSmartHome .bsh-room-icon { margin-right: 8px; } .MMM-BoschSmartHome .bsh-tiles { font-size: 10px; background-color: rgba(0,0,0,0.00); } .MMM-BoschSmartHome .bsh-badge.climate-control { visibility: hidden; } .MMM-BoschSmartHome .bsh-tile { min-width: 0; /* Prevent tiles from expanding beyond their column */ width: 100%; background-color: rgba(0,0,0,0.00); color: white; } .MMM-BoschSmartHome .bsh-room-title { font-size: 10px; } .MMM-BoschSmartHome .bsh-tile.tile-row { visibility: hidden; } .MMM-BoschSmartHome .bsh-tile i { visibility: hidden; } .MMM-BoschSmartHome .bsh-tile.temperature-level span.setpoint-temperature { font-size: 10px; } .MMM-BoschSmartHome .bsh-tile.temperature-level div:first-child { visibility: hidden; position: relative; } .MMM-BoschSmartHome .bsh-tile.temperature-level span.room-temperature { visibility: visible; position: absolute; left: 0; /* Adjust this to position the temperature correctly */ min-width: 0; /* Prevent tiles from expanding beyond their column */ width: 100%; font-size: 1.8em; font-weight: bold; display: inline-block; } I’m using this config: { module: "MMM-BoschSmartHome", position: "top_left", config: { host: "", // Bosch Smart Home Bridge's local IP Address name: "MMM-BoschSmartHome", // Display name for App identifier: "MMM-BoschSmartHome", // Unique Identifier for app password: "", // Password for Bosch Smart Home Bridge refreshIntervalInSeconds: 60, // Default: 60 width: "200px", displayRoomIcons: true, // Default: false hideComponents: { "Küche": ["dishwasher"] }, // See example below. Default: {} hideEmptyRooms: false, // Hide rooms, if they have no information to display. Default: false colorizeRoomWithAirQuality: true, // Colorizes room tiles in red/orange/green depending on combined air quality. Only works with Twinguard roomOrder: ["Wohnzimmer", "Küche", "Bad EG", "Flur EG", "Schlafzimmer","Kinderzimmer", "Bad OG", "Flur OG / Büro", "HWR"], // Manually set the room order by a list of room names, e.g. ["Livingroom", "Bedroom", "Kitchen"] airquality: { purity: "none", // one of [tile, bar, donut, none] humidity: "none", // one of [tile, bar, donut, none] temperature: "none", // one of [tile, bar, donut, none] preferredTemperatureProvider: "Twinguard", // Twinguard or ClimateControl preferredHumidityProvider: "Twinguard" // Twinguard or ClimateControl }, temperatureLevel: { displayCurrentTemperature: true, // Default: true displayTargetTemperature: false, // Default: true forceRowTile: false // Show tile as row, even if there is no target temperature. Default: true }, thermostats: { display: false, // Default: true displayName: false // Default: false }, dishwasher: { display: false, // Default: true displayName: false // Default: false } } }, Thanks @ the author of this module. Before I forget something … If you have BSHC-2 and not BSHC you just have to press the button for pairing at the BSHC.2, not hold the button, like in BSHC. This simple info costs me a week.
  • Location / title in default module weather (openweather)

    3
    0 Votes
    3 Posts
    836 Views
    R
    @sdetweil Hello thanks for the tip. I hadn’t actually tried this combination and now it works: … header: ‘This is where my text comes in’, … appendLocationNameToHeader: false, … Thank you!
  • Picture in BG on a cell related to someone'S birthday

    8
    0 Votes
    8 Posts
    689 Views
    S
    @MMRIZE @Chuck_morisse I opened issue 3552 https://github.com/MagicMirrorOrg/MagicMirror/issues/3552 to document the need for better checking in config:check (as we are switching linter versions anyhow)
  • [MMM-ApexCharts] ApexCharts.js for your mirror.

    7
    4 Votes
    7 Posts
    3k Views
    R
    @sharmstr said in [MMM-ApexCharts] ApexCharts.js for your mirror.: There are several working examples in the wiki https://github.com/sharmstr/MMM-ApexCharts/wiki/JSON Hi - thankyou very much - and apologies for somehow not finding your great documentation! I’ve been able to get sample charts working now. Just some notes on where I’ve got to with my mirror - I’ve been trying MMM-ApexCharts out using a mini power monitor called an IotaWatt as a datasource. It sits on my home network and collects power readings from my mains connection using a current transformer. You can then query this data back and possibly use it to draw graphs. Queries are just done with an http request and look like: http://MyIotaWatt.local/query?select=[time.local,InstPower_W.wh.d2]&begin=s-24h&end=s&group=1h&format=json&header=no returning (in this case) json with readings for total power usage (kWatt hours) for each of the previous 24 hours. Responses look like (e.g.) 0 0 "2024-09-21T14:05:00" 1 0.76 1 0 "2024-09-21T13:05:00" 1 0.75 2 0 "2024-09-21T12:05:00" 1 0.73 etc so this has worked well with the paired chartJsonFormat config. Things I found useful so far: if I put the http://iotawatt.local/query?… in the chartJsonUrl config then the log showed that the call failed with a CORS error. I’ve got it to return data if I add the local CORS server prefix though i.e. http://localhost:8080/cors?url=http://MyIotaWatt.local/query?... Times returned in the response match NZ local time, but the labels on my chart’s x-axis originally displayed times 12 hours earlier. I’ve included a datetimeUTC entry in my xaxis.labels config to leave it in local time xaxis: { type: "datetime", tickPlacement: "off", labels: { datetimeUTC: false, format: "HH:mm", } }, @sharmstr I’ve also been trying out showing more than one chart on the mirror, following your sample config. Is there a way to show two charts when both make their own call to a datasource (i.e. with separate chartJsonUrls?) This would be useful in my case to show a chart for Detailed power usage (over last 30 mins) and a separate chart for Overview (usage in last 24 hours). I’ve configured these charts to work individually, but when I add both to my config at the same time (with different chartIDs) the 2nd chart doesn’t show on the mirror. The log shows json responses to both calls, but also an error Uncaught (in promise) TypeError: Cannot read properties of null (reading '1') following the 2nd response. Is there a neat way to allow both charts, or have I just messed it up? Thanks very much