• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
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.

MMM-OpenWeatherMapForecast loading issue?

Scheduled Pinned Locked Moved Unsolved Troubleshooting
19 Posts 3 Posters 3.2k Views 3 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.
  • S Away
    sdetweil @croc_dad72
    last edited by Apr 15, 2023, 6:43 PM

    @croc_dad72 ok, do this

    ctrl-m to minimize MM if running
    open a terminal window on you MM system 
    ctrl-alt-t
    cd ~/Magicmirror/modules
    mv MMM-OpenWeatherMapForecast  old OPWFC
    git clone https://github.com/sdetweil/MMM-OpenWeatherMapForecast
    cd MMM-OpenWeatheMapForecast
    npm install 
    cd ../..
    

    if mm is running recycle it now
    if MM is NOT running do

    npm start 
    

    after it comes up, ctrl-m to minimize and look at the messages output

    Sam

    How to add modules

    learning how to use browser developers window for css changes

    C 1 Reply Last reply Apr 16, 2023, 1:24 PM Reply Quote 0
    • C Offline
      croc_dad72 @sdetweil
      last edited by Apr 16, 2023, 1:24 PM

      @sdetweil said in MMM-OpenWeatherMapForecast loading issue?:

      cd MMM-OpenWeatheMapForecast

      This is what I got after installing with the directions above.

      macserver@EDITHs-MacBook-Pro magicmirror % npm run server
      
      > magicmirror@2.23.0 server
      > node ./serveronly
      
      [16.04.2023 08:19.12.823] [LOG]   Starting MagicMirror: v2.23.0
      [16.04.2023 08:19.12.827] [LOG]   Loading config ...
      [16.04.2023 08:19.12.829] [DEBUG] config template file not exists, no envsubst
      [16.04.2023 08:19.12.832] [LOG]   Loading module helpers ...
      [16.04.2023 08:19.12.832] [LOG]   No helper found for module: alert.
      [16.04.2023 08:19.12.837] [LOG]   Initializing new module helper ...
      [16.04.2023 08:19.12.838] [LOG]   Module helper loaded: updatenotification
      [16.04.2023 08:19.12.838] [LOG]   No helper found for module: clock.
      [16.04.2023 08:19.13.037] [LOG]   Initializing new module helper ...
      [16.04.2023 08:19.13.038] [LOG]   Module helper loaded: MMM-quote-of-the-day
      [16.04.2023 08:19.13.140] [LOG]   Initializing new module helper ...
      [16.04.2023 08:19.13.140] [LOG]   Module helper loaded: MMM-MyCalendar
      [16.04.2023 08:19.13.254] [LOG]   Initializing new module helper ...
      [16.04.2023 08:19.13.254] [LOG]   Module helper loaded: MMM-GooglePhotos
      [16.04.2023 08:19.13.255] [WARN]  No /Users/macserver/MagicMirror/js/../modules//.js found for module: .
      [16.04.2023 08:19.13.255] [LOG]   No helper found for module: .
      [16.04.2023 08:19.13.257] [ERROR] Whoops! There was an uncaught exception...
      [16.04.2023 08:19.13.260] [ERROR] Error: Cannot find module 'needle'
      Require stack:
      - /Users/macserver/MagicMirror/modules/MMM-OpenWeatherMapForecast/node_helper.js
      - /Users/macserver/MagicMirror/js/app.js
      - /Users/macserver/MagicMirror/serveronly/index.js
          at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15)
          at Module._resolveFilename (/Users/macserver/MagicMirror/node_modules/module-alias/index.js:49:29)
          at Module._load (node:internal/modules/cjs/loader:920:27)
          at Module.require (node:internal/modules/cjs/loader:1141:19)
          at require (node:internal/modules/cjs/helpers:110:18)
          at Object.<anonymous> (/Users/macserver/MagicMirror/modules/MMM-OpenWeatherMapForecast/node_helper.js:23:14)
          at Module._compile (node:internal/modules/cjs/loader:1254:14)
          at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
          at Module.load (node:internal/modules/cjs/loader:1117:32)
          at Module._load (node:internal/modules/cjs/loader:958:12)
          at Module.require (node:internal/modules/cjs/loader:1141:19)
          at require (node:internal/modules/cjs/helpers:110:18)
          at loadModule (/Users/macserver/MagicMirror/js/app.js:184:19)
          at loadNextModule (/Users/macserver/MagicMirror/js/app.js:220:6)
          at loadNextModule (/Users/macserver/MagicMirror/js/app.js:222:6)
          at loadNextModule (/Users/macserver/MagicMirror/js/app.js:222:6) {
        code: 'MODULE_NOT_FOUND',
        requireStack: [
          '/Users/macserver/MagicMirror/modules/MMM-OpenWeatherMapForecast/node_helper.js',
          '/Users/macserver/MagicMirror/js/app.js',
          '/Users/macserver/MagicMirror/serveronly/index.js'
        ]
      }
      [16.04.2023 08:19.13.261] [ERROR] MagicMirror² will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
      [16.04.2023 08:19.13.261] [ERROR] If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues
      macserver@EDITHs-MacBook-Pro magicmirror % 
      
      
      S 1 Reply Last reply Apr 16, 2023, 1:29 PM Reply Quote 0
      • S Away
        sdetweil @croc_dad72
        last edited by Apr 16, 2023, 1:29 PM

        @croc_dad72 you did not
        npm install
        in the module folder

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        C 1 Reply Last reply Apr 17, 2023, 2:26 PM Reply Quote 0
        • C Offline
          croc_dad72 @sdetweil
          last edited by Apr 17, 2023, 2:26 PM

          @sdetweil Ok thanks, now that I installed it right, im still just getting the loading on the module? Here is the start up code:backhand_index_pointing_down_light_skin_tone:
          Thanks for your help, time, and patients!

          macserver@EDITHs-MacBook-Pro magicmirror % npm run server
          
          > magicmirror@2.23.0 server
          > node ./serveronly
          
          [17.04.2023 09:18.24.710] [LOG]   Starting MagicMirror: v2.23.0
          [17.04.2023 09:18.24.714] [LOG]   Loading config ...
          [17.04.2023 09:18.24.716] [DEBUG] config template file not exists, no envsubst
          [17.04.2023 09:18.24.718] [LOG]   Loading module helpers ...
          [17.04.2023 09:18.24.719] [LOG]   No helper found for module: alert.
          [17.04.2023 09:18.24.724] [LOG]   Initializing new module helper ...
          [17.04.2023 09:18.24.725] [LOG]   Module helper loaded: updatenotification
          [17.04.2023 09:18.24.725] [LOG]   No helper found for module: clock.
          [17.04.2023 09:18.24.936] [LOG]   Initializing new module helper ...
          [17.04.2023 09:18.24.937] [LOG]   Module helper loaded: MMM-quote-of-the-day
          [17.04.2023 09:18.25.043] [LOG]   Initializing new module helper ...
          [17.04.2023 09:18.25.044] [LOG]   Module helper loaded: MMM-MyCalendar
          [17.04.2023 09:18.25.162] [LOG]   Initializing new module helper ...
          [17.04.2023 09:18.25.162] [LOG]   Module helper loaded: MMM-GooglePhotos
          [17.04.2023 09:18.25.163] [WARN]  No /Users/macserver/MagicMirror/js/../modules//.js found for module: .
          [17.04.2023 09:18.25.163] [LOG]   No helper found for module: .
          [17.04.2023 09:18.25.237] [LOG]   Initializing new module helper ...
          [17.04.2023 09:18.25.238] [LOG]   Module helper loaded: MMM-OpenWeatherMapForecast
          [17.04.2023 09:18.25.238] [LOG]   No helper found for module: MMM-WiFiPassword.
          [17.04.2023 09:18.25.247] [LOG]   Initializing new module helper ...
          [17.04.2023 09:18.25.248] [LOG]   Module helper loaded: MMM-Memo
          [17.04.2023 09:18.25.257] [LOG]   Initializing new module helper ...
          [17.04.2023 09:18.25.257] [LOG]   Module helper loaded: newsfeed
          [17.04.2023 09:18.25.257] [LOG]   All module helpers loaded.
          [17.04.2023 09:18.25.265] [LOG]   Starting server on port 8080 ... 
          [17.04.2023 09:18.25.267] [WARN]  You're using a full whitelist configuration to allow for all IPs
          [17.04.2023 09:18.25.272] [LOG]   Server started ...
          [17.04.2023 09:18.25.273] [LOG]   Connecting socket for: updatenotification
          [17.04.2023 09:18.25.273] [LOG]   Starting module helper: updatenotification
          [17.04.2023 09:18.25.277] [LOG]   Connecting socket for: MMM-quote-of-the-day
          [17.04.2023 09:18.25.277] [LOG]   MMM-quote-of-the-day helper started
          [17.04.2023 09:18.25.279] [LOG]   Connecting socket for: MMM-MyCalendar
          [17.04.2023 09:18.25.279] [LOG]   Starting node helper for: MMM-MyCalendar
          [17.04.2023 09:18.25.279] [LOG]   Connecting socket for: MMM-GooglePhotos
          [17.04.2023 09:18.25.279] [LOG]   Connecting socket for: MMM-OpenWeatherMapForecast
          [17.04.2023 09:18.25.279] [LOG]   ====================== Starting node_helper for module [MMM-OpenWeatherMapForecast]
          [17.04.2023 09:18.25.280] [LOG]   Connecting socket for: MMM-Memo
          [17.04.2023 09:18.25.280] [LOG]   Connecting socket for: newsfeed
          [17.04.2023 09:18.25.280] [LOG]   Starting node helper for: newsfeed
          [17.04.2023 09:18.25.280] [LOG]   Sockets connected & modules started ...
          [17.04.2023 09:18.25.281] [LOG]   
          Ready to go! Please point your browser to: http://0.0.0.0:8080
          [17.04.2023 09:18.46.468] [LOG]   MMM-quote-of-the-day received a socket notification: INIT_HELPER - Payload: [object Object]
          [17.04.2023 09:18.46.469] [LOG]   MMM-quote-of-the-day received a socket notification: GET_QUOTE - Payload: [object Object]
          [17.04.2023 09:18.46.486] [LOG]   Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/1madff72%40gmail.com/private-43dd7100efe15087f221915e4f97e343/basic.ics - Interval: 300000
          [17.04.2023 09:18.46.596] [LOG]   Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/cn5vlg6g97kjq9ksrcjp8925mc%40group.calendar.google.com/private-778f10708543b8098fb7e8d1110b1a59/basic.ics - Interval: 300000
          [17.04.2023 09:18.46.599] [LOG]   Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/kelland07%40gmail.com/private-46e66ed170d59dba9545ad0b253efa4d/basic.ics - Interval: 300000
          [17.04.2023 09:18.46.601] [LOG]   Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/ffshnike%40gmail.com/private-ac06b64ac6c1f2d26b142f93eb60205b/basic.ics - Interval: 300000
          [17.04.2023 09:18.46.603] [LOG]   Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/rfci1sthlecnfqoj0ecfd69csg%40group.calendar.google.com/private-385b5ae26bc6e915d62515d10228616b/basic.ics - Interval: 300000
          [17.04.2023 09:18.46.604] [LOG]   Create new calendarfetcher for url: http://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics - Interval: 300000
          [17.04.2023 09:18.46.611] [LOG]   Create new newsfetcher for url: https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml - Interval: 300000
          [17.04.2023 09:18.46.617] [INFO]  Checking git for module: MMM-quote-of-the-day
          [17.04.2023 09:18.46.887] [LOG]   {
            status: 200,
            statusText: 'OK',
            headers: {
              date: 'Mon, 17 Apr 2023 14:18:46 GMT',
              'content-type': 'application/json',
              'transfer-encoding': 'chunked',
              connection: 'close',
              vary: 'Accept-Encoding',
              'cf-cache-status': 'DYNAMIC',
              'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=i0x2oG767LUHoIXj0%2FO1UAkLAmijYeRqAKnlW7sUCjzMQ7b0%2BbhVKNlj5hGJUu6yYUOclI28Mmr3DB1OpO0Ut2Ti91vOl0icEMQibHyfMmJyA6U%2FBquphR3igj8vsBTf04oGQ8k%3D"}],"group":"cf-nel","max_age":604800}',
              nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}',
              'x-content-type-options': 'nosniff',
              server: 'cloudflare',
              'cf-ray': '7b954c9a197313ce-ORD',
              'alt-svc': 'h3=":443"; ma=86400, h3-29=":443"; ma=86400'
            },
            config: {
              transitional: {
                silentJSONParsing: true,
                forcedJSONParsing: true,
                clarifyTimeoutError: false
              },
              adapter: [Function: httpAdapter],
              transformRequest: [ [Function: transformRequest] ],
              transformResponse: [ [Function: transformResponse] ],
              timeout: 0,
              xsrfCookieName: 'XSRF-TOKEN',
              xsrfHeaderName: 'X-XSRF-TOKEN',
              maxContentLength: -1,
              maxBodyLength: -1,
              env: { FormData: [Function] },
              validateStatus: [Function: validateStatus],
              headers: {
                Accept: 'application/json, text/plain, */*',
                'User-Agent': 'axios/0.27.2'
              },
              params: { lang: 'en' },
              method: 'get',
              url: 'http://api.forismatic.com/api/1.0/?method=getQuote&format=json',
              data: undefined
            },
            request: <ref *1> ClientRequest {
              _events: [Object: null prototype] {
                abort: [Function (anonymous)],
                aborted: [Function (anonymous)],
                connect: [Function (anonymous)],
                error: [Function (anonymous)],
                socket: [Function (anonymous)],
                timeout: [Function (anonymous)],
                finish: [Function: requestOnFinish]
              },
              _eventsCount: 7,
              _maxListeners: undefined,
              outputData: [],
              outputSize: 0,
              writable: true,
              destroyed: false,
              _last: true,
              chunkedEncoding: false,
              shouldKeepAlive: false,
              maxRequestsOnConnectionReached: false,
              _defaultKeepAlive: true,
              useChunkedEncodingByDefault: false,
              sendDate: false,
              _removedConnection: false,
              _removedContLen: false,
              _removedTE: false,
              strictContentLength: false,
              _contentLength: 0,
              _hasBody: true,
              _trailer: '',
              finished: true,
              _headerSent: true,
              _closed: false,
              socket: Socket {
                connecting: false,
                _hadError: false,
                _parent: null,
                _host: 'api.forismatic.com',
                _closeAfterHandlingError: false,
                _readableState: [ReadableState],
                _events: [Object: null prototype],
                _eventsCount: 7,
                _maxListeners: undefined,
                _writableState: [WritableState],
                allowHalfOpen: false,
                _sockname: null,
                _pendingData: null,
                _pendingEncoding: '',
                server: null,
                _server: null,
                parser: null,
                _httpMessage: [Circular *1],
                [Symbol(async_id_symbol)]: 1279,
                [Symbol(kHandle)]: [TCP],
                [Symbol(lastWriteQueueSize)]: 0,
                [Symbol(timeout)]: null,
                [Symbol(kBuffer)]: null,
                [Symbol(kBufferCb)]: null,
                [Symbol(kBufferGen)]: null,
                [Symbol(kCapture)]: false,
                [Symbol(kSetNoDelay)]: true,
                [Symbol(kSetKeepAlive)]: true,
                [Symbol(kSetKeepAliveInitialDelay)]: 60,
                [Symbol(kBytesRead)]: 0,
                [Symbol(kBytesWritten)]: 0
              },
              _header: 'GET /api/1.0/?method=getQuote&format=json&lang=en HTTP/1.1\r\n' +
                'Accept: application/json, text/plain, */*\r\n' +
                'User-Agent: axios/0.27.2\r\n' +
                'Host: api.forismatic.com\r\n' +
                'Connection: close\r\n' +
                '\r\n',
              _keepAliveTimeout: 0,
              _onPendingData: [Function: nop],
              agent: Agent {
                _events: [Object: null prototype],
                _eventsCount: 2,
                _maxListeners: undefined,
                defaultPort: 80,
                protocol: 'http:',
                options: [Object: null prototype],
                requests: [Object: null prototype] {},
                sockets: [Object: null prototype],
                freeSockets: [Object: null prototype] {},
                keepAliveMsecs: 1000,
                keepAlive: false,
                maxSockets: Infinity,
                maxFreeSockets: 256,
                scheduling: 'lifo',
                maxTotalSockets: Infinity,
                totalSocketCount: 1,
                [Symbol(kCapture)]: false
              },
              socketPath: undefined,
              method: 'GET',
              maxHeaderSize: undefined,
              insecureHTTPParser: undefined,
              joinDuplicateHeaders: undefined,
              path: '/api/1.0/?method=getQuote&format=json&lang=en',
              _ended: true,
              res: IncomingMessage {
                _readableState: [ReadableState],
                _events: [Object: null prototype],
                _eventsCount: 4,
                _maxListeners: undefined,
                socket: [Socket],
                httpVersionMajor: 1,
                httpVersionMinor: 1,
                httpVersion: '1.1',
                complete: true,
                rawHeaders: [Array],
                rawTrailers: [],
                joinDuplicateHeaders: undefined,
                aborted: false,
                upgrade: false,
                url: '',
                method: null,
                statusCode: 200,
                statusMessage: 'OK',
                client: [Socket],
                _consuming: false,
                _dumped: false,
                req: [Circular *1],
                responseUrl: 'http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en',
                redirects: [],
                [Symbol(kCapture)]: false,
                [Symbol(kHeaders)]: [Object],
                [Symbol(kHeadersCount)]: 24,
                [Symbol(kTrailers)]: null,
                [Symbol(kTrailersCount)]: 0
              },
              aborted: false,
              timeoutCb: null,
              upgradeOrConnect: false,
              parser: null,
              maxHeadersCount: null,
              reusedSocket: false,
              host: 'api.forismatic.com',
              protocol: 'http:',
              _redirectable: Writable {
                _writableState: [WritableState],
                _events: [Object: null prototype],
                _eventsCount: 3,
                _maxListeners: undefined,
                _options: [Object],
                _ended: true,
                _ending: true,
                _redirectCount: 0,
                _redirects: [],
                _requestBodyLength: 0,
                _requestBodyBuffers: [],
                _onNativeResponse: [Function (anonymous)],
                _currentRequest: [Circular *1],
                _currentUrl: 'http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=en',
                [Symbol(kCapture)]: false
              },
              [Symbol(kCapture)]: false,
              [Symbol(kBytesWritten)]: 0,
              [Symbol(kEndCalled)]: true,
              [Symbol(kNeedDrain)]: false,
              [Symbol(corked)]: 0,
              [Symbol(kOutHeaders)]: [Object: null prototype] {
                accept: [Array],
                'user-agent': [Array],
                host: [Array]
              },
              [Symbol(errored)]: null,
              [Symbol(kUniqueHeaders)]: null
            },
            data: {
              quoteText: 'We must learn our limits. We are all something, but none of us are everything. ',
              quoteAuthor: 'Blaise Pascal',
              senderName: '',
              senderLink: '',
              quoteLink: 'http://forismatic.com/en/22bd88b816/'
            }
          }
          [17.04.2023 09:18.46.929] [INFO]  Checking git for module: MMM-MyCalendar
          [17.04.2023 09:18.46.939] [INFO]  Newsfeed-Fetcher: Broadcasting 24 items.
          [17.04.2023 09:18.46.999] [INFO]  Checking git for module: MMM-GooglePhotos
          [17.04.2023 09:18.47.055] [ERROR] [MMM-OpenWeatherMapForecast] 17-Apr-23 09:18 ** unexpected response code ** 401
          [17.04.2023 09:18.47.102] [INFO]  Calendar-Fetcher: Broadcasting 0 events.
          [17.04.2023 09:18.47.110] [INFO]  Checking git for module: MMM-OpenWeatherMapForecast
          [17.04.2023 09:18.47.179] [INFO]  Calendar-Fetcher: Broadcasting 4 events.
          [17.04.2023 09:18.47.216] [INFO]  Checking git for module: MMM-WiFiPassword
          [17.04.2023 09:18.47.543] [INFO]  Calendar-Fetcher: Broadcasting 3 events.
          [17.04.2023 09:18.47.598] [INFO]  Checking git for module: MMM-Memo
          [17.04.2023 09:18.47.831] [INFO]  Calendar-Fetcher: Broadcasting 1 events.
          [17.04.2023 09:18.47.857] [INFO]  Checking git for module: MagicMirror
          [17.04.2023 09:18.49.035] [INFO]  Calendar-Fetcher: Broadcasting 2 events.
          [17.04.2023 09:18.50.022] [INFO]  Calendar-Fetcher: Broadcasting 4 events.
          
          
          
          S 1 Reply Last reply Apr 17, 2023, 2:28 PM Reply Quote 0
          • S Away
            sdetweil @croc_dad72
            last edited by Apr 17, 2023, 2:28 PM

            @croc_dad72 said in MMM-OpenWeatherMapForecast loading issue?:

            unexpected response code ** 401

            401 is access denied…

            so, wrong apikey for this

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            C 2 Replies Last reply Apr 17, 2023, 3:34 PM Reply Quote 0
            • C Offline
              croc_dad72 @sdetweil
              last edited by croc_dad72 Apr 17, 2023, 3:47 PM Apr 17, 2023, 3:34 PM

              @sdetweil Well don’t I feel stupid, I had forgot I had two different api’s should have tried that first, thanks again for helping a noob!

              1 Reply Last reply Reply Quote 1
              • C Offline
                croc_dad72 @sdetweil
                last edited by Apr 18, 2023, 1:32 PM

                Hey @sdetweil can you help me with one last thing? I can’t seem to figure out where this code gets put into the .css for adjusting the width of the module? Any guidance would be much appreciated!

                .MMM-OpenWeatherMapForecast .module-content {
                  width: 500px; /* adjust this to taste */
                }
                
                S 1 Reply Last reply Apr 18, 2023, 1:33 PM Reply Quote 0
                • S Away
                  sdetweil @croc_dad72
                  last edited by Apr 18, 2023, 1:33 PM

                  @croc_dad72 it goes in css/custom.css

                  if the file doesn’t exist, create it

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  C 1 Reply Last reply Apr 18, 2023, 1:35 PM Reply Quote 0
                  • C Offline
                    croc_dad72 @sdetweil
                    last edited by Apr 18, 2023, 1:35 PM

                    @sdetweil the file is there, I just can seem to figure out what line to put it at, I have tried a couple spots but all it does is kill the module?

                    S 1 Reply Last reply Apr 18, 2023, 1:36 PM Reply Quote 0
                    • S Away
                      sdetweil @croc_dad72
                      last edited by Apr 18, 2023, 1:36 PM

                      @croc_dad72 eh?

                      just edit the file with nano and add that stuff to the end on new lines

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      1 Reply Last reply Reply Quote 1
                      • 1
                      • 2
                      • 1 / 2
                      1 / 2
                      • First post
                        10/19
                        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