MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    1. Home
    2. htilburgs
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.
    Offline
    • Profile
    • Following 0
    • Followers 3
    • Topics 25
    • Posts 238
    • Groups 0

    Harm Tilburgs

    @htilburgs

    Started with a MagicMirror in the Covid19 period and now I'm hooked to it.
    Currently I've my second Mirror.

    37
    Reputation
    1.3k
    Profile views
    238
    Posts
    3
    Followers
    0
    Following
    Joined
    Last Online
    Age 58
    Website magicmirror.tilburgs.com
    Location Netherlands

    htilburgs Unfollow Follow

    Best posts made by htilburgs

    • MMM-MyGarbage

      MMM-MyGarbage

      This a module for MagicMirror².
      This displays the schedule for your Garbage pickup. It supports multiple types of garbage bins.
      You can show the schedule using a CSV file (garbage_schedule.csv) of by using an ical URL.

      SCR-20260308-ppuu

      Installation

      Clone this repository in your modules folder, and install dependencies:

      cd ~/MagicMirror/modules 
      git clone https://github.com/htilburgs/MMM-MyGarbage.git
      cd MMM-MyGarbage
      npm install 
      

      Update

      When you need to update this module:

      cd ~/MagicMirror/modules/MMM-MyGarbage
      git pull
      npm install
      

      Configuration

      Go to the MagicMirror/config directory and edit the config.js file.
      Add the module to your modules array in your config.js.

      {
              module: 'MMM-MyGarbage',
              position: 'top_right',
              header: "My Garbage Calendar",
              disabled: false,
              config: {
                      weeksToDisplay: 4,
                      limitTo: 99,
                      dateFormat: "dddd LL",
                      alert: true,
                      alertThreshold: 5, 
                      fade:true,
                      fadePoint: 0.25,
                      dataSource: "csv",                          // csv (schedule_garbage.csv | ical (put URL in icalUrl)
                      icalUrl: "PLACE_HERE_PUBLIC_ICAL_URL",      // only used if dataSource is "ical"
                      debug: false,                               // Only set on true for debugging 
                      binColors: {                                // Define custom Bin Colors and match with the Bin Names
                                  "GreenBin" : "#00A651",
                                  "PaperBin" : "#0059FF",
                                  "GarbageBin" : "#787878",
                                  "PMDBin" : "#FFFF00",
                                  "OtherBin" : "#B87333"
                                  },
                      }
      },
      

      Module configuration

      Here is the documentation of options for the modules configuration:

      Option Description
      weeksToDisplay How many weeks into the future to show collection dates.

      Number
      Default: 2
      limitTo Limit the display to the spcified number of pickups

      Number
      Default: 99
      dateFormat Format to use for the date of events

      Default: dddd D MMMM (e.g. January 18)
      Possible values: See https://momentjs.com/
      alert Show alert, if remaining entries in CSV file fall under threshold

      Default: false
      Possible values: true or false
      alertThreshold (optional) Threshold entries left in CSV file

      Number
      Default: 5
      fade Fade the future events to black. (Gradient).

      Default: true
      <Possible values: true or false
      fadePoint Where to start fade

      Default: 0.25
      Posibble values: Between 0 (top of the list) and 1 (bottom of list)
      dataSource Select the datasource you’re using

      Default: csv
      Possible values: csv or ical
      icalUrl Fill in your (public) ical URL
      Only use in combination with dataSource: ical
      debug For debugging the module when failure or testing

      Default: false
      Possible values: false or true
      binColors Define your own Bin Colors - Bin names have to match you’re names from CSV.
      When using ical match also icalBinMap

      Creating and using your Garbage Schedule for use with dataSource CSV

      You can use this module by creating your own Garbage Schedule file with the name garbage_schedule.csv

      An example file garbage_schedule.csv is added.

      Create a CSV based on the following template:

      WeekStarting,GreenBin,GarbageBin,PaperBin,PMDBin,OtherBin
      03/07/18,1,0,1,0,0
      03/14/18,1,1,1,0,0
      03/21/18,1,0,1,0,1
      03/28/18,1,1,1,1,0
      

      Default there are 5 bins defined. If you need more garbage bins, simply add an extra column in the garbage_schedule.csv file, with the name of the extra bin. If you only need 3, then simply remove them. When the module is started, it reads the names and will try them to match to the binColors.
      As of v3.0.0 of the module you can add custom names in the CSV of rename current names. As long as you change your binColors in config.js with the correspending names, you will see the information with the correct collors.

      Remark
      Any Bin name that is not or not correct matched with the name in binColors, will be shown in the color PURPLE

      Add lines for each garbage pickup date as needed.
      The date format needs to be specified as MM/DD/YY (e.g.: 05/28/18 for 28-May-2018)
      Colors can be defined in the config.js file:

      • Legacy Values:
        • GreenBin (defaults to #00A651)
        • GarbageBin (defaults to #787878)
        • PaperBin (defaults to #0059ff)
        • PMDBin (defaults to #ffff00)
        • OtherBin (defaults to #F542CE)
      • Any CSS color string (red, chocolate, cornflowerblue, etc…)
      • Any HEX-Color (#FF0000, #8c8c8c, etc)
      • Any rgb, rgba or hsl value if in double quotes (“rgb(128,65,98)”, “rgba(134,56,32,0.5)”, “hsl(0, 100%, 50%)”, etc.)

      The following is VERY important:

      • The CSV file must be delimited using commas
      • The date format must to be specified as MM/DD/YY (e.g.: 05/28/18 for 28-May-2018)
      • The remaining fields of each line specify whether the particular waste product is scheduled to be picked up on the given date. A value of 0 means no pick up. A value of ANYTHING ELSE means the product will be picked up. Using the first pick up date entry in the template above, 1,0,1,0,0 means that green and blue will be picked up on that date, while the others will not be picked up.

      Save the file as garbage_schedule.csv in the MMM-MyGarbage directory and restart Magic Mirror²

      License

      The MIT License (MIT)

      Copyright © 2019-2026 Harm Tilburgs

      Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

      The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

      The software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

      Note

      The original script is from Jeff Clarke MMM-MyWastePickup and only for the Toronto area.
      Now it has become a general script, to use in all areas all over the world.

      Versions

      v3.0.0 (07-03-2026)

      • Add support for flexible numbers of Bins
      • Bin names are automaticly detected
      • Match bin colors to bin names for csv and ical
      • Error message instead of “Loading…” when the CSV or ICAL is in wrong format
      • Better debug information in console and in module
      • Clean up code

      v2.1.2 (02-03-2026)

      • Update for rare AxiosError [AggregateError] when loading iCal

      v2.1.1 (17-02-2026)

      • Bugfix for the alertTreshold

      v2.1.0 (16-02-2026)

      • Update for CSV file and alertThreshold (add to config.js!)

      v2.0.1 (2025)

      • Update for Streamline date parsing and allow for recurring events in ical (thx to @thepagan)

      v2.0.0 (2025)

      • Changed for use with CSV or with iCal Calendar

      v1.0.0 (Initial Release 2019)

      posted in Utilities
      htilburgsH
      htilburgs
    • MMM-MyTasklist

      MMM-MyTasklist

      This a module for Magic Mirror².
      This displays a simple Tasklist, you can update through a web frontend.

      image

      image

      Installation

      Clone this repository in your modules folder, and install dependencies:

      cd ~/MagicMirror/modules 
      git clone https://github.com/htilburgs/MMM-MyTasklist.git
      cd MMM-MyTasklist
      npm install 
      

      Update

      When you need to update this module:

      cd ~/MagicMirror/modules/MMM-MyTasklist
      git pull
      npm install
      

      Configuration

      Go to the MagicMirror/config directory and edit the config.js file.
      Add the module to your modules array in your config.js.

      {
        module: "MMM-MyTasklist",
        position: "top_left",
        header: "MyTaskList",
        disabled: false,
        config: {
          tasksFile: "modules/MMM-MyTasklist/tasks.json",
          updateInterval: 300000,
          showCompleted: true,
          maxTasks: null
        }
      },
      

      Load Webinterface for updating the Tasklist

      Open a browser and type http://serverip address:8448
      So if for example you’re MagicMirror is on 192.168.0.48 then you go to http://192.168.0.48:8448

      The Webinterface for MyTasklist will be loaded and you will be able to:

      • choose language for the Webinterface
      • add tasks
      • complete tasks
      • delete tasks
      • edit tasks
      • move the order from tasks by drag-and-drop
      • filter on all, active or done tasks

      All the updates are instantly published on your Mirror

      NOTE:
      With a touchscreen you’re able to check the checkboxes on the Mirror to complete the task.

      All these changes are instantly published to the Webinterface

      Versions

      v1.0.0 - Initial release
      v1.1.0 - Update Look & Feel
      v1.1.1 - Change Webinterface port from 8123 to 8448
      v1.2.0 - Add possibility to edit the tasks in the Webinterface
      v1.2.1 - Update language selector didn’t work correct in Webinterface (always dutch after reload)

      posted in Utilities
      htilburgsH
      htilburgs
    • RE: PIR problem RPi 4B, Bullseye 64 bit

      @wyovino No, I’m not using MMM-PIR.
      I’ve documented it on my website, but it is in Dutch ;-)

      https://magicmirror.tilburgs.com/pir-configuratie/

      posted in Troubleshooting
      htilburgsH
      htilburgs
    • RE: MMM-MyWeatherForecast

      @KristjanESPERANTO
      The icons came from https://www.flaticon.com/search?word=weather partly clouded night

      I will give MMM-OneCallWeather a look for the icons, but I hope I will stay unique.

      posted in Utilities
      htilburgsH
      htilburgs
    • MMM-MySystem

      MMM-MySystem

      This is a Magic Mirror² module for the system information.
      I now there are more 😉, but I built a version with a modern look and feel, suited for my needs.

      SCR-20260310-qsds

      Installation

      Clone this repository in your modules folder, and install dependencies:

      cd ~/MagicMirror/modules
      git clone https://github.com/htilburgs/MMM-MySystem.git
      cd MMM-MySystem
      npm install
      

      Update

      When you need to update this module:

      cd ~/MagicMirror/modules/MMM-MySystem
      git pull
      npm install
      

      Configuration

      Go to the MagicMirror/config directory and edit the config.js file.
      Add the module to your modules array in your config.js.

      {
        module: "MMM-MySystem",
        position: "top_right",
        header: "System Information",
        disabled: false,
        config: {
          showHeader: true,
          showCpuUsage: true,
          showCpuTemp: true,
          showMemory: true,
          showDisk: true,
          showUptime: true,
          showIPeth: true,
          showIPwifi: true,
          tempUnit: "C"
          updateInterval: 10000
        }
      }
      

      Configuration Options

      Option Description
      showHeader Show the header with Hostname, Model and OS Version
      Options: true/false - Default: true
      showCPUusage Show the CPU Usage (%)
      Options: true/false - Default: true
      showCPUtemp Show the CPU Temperature
      Options: true/false - Default: true
      showMemory Show the Free Memory (%)
      Options: true/false - Default: true
      showDisk Show the Free Diskpace
      Options: true/false - Default: true
      showIPeth Show the IP Address for the Ethernet
      Options: true/false - Default: true
      showIPwifi | Show the IP Address for the Wifi<br/>Options: true/false - Default: <b>true`
      tempUnit Show the temperature in ˚C or ˚F
      Options: C/F - Default: C
      updateInterval Update interval module in ms
      Default: 10000 (10 seconds)

      Versions

      v1.0.0 (10-03-2026): Initial version)
      posted in Utilities
      htilburgsH
      htilburgs
    • RE: Do you use a PIR sensor? How do you hide it?

      I made a 8 mm hole on the backside and a 2 mm hole on the frontside.
      Removed the cap from the motion sensor and placed it in the 8 mm hole.
      Works great and you can hardly see the 2 mm hole.

      Backside:
      alt text

      Frontside:
      alt text

      posted in Hardware
      htilburgsH
      htilburgs
    • RE: I am looking for a working PIR Modul/function

      @Klinge
      I had the same issue with MMM-Universal-Pir.
      The maker had made a comment ABOUT It in the readme, with the correct commands after mine e-mail.
      Read the readme and you are How to do.

      posted in Troubleshooting
      htilburgsH
      htilburgs
    • RE: Get the correct JSON data

      @sdetweil Thanks, that works!
      Now I can really see what I’m doing.

      posted in Development
      htilburgsH
      htilburgs
    • MMM-MyDutchWeather

      Description
      MyDutchWeather is a simple Module, that shows the actual weather from the KNMI 10-minutes network for any location in the Netherlands, based on your GPS coördinates .

      Screenshot
      alt text

      alt text

      alt text

      Download
      [card:htilburgs/MMM-MyDutchWeather]

      Extra
      I’m not an experienced programmer and do this for fun. Feel free to suggest any ideas.

      Versions
      07-04-2019 - v1.0.0 - Initial release
      08-04-2019 - v1.1.0 - Added option for Simple or Additional information

      posted in Utilities
      htilburgsH
      htilburgs
    • RE: Do you use a PIR sensor? How do you hide it?

      I still have to paint the frame, thinking of a kind of ‘white-wash’ so you keep seeing the wood grains. Maybe it’s less ‘obvious’.
      But you know and I know, but most visitors I’ve had didn’t even see it or looking for it 🤔

      posted in Hardware
      htilburgsH
      htilburgs

    Latest posts made by htilburgs

    • RE: MMM-MyTado

      @MyMirror
      The humidity is already shown -> The humidity (💦)
      The open window is already shown -> Open Window (🪟)
      It will be shown in the status column when it appears in that zone.

      posted in Utilities
      htilburgsH
      htilburgs
    • RE: PIR / MQTT - Presence sensor(s) revived

      @rkorell
      That’s correct!
      At the end, because it currently just works with MMM-OnSpotify, it was not so difficult.

      I Will look into this in the near future to support other Player also.

      posted in System
      htilburgsH
      htilburgs
    • MMM-HideModulesOnSpotify

      MMM-HideModulesOnSpotify

      This is a small Magic Mirror² module that can hide one ore more modules when MMM-OnSpotify starts.

      The problem I had that my MagicMirror was full and the MMM-OnSpotify came over the other modules.
      With this module, I have created a way to automatically hide a module when MMM-OnSpotify opens. When MMM-OnSpotify closes again, the original module is reloaded in its place.

      This module loads automatically, but is not visible on the MagicMirror.
      The only thing you can see is in the logs that the module has been loaded.

      Installation

      Clone this repository in your modules folder, and install dependencies:

      cd ~/MagicMirror/modules
      git clone https://github.com/htilburgs/MMM-HideModulesOnSpotify.git
      cd MMM-HideModulesOnSpotify
      npm install
      

      Update

      When you need to update this module:

      cd ~/MagicMirror/modules/MMM-HideModulesOnSpotify
      git pull
      npm install
      

      Configuration

      Go to the MagicMirror/config directory and edit the config.js file.
      Add the module to your modules array in your config.js.

      {
            module: "MMM-HideModulesOnSpotify",
            config: {
                  modulesToHide: ["clock","calendar"]
            }
      },
      

      Configuration Options

      Option Description
      modulesToHide Array of module(s) you like to hide. Fill in the exact module Name as in your config.js

      Versions

      v1.0.0 (12-03-2026): Initial version


      License

      The MIT License (MIT)

      Copyright © 2026 Harm Tilburgs

      Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

      The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

      The software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

      posted in Utilities
      htilburgsH
      htilburgs
    • RE: PIR / MQTT - Presence sensor(s) revived

      @rkorell
      I see you’re even using one of my Modules (MMM-MyGarbage)

      My MusicPlayer (Volumio) is on the left side, too but is spreading the region if cover-art is appearing…
      

      Did you do something special for this, or is this an option in de Module?
      Because when MMM-OnSpotify appears, it just go over everything that is standing there.
      So for now I’ve disabled it and looking for a solution.

      posted in System
      htilburgsH
      htilburgs
    • RE: MMM-MyGarbage

      Just published an update v3.0.0

      • Add support for flexible numbers of Bins
      • Bin names are automaticly detected
      • Match bin colors to bin names for csv and ical
      • Error message instead of “Loading…” when the CSV or ICAL is in wrong format
      • Better debug information in console and in module
      • Clean up code

      Enjoy this new version and if you find any issues, please report them here

      posted in Utilities
      htilburgsH
      htilburgs
    • RE: PIR / MQTT - Presence sensor(s) revived

      @rkorell
      My current mirror
      This is why I have it on the right. For me this feels better.
      On the left side there comes the Spotify information, when I play music.

      eac1a738-526d-4d3f-8ad7-4103a12bc910-image.jpeg

      posted in System
      htilburgsH
      htilburgs
    • MMM-MySystem

      MMM-MySystem

      This is a Magic Mirror² module for the system information.
      I now there are more 😉, but I built a version with a modern look and feel, suited for my needs.

      SCR-20260310-qsds

      Installation

      Clone this repository in your modules folder, and install dependencies:

      cd ~/MagicMirror/modules
      git clone https://github.com/htilburgs/MMM-MySystem.git
      cd MMM-MySystem
      npm install
      

      Update

      When you need to update this module:

      cd ~/MagicMirror/modules/MMM-MySystem
      git pull
      npm install
      

      Configuration

      Go to the MagicMirror/config directory and edit the config.js file.
      Add the module to your modules array in your config.js.

      {
        module: "MMM-MySystem",
        position: "top_right",
        header: "System Information",
        disabled: false,
        config: {
          showHeader: true,
          showCpuUsage: true,
          showCpuTemp: true,
          showMemory: true,
          showDisk: true,
          showUptime: true,
          showIPeth: true,
          showIPwifi: true,
          tempUnit: "C"
          updateInterval: 10000
        }
      }
      

      Configuration Options

      Option Description
      showHeader Show the header with Hostname, Model and OS Version
      Options: true/false - Default: true
      showCPUusage Show the CPU Usage (%)
      Options: true/false - Default: true
      showCPUtemp Show the CPU Temperature
      Options: true/false - Default: true
      showMemory Show the Free Memory (%)
      Options: true/false - Default: true
      showDisk Show the Free Diskpace
      Options: true/false - Default: true
      showIPeth Show the IP Address for the Ethernet
      Options: true/false - Default: true
      showIPwifi | Show the IP Address for the Wifi<br/>Options: true/false - Default: <b>true`
      tempUnit Show the temperature in ˚C or ˚F
      Options: C/F - Default: C
      updateInterval Update interval module in ms
      Default: 10000 (10 seconds)

      Versions

      v1.0.0 (10-03-2026): Initial version)
      posted in Utilities
      htilburgsH
      htilburgs
    • RE: PIR / MQTT - Presence sensor(s) revived

      @rkorell
      Hi Ralf, I implemented the new version and parameter.
      It works great!

      I’m now playing with the CSS.
      Made the bar smaller (50%) rounded edges and alligned the counter at the left of my screen.

      1dcea511-66b9-4002-82e8-a3d2bec2652b-image.jpeg

      For those who like this setup, just add following in ~/MagicMirror/css/custom.css

      /* MMM-PresenceScreenControl */
      
      .psc-linebar {
        width: 50%;
        height: 5px;
        background: #222;
        border-radius: 4px;
        margin: 6px 0 6px 0;
        overflow: hidden;
        margin-left: auto;
        margin-right: 0;
      }
      
      .psc-bar {
        height: 100%;
        width: 100%;
        border-radius: 4px;
        transition: width 0.4s ease, background 0.4s ease;
        box-shadow: 0 0 6px currentColor;
      }
      
      .psc-timer {
        font-size: 16px;
        margin-top: 4px;
        margin-bottom: 2px;
        letter-spacing: 1px;
        text-align: right !important;
      }
      
      posted in System
      htilburgsH
      htilburgs
    • RE: PIR / MQTT - Presence sensor(s) revived

      @rkorell your welcome…;-)

      posted in System
      htilburgsH
      htilburgs
    • RE: PIR / MQTT - Presence sensor(s) revived

      @rkorell
      Oke, done some testing:
      With the ‘new’ strings, I get:

      onCommand: "WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --on --mode 1920x1080 --transform 270",
      offCommand: "WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off",
      
      [ERROR] [MMM-PresenceScreenControl] [updateScreen] ERROR: Error: Command failed: WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --on --mode 1920x1080 --transform 270
      unknown output HDMI-A-1
      

      Why this message, I don’t know.
      After a reboot this message didn’t show again.

      Then I stopped MagicMirror and did the same command from the commandline WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off

      After 6 seconds my display comes on again.
      So it isn’t coming from MagicMirror, but from my system.
      I created a simple Python3 script to turn off and on my monitor. Same problem.

      Next step:
      I took a new SD Card and installed a fresh copy of Trixie.
      Didn’t do anything else, no updates or something else and tried again with WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off from the command prompt.
      Display goes off and after 6 seconds back on again.
      So I excluded MagicMirror. What else can it be?

      Next step:
      I took an other RPI4b with the new SD Card from previous step. Repeated the test, but still same result. Monitor goes on after 6 seconds. So it is not MagicMirror, not the RPI. But why it works with MMM-PIR and not with MMM-PresenceScreenControl. It is still a riddle for me.

      Next step:
      Original RPI with original SD Card and installed MMM-Universal-Pir. Same result, after 6 seconds screen on.
      So I excluded MagicMirror, SD Card, Trixie installation and RPI. It must have something to do with my monitor?!?
      Did something happen? Not that I know.

      After doing a search on the big WWW, I found an interesting article that described exact the same issue I was having.
      https://forums.raspberrypi.com/viewtopic.php?t=363966

      So I searched for my RemoteControl and search for a setting
      that automatically scan its input sources (not easy if your MagicMirror screen is rotated 270° ;-)
      And I found this setting and indeed it was standing on auto scan. I put it on HDMI as only source and tried it again:

      YES, IT IS WORKING!!!

      And even better than before, now my monitor turns completly off after 15 min. of no signal. So instead of using 75W when on, 26W in standby, it now uses 0W after 15 minutes (it’s a setting on the monitor).
      Activating the PIR, it turns back on!

      So with this I hope that if somebody else has this problem, they can solve it to.

      Ralf, thanks for all the help and trying to solve it with me.
      I’m looking forward for the startupGracePeriod parameter and think this is going to make the module fully as I like it.
      Thank you for your great work with this module and a grownup replacement for MMM-Pir!!!

      posted in System
      htilburgsH
      htilburgs