MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Cronjob doesn't work with my MM

    Scheduled Pinned Locked Moved Troubleshooting
    16 Posts 7 Posters 2.4k Views 7 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      MisterT
      last edited by

      Hi everybody

      I have a problem with crontab and cronjob. My magicmirror doesn’t stop or refresh or restart or start with a cronjob.

      I search a solution on the forum but i still have the problem

      I use crontab -e without sudo and pm2 launch my magicmirror in /home/pi/MagicMirror

      my crontab seems like:

      # m h  dom mon dow   command
      01 00 * * *   pi     /home/pi/pm2 stop MagicMirror
      03 00 * * *   pi     /home/pi/pm2 reload MagicMirror
      00 08 * * *   pi     /home/pi/pm2 stop MagicMirror
      03 08 * * *   pi     /home/pi/pm2 reload MagicMirror
      52 14 * * *   pi     pm2 stop MagicMirror >/dev/null 2>&1
      18 20 * * *   pi     /home/pi/MagicMirror/pm2 start MagicMirror
      
      

      i try different solution but nothing happens.

      Can anybody help me please?

      Thx for next answers

      C 1 Reply Last reply Reply Quote 0
      • S Offline
        sdetweil
        last edited by sdetweil

        does anything show in the pm2 logs?

        pm2 logs --lines=100 (or more)
        

        pm2 is sensitive to the user who created the entries (pm2 start/save), as they are stored in the users home folder in .pm2 (notice the dot in the start of the name)

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 Reply Last reply Reply Quote 0
        • M Offline
          MisterT
          last edited by

          ok so with this crontab

          51 15 * * * pi pm2 stop MagicMirror >/dev/null 2>&1
          53 15 * * * pi pm2 start MagicMirror

          i have in .pm2/logs

          2020-05-16T14:49:45: PM2 log: App [MagicMirror:0] starting in -fork mode-
          2020-05-16T14:49:45: PM2 log: App [MagicMirror:0] online
          2020-05-16T14:52:43: PM2 log: Stopping app:MagicMirror id:0
          2020-05-16T14:52:44: PM2 log: pid=15018 msg=failed to kill - retrying in 100ms
          2020-05-16T14:52:44: PM2 log: App [MagicMirror:0] exited with code [0] via signal [SIGINT]
          2020-05-16T14:52:44: PM2 log: pid=15018 msg=process killed
          2020-05-16T15:39:20: PM2 log: [PM2] This PM2 is not UP TO DATE
          2020-05-16T15:39:20: PM2 log: [PM2] Upgrade to version 4.4.0
          2020-05-16T15:49:50: PM2 log: App [MagicMirror:0] starting in -fork mode-
          2020-05-16T15:49:50: PM2 log: App [MagicMirror:0] online
          2020-05-16T15:55:25: PM2 log: Stopping app:MagicMirror id:0
          2020-05-16T15:55:26: PM2 log: pid=16655 msg=failed to kill - retrying in 100ms
          2020-05-16T15:55:26: PM2 log: App [MagicMirror:0] exited with code [0] via signal [SIGINT]
          2020-05-16T15:55:26: PM2 log: pid=16655 msg=process killed
          

          and cron logs:

          May 16 15:48:21 raspberrypi crontab[16627]: (pi) BEGIN EDIT (pi)
          May 16 15:49:40 raspberrypi crontab[16627]: (pi) REPLACE (pi)
          May 16 15:49:40 raspberrypi crontab[16627]: (pi) END EDIT (pi)
          May 16 15:50:01 raspberrypi cron[410]: (pi) RELOAD (crontabs/pi)
          May 16 15:51:02 raspberrypi CRON[17002]: (pi) CMD (pi     pm2 stop MagicMirror >/dev/null 2>&1)
          May 16 15:53:01 raspberrypi CRON[17032]: (pi) CMD (pi     pm2 start MagicMirror)
          May 16 15:53:01 raspberrypi CRON[17026]: (CRON) info (No MTA installed, discarding output)
          

          so i don’t understand nothing on pm2 but cronjob seems to work

          Have you an idea?

          S 1 Reply Last reply Reply Quote 0
          • S Offline
            sdetweil @MisterT
            last edited by

            @MisterT do a pm2 flush to clear the log, then also show the error log… (its above the log output)
            or look at the files in the ~/./pm2/logs folder

            i looks like it works

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            1 Reply Last reply Reply Quote 0
            • M Offline
              MisterT
              last edited by

              ok so with pm2 flush and this crontab

              52 12 * * *   pi     pm2 stop MagicMirror >/dev/null 2>&1
              54 12 * * *   pi     pm2 start MagicMirror
              
              

              the pm2 logs :
              pm2 errors

              [12:51:04.343] [ERROR]  ERROR! Could not find main module js file for MMM-GooglemapsTraffic.original
              ATTENTION: default value of option force_s3tc_enable overridden by environment.
              [12:51:08.418] [ERROR]  ERROR! Could not find main module js file for MagicMirror-Display-Controller
              [12:51:09.801] [ERROR]  ERROR! Could not find main module js file for fabio
              [12:51:21.774] [ERROR]  (node:25245) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
              [12:51:35.140] [ERROR]  Error: status code: 401
                  at /home/pi/MagicMirror/modules/MMM-FreeBox-Monitor/node_modules/omdb/index.js:211:25
                  at done (/home/pi/MagicMirror/modules/MMM-FreeBox-Monitor/node_modules/needle/lib/needle.js:432:14)
                  at PassThrough.<anonymous> (/home/pi/MagicMirror/modules/MMM-FreeBox-Monitor/node_modules/needle/lib/needle.js:671:11)
                  at PassThrough.emit (events.js:182:13)
                  at endReadableNT (_stream_readable.js:1090:12)
                  at process._tickCallback (internal/process/next_tick.js:63:19)
              

              pm2 out

              
              > magicmirror@2.10.1 start /home/pi/MagicMirror
              > ./run-start.sh
              
              [12:50:32.600] [LOG]    Starting MagicMirror: v2.10.1
              [12:50:32.632] [LOG]    Loading config ...
              [12:50:32.668] [LOG]    Loading module helpers ...
              [12:50:32.670] [LOG]    No helper found for module: alert.
              [12:50:32.820] [LOG]    Initializing new module helper ...
              [12:50:32.826] [LOG]    Module helper loaded: updatenotification
              [12:50:32.829] [LOG]    No helper found for module: clock.
              [12:50:34.340] [LOG]    Initializing new module helper ...
              [12:50:34.341] [LOG]    Module helper loaded: calendar
              [12:50:34.343] [LOG]    No helper found for module: weatherforecast.
              [12:50:34.471] [LOG]    Initializing new module helper ...
              [12:50:34.472] [LOG]    Module helper loaded: newsfeed
              [12:50:34.483] [LOG]    No helper found for module: MMM-Globe.
              [12:50:35.854] [LOG]    Initializing new module helper ...
              [12:50:35.856] [LOG]    Module helper loaded: MMM-MovieListings
              [12:50:35.862] [LOG]    No helper found for module: MMM-Scrobbler.
              [12:50:37.296] [LOG]    Initializing new module helper ...
              [12:50:37.297] [LOG]    Module helper loaded: MMM-soccer
              [12:50:44.499] [LOG]    Initializing new module helper ...
              [12:50:44.501] [LOG]    Module helper loaded: MMM-News
              [12:50:44.521] [LOG]    Initializing new module helper ...
              [12:50:44.528] [LOG]    Module helper loaded: WallberryTheme
              [12:50:44.532] [LOG]    No helper found for module: WB-clock.
              [12:50:44.541] [LOG]    Initializing new module helper ...
              [12:50:44.543] [LOG]    Module helper loaded: WB-weather
              [12:50:44.578] [LOG]    Initializing new module helper ...
              [12:50:44.580] [LOG]    Module helper loaded: MMM-GroveGestures
              [12:50:45.966] [LOG]    Initializing new module helper ...
              [12:50:45.967] [LOG]    Module helper loaded: MMM-AQI
              [12:50:48.096] [LOG]    Initializing new module helper ...
              [12:50:48.099] [LOG]    Check MagicMirror version for node helper 'MMM-Strava' - Minimum version:  2.2.0 - Current version: 2.10.1
              [12:50:48.101] [LOG]    Version is ok!
              [12:50:48.102] [LOG]    Module helper loaded: MMM-Strava
              [12:50:48.834] [LOG]    Initializing new module helper ...
              [12:50:48.836] [LOG]    Module helper loaded: MMM-GooglePhotos
              [12:50:51.424] [LOG]    Initializing new module helper ...
              [12:50:51.426] [LOG]    Module helper loaded: MMM-FreeBox-Monitor
              [12:50:51.428] [LOG]    No helper found for module: currentweather.
              [12:50:51.434] [LOG]    No helper found for module: domoticz.
              [12:50:51.692] [LOG]    Initializing new module helper ...
              [12:50:51.694] [LOG]    Module helper loaded: MMM-ModuleScheduler
              [12:50:51.935] [LOG]    Initializing new module helper ...
              [12:50:51.936] [LOG]    Module helper loaded: MMM-Remote-Control
              [12:50:53.520] [LOG]    Initializing new module helper ...
              [12:50:53.522] [LOG]    Module helper loaded: MMM-NowPlayingOnSpotify
              [12:50:54.681] [LOG]    Initializing new module helper ...
              [12:50:54.687] [LOG]    Module helper loaded: MMM-COVID19-SPARKLINE
              [12:50:55.499] [LOG]    Initializing new module helper ...
              [12:50:55.500] [LOG]    Module helper loaded: MMM-Hotword
              [12:51:01.172] [LOG]    Initializing new module helper ...
              [12:51:01.173] [LOG]    Module helper loaded: MMM-AssistantMk2
              [12:51:01.176] [LOG]    No helper found for module: MMM-pages.
              [12:51:01.180] [LOG]    No helper found for module: MMM-page-indicator.
              [12:51:01.182] [LOG]    All module helpers loaded.
              [12:51:01.187] [LOG]    Starting server on port 8080 ... 
              [12:51:01.197] [INFO]   You're using a full whitelist configuration to allow for all IPs
              [12:51:01.210] [LOG]    Server started ...
              [12:51:01.215] [LOG]    Connecting socket for: updatenotification
              [12:51:01.219] [LOG]    Connecting socket for: calendar
              [12:51:01.222] [LOG]    Starting node helper for: calendar
              [12:51:01.225] [LOG]    Connecting socket for: newsfeed
              [12:51:01.228] [LOG]    Starting module: newsfeed
              [12:51:01.230] [LOG]    Connecting socket for: MMM-MovieListings
              [12:51:01.231] [LOG]    MMM-MovieListing helper started...
              [12:51:01.233] [LOG]    Connecting socket for: MMM-soccer
              [12:51:01.234] [LOG]    Starting module: MMM-soccer
              [12:51:01.235] [LOG]    Connecting socket for: MMM-News
              [12:51:01.237] [LOG]    Connecting socket for: WallberryTheme
              [12:51:01.238] [LOG]    Starting module helper: WallberryTheme
              [12:51:01.239] [LOG]    Connecting socket for: WB-weather
              [12:51:01.242] [LOG]    Connecting socket for: MMM-GroveGestures
              [12:51:01.245] [LOG]    Connecting socket for: MMM-AQI
              [12:51:01.247] [LOG]    MMM-AQI helper started ...
              [12:51:01.250] [LOG]    Connecting socket for: MMM-Strava
              [12:51:01.253] [LOG]    Starting module helper: MMM-Strava
              [12:51:01.258] [LOG]    Connecting socket for: MMM-GooglePhotos
              [12:51:01.261] [LOG]    Connecting socket for: MMM-FreeBox-Monitor
              [12:51:01.265] [LOG]    Starting module: MMM-FreeBox-Monitor
              [12:51:01.266] [LOG]    Connecting socket for: MMM-ModuleScheduler
              [12:51:01.267] [LOG]    Starting node helper for: MMM-ModuleScheduler
              [12:51:01.269] [LOG]    Connecting socket for: MMM-Remote-Control
              [12:51:01.270] [LOG]    Starting node helper for: MMM-Remote-Control
              [12:51:01.293] [LOG]    Connecting socket for: MMM-NowPlayingOnSpotify
              [12:51:01.296] [LOG]    Connecting socket for: MMM-COVID19-SPARKLINE
              [12:51:01.297] [LOG]    Starting node helper for: MMM-COVID19-SPARKLINE
              [12:51:01.298] [LOG]    Connecting socket for: MMM-Hotword
              [12:51:01.299] [LOG]    [HOTWORD] MMM-Hotword starts
              [12:51:01.301] [LOG]    Connecting socket for: MMM-AssistantMk2
              [12:51:01.302] [LOG]    Sockets connected & modules started ...
              [12:51:02.126] [LOG]    Launching application.
              [12:51:20.629] [LOG]    Create new calendar fetcher for url: https://calendar.google.com/calendar/ical/lxxxxxxx/basic.ics - Interval: 300000
              [12:51:20.672] [LOG]    Create new calendar fetcher for url: https://calendar.google.com/calendar/ical/xxxxxx/basic.ics - Interval: 300000
              [12:51:20.866] [LOG]    Create new news fetcher for url: https://www.francetvinfo.fr/titres.rss - Interval: 300000
              [12:51:21.153] [LOG]    Get league table for url http://api.football-data.org/v2/competitions/FL1/standings
              [12:51:21.209] [LOG]    [NEWS] Initialized.
              [12:51:21.298] [LOG]    FREEBOX: "CONNECT" [object Object]
              [12:51:21.308] [LOG]    { track_id: 0,
                app_token:
                 'rxxxxxxx,
                appId: 'fr.freebox',
                challenge: 'xxxxxxxxxxx',
                session_token:
                 'xa5r1W+kxfU+tnnR9U/10YzBJ1/xxxxxxxx }
              [12:51:21.355] [LOG]    MMM-ModuleScheduler is removing all scheduled jobs
              [12:51:21.356] [LOG]    MMM-ModuleScheduler received CREATE_NOTIFICATION_SCHEDULE
              [12:51:21.360] [LOG]    MMM-ModuleScheduler is scheduling SHOW_ALERT using "35 11 * * *
              [12:51:21.445] [LOG]    MMM-ModuleScheduler has scheduled SHOW_ALERT
              [12:51:21.461] [LOG]    MMM-ModuleScheduler will next send SHOW_ALERT at Mon May 18 2020 11:35:00 GMT+0200 (CEST)
              [12:51:21.463] [LOG]    MMM-ModuleScheduler is scheduling SHOW_ALERT using "13 15 * * *
              [12:51:21.477] [LOG]    MMM-ModuleScheduler has scheduled SHOW_ALERT
              [12:51:21.485] [LOG]    MMM-ModuleScheduler will next send SHOW_ALERT at Sun May 17 2020 15:13:00 GMT+0200 (CEST)
              [12:51:21.486] [LOG]    MMM-ModuleScheduler is scheduling REMOTE_ACTION using "55 11 * * *
              [12:51:21.502] [LOG]    MMM-ModuleScheduler has scheduled REMOTE_ACTION
              [12:51:21.540] [LOG]    MMM-ModuleScheduler will next send REMOTE_ACTION at Mon May 18 2020 11:55:00 GMT+0200 (CEST)
              [12:51:21.544] [LOG]    MMM-ModuleScheduler is scheduling REMOTE_ACTION using "00 08 * * *
              [12:51:21.556] [LOG]    MMM-ModuleScheduler has scheduled REMOTE_ACTION
              [12:51:21.570] [LOG]    MMM-ModuleScheduler will next send REMOTE_ACTION at Mon May 18 2020 08:00:00 GMT+0200 (CEST)
              [12:51:21.573] [LOG]    MMM-ModuleScheduler is scheduling REMOTE_ACTION using "00 19 * * *
              [12:51:21.583] [LOG]    MMM-ModuleScheduler has scheduled REMOTE_ACTION
              [12:51:21.587] [LOG]    MMM-ModuleScheduler will next send REMOTE_ACTION at Sun May 17 2020 19:00:00 GMT+0200 (CEST)
              [12:51:21.642] [LOG]    [COVID:CORE] Scan starts.
              [12:51:21.739] [LOG]    [HOTWORD] Recipe is loaded: with-AMk2v3_Jarvis.js
              [12:51:22.200] [LOG]    CallbackGetChallenge -> [object Object]
              [12:51:22.722] [LOG]    Electron's cache successfully cleared.
              [12:51:23.375] [LOG]    Refreshed access token because it has expired. Expired at: 12:51:21 now is: 12:51:23
              [12:51:25.260] [LOG]    [NEWS] Articles are aggregated :  45
              [12:51:25.784] [LOG]    [HOTWORD] begins.
              [12:51:25.788] [LOG]    [HOTWORD] Detector starts listening.
              [12:51:26.050] [LOG]    [COVID:CORE] Access to data source.
              [12:51:27.283] [LOG]    [COVID:CORE] Resolving: csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv
              [12:51:27.963] [LOG]    [COVID:CORE] Resolving: csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv
              [12:51:30.338] [LOG]    [COVID:CORE] Resolving: csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv
              [12:51:30.422] [LOG]    can't find property recovered Canada:
              [12:51:30.423] [LOG]    adding...
              [12:51:30.677] [LOG]    [COVID:CORE] Calculating Wordlwide total.
              [12:51:30.888] [LOG]    [COVID:CORE] Scan Completed.
              [12:51:33.466] [LOG]    [AMK2] MMM-AssistantMk2 Version: 3.3.0
              [12:51:33.478] [LOG]    [AMK2] Response delay is set to 0.5 second
              [12:51:33.481] [LOG]    [AMK2] Use HTML5 for audio response
              [12:51:33.496] [LOG]    [AMK2] RECIPE_LOADED: with-MMM-Hotword.js
              [12:51:33.498] [LOG]    [AMK2] NO_ACTION_TO_MANAGE
              [12:51:33.521] [LOG]    [AMK2] ASSISTANT_WEB Started
              [12:51:33.538] [LOG]    [AMK2] AssistantMk2 is initialized.
              [12:51:33.906] [LOG]    FREEBOX: "GET_CALLS" [object Object]
              [12:51:33.960] [LOG]    FREEBOX: "GET_DOWNLOADS" [object Object]
              [12:51:34.090] [LOG]    FREEBOX: "GET_CONNECTIONSTATUS" [object Object]
              [12:55:40.854] [LOG]    Shutting down server...
              [12:55:40.865] [LOG]    Stopping module helper: updatenotification
              [12:55:40.876] [LOG]    Stopping module helper: calendar
              [12:55:40.882] [LOG]    Stopping module helper: newsfeed
              [12:55:40.884] [LOG]    Stopping module helper: MMM-MovieListings
              [12:55:40.886] [LOG]    Stopping module helper: MMM-soccer
              [12:55:40.891] [LOG]    Stopping module helper: MMM-News
              [12:55:40.897] [LOG]    Stopping module helper: WallberryTheme
              [12:55:40.903] [LOG]    Stopping module helper: WB-weather
              [12:55:40.914] [LOG]    Stopping module helper: MMM-AQI
              [12:55:40.916] [LOG]    Stopping module helper: MMM-Strava
              [12:55:40.918] [LOG]    Stopping module helper: MMM-GooglePhotos
              [12:55:40.920] [LOG]    Stopping module helper: MMM-FreeBox-Monitor
              [12:55:40.921] [LOG]    Stopping module helper: MMM-ModuleScheduler
              [12:55:40.932] [LOG]    Stopping module helper: MMM-NowPlayingOnSpotify
              [12:55:40.936] [LOG]    Stopping module helper: MMM-COVID19-SPARKLINE
              [12:55:40.941] [LOG]    Stopping module helper: MMM-Hotword
              [12:55:40.946] [LOG]    Stopping module helper: MMM-AssistantMk2
              
              

              and cron log

              May 17 12:49:33 raspberrypi crontab[25141]: (pi) BEGIN EDIT (pi)
              May 17 12:50:12 raspberrypi crontab[25141]: (pi) REPLACE (pi)
              May 17 12:50:12 raspberrypi crontab[25141]: (pi) END EDIT (pi)
              May 17 12:51:01 raspberrypi cron[410]: (pi) RELOAD (crontabs/pi)
              May 17 12:52:01 raspberrypi CRON[25574]: (pi) CMD (pi     pm2 stop MagicMirror >/dev/null 2>&1)
              May 17 12:54:01 raspberrypi CRON[25592]: (pi) CMD (pi     pm2 start MagicMirror)
              May 17 12:54:01 raspberrypi CRON[25582]: (CRON) info (No MTA installed, discarding output)
              

              Do you see something wrong ?

              1 Reply Last reply Reply Quote 0
              • S Offline
                sdetweil
                last edited by

                @MisterT said in Cronjob doesn't work with my MM:

                [12:51:04.343] [ERROR] ERROR! Could not find main module js file for MMM-GooglemapsTraffic.original
                ATTENTION: default value of option force_s3tc_enable overridden by environment.
                [12:51:08.418] [ERROR] ERROR! Could not find main module js file for MagicMirror-Display-Controller
                [12:51:09.801] [ERROR] ERROR! Could not find main module js file for fabio

                you should add

                disabled: true,
                

                to those three modules in you config.js
                right after the module name

                the times don’t line up on the reports…
                cron log

                May 17 12:52:01 raspberrypi CRON[25574]: (pi) CMD (pi     pm2 stop MagicMirror >/dev/null 2>&1)
                

                pm2 log

                [12:55:40.854] [LOG]    Shutting down server...
                

                take this off the shutdown command
                pm2 stop MagicMirror >/dev/null 2>&1
                add a couple commands to the cron right in front of the shutdown

                pm2 info 0
                pm2 status 0
                

                these should output to the cron log

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                1 Reply Last reply Reply Quote 0
                • C Offline
                  chassain 0 @MisterT
                  last edited by

                  @MisterT

                  PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
                  SHELL=/bin/bash

                  0 20 * * * pm2 stop mm
                  0 6 * * 1-5 pm2 start mm

                  1 Reply Last reply Reply Quote 0
                  • M Offline
                    MisterT
                    last edited by

                    @chassain-0 i tried your solution but still not work, same with pm2 stop/start MagicMirror

                    @sdetweil with this cron

                    44 18 * * * pi pm2 start MagicMirror > pm2 status 0
                    or
                    46 18 * * * pi pm2 start MagicMirror > pm2 info 0

                    i had a log in pi folder at the same time but a blank log

                    I tested my cron with a simple Hello word .py and cronjob works.

                    have you an other solution ?

                    S 1 Reply Last reply Reply Quote 0
                    • S Offline
                      sdetweil @MisterT
                      last edited by

                      @MisterT pm2 is a big node application, so if needs to be in the right folder and process

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      1 Reply Last reply Reply Quote 0
                      • T Offline
                        Tribun
                        last edited by

                        Hello MisterT
                        I’m not an expert, I’m more of a beginner, but I tried to use a cronjob to stop and start the mirror on my mirror.

                        10 23 * * * pm2 stop mm> / dev / null 2> & 1
                        15 23 * * * pm2 start mm> / dev / null 2> & 1
                        it worked for me.
                        I use the MagicMirror² v2.11.0 and NAME = “Raspbian GNU / Linux”
                        VERSION_ID = “10”
                        VERSION = “10 (buster)”
                        VERSION_CODENAME = buster.
                        With older versions of the software I always had problems starting MagicMirror because of access violations with pm2 after a reboot.
                        Maybe this will help you solve your problem.

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 1 / 2
                        • First post
                          Last post
                        Enjoying MagicMirror? Please consider a donation!
                        MagicMirror created by Michael Teeuw.
                        Forum managed by Sam, technical setup by Karsten.
                        This forum is using NodeBB as its core | Contributors
                        Contact | Privacy Policy