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-TelegramBot : Control MM on Telegram

    Scheduled Pinned Locked Moved System
    47 Posts 20 Posters 20.7k Views 21 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.
    • ? Offline
      A Former User @krisalexroberts
      last edited by

      @krisalexroberts By pledging? :)

      1 Reply Last reply Reply Quote 0
      • michael5rM Offline
        michael5r Module Developer
        last edited by

        This is a great module - I’m adding Telegram support to all my modules shortly :thumbs_up:

        1 Reply Last reply Reply Quote 0
        • lolobyteL Offline
          lolobyte
          last edited by lolobyte

          Hello,

          can somebody help me with this module?

          here is my config.js entry including the MMM-Tools. Tools are running very well.

                         {
                                  module: 'MMM-Tools',
                                  position: 'bottom_right',
                                  config: {
                                          device : "RPI", // "RPI" is also available
                                          refresh_interval_ms : 10000,
                                          warning_interval_ms : 1000 * 60 * 5,
                                          enable_warning : true,
                                          warning : {
                                                  CPU_TEMPERATURE : 65,
                                                  GPU_TEMPERATURE : 65,
                                                  CPU_USAGE : 75,
                                                  STORAGE_USED_PERCENT : 80,
                                                  MEMORY_USED_PERCENT : 80
                                                  },
                                          warning_text: {
                                                  CPU_TEMPERATURE : "The temperature of CPU is over %VAL%",
                                                  GPU_TEMPERATURE : "The temperature of GPU is over %VAL%",
                                                  CPU_USAGE : "The usage of CPU is over %VAL%",
                                                  STORAGE_USED_PERCENT : "The storage is used over %VAL% percent",
                                                  MEMORY_USED_PERCENT : "The memory is used over %VAL% percent",
                                                  },
                                          },
                          },
                          {
                                  module: 'MMM-TelegramBot',
                                  config: {
                                          telegramAPIKey : 'xxxxxxxxxxxxxxxmy_API_keyxxxxxxxxxxxxxxxxxxxx',
                                          allowedUser : ['my_Telegram_username without @'], // This is NOT the username of bot.
                                          },
                          },
          
          

          The logs of MM2!

          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   chat_id: undefined,
          0|mm  |   text: 'Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.' }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   chat_id: undefined,
          0|mm  |   text: 'Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.' }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"chat_id\\":null,\\"text\\":\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\"}\\n```","option":{"disable_notification":false,"parse_mode":"Markdown","chat_id":"","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"chat_id\\":null,\\"text\\":\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\"}\\n```"}}\n```',
          0|mm  |   option:
          0|mm  |    { disable_notification: false,
          0|mm  |      parse_mode: 'Markdown',
          0|mm  |      chat_id: '',
          0|mm  |      text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"chat_id\\":null,\\"text\\":\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\"}\\n```","option":{"disable_notification":false,"parse_mode":"Markdown","chat_id":"","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"chat_id\\":null,\\"text\\":\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\"}\\n```"}}\n```' } }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   chat_id: undefined,
          0|mm  |   text: 'Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.' }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","chat_id":null,"text":"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren."}\n```',
          0|mm  |   option:
          0|mm  |    { disable_notification: false,
          0|mm  |      parse_mode: 'Markdown',
          0|mm  |      chat_id: '',
          0|mm  |      text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","chat_id":null,"text":"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren."}\n```' } }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   chat_id: undefined,
          0|mm  |   text: 'Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.' }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\",\\"option\\":{\\"disable_notification\\":false,\\"parse_mode\\":\\"Markdown\\",\\"chat_id\\":\\"\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\"}}\\n```","option":{"disable_notification":false,"parse_mode":"Markdown","chat_id":"","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\",\\"option\\":{\\"disable_notification\\":false,\\"parse_mode\\":\\"Markdown\\",\\"chat_id\\":\\"\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\"}}\\n```"}}\n```',
          0|mm  |   option:
          0|mm  |    { disable_notification: false,
          0|mm  |      parse_mode: 'Markdown',
          0|mm  |      chat_id: '',
          0|mm  |      text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\",\\"option\\":{\\"disable_notification\\":false,\\"parse_mode\\":\\"Markdown\\",\\"chat_id\\":\\"\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\"}}\\n```","option":{"disable_notification":false,"parse_mode":"Markdown","chat_id":"","text":"`ERROR`\\n```\\nBad Request: chat_id is empty\\n```\\nat\\n```\\n{\\"type\\":\\"TEXT\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\",\\"option\\":{\\"disable_notification\\":false,\\"parse_mode\\":\\"Markdown\\",\\"chat_id\\":\\"\\",\\"text\\":\\"`ERROR`\\\\n```\\\\nBad Request: chat_id is empty\\\\n```\\\\nat\\\\n```\\\\n{\\\\\\"type\\\\\\":\\\\\\"TEXT\\\\\\",\\\\\\"chat_id\\\\\\":null,\\\\\\"text\\\\\\":\\\\\\"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.\\\\\\"}\\\\n```\\"}}\\n```"}}\n```' } }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren."}\n```',
          0|mm  |   option:
          0|mm  |    { disable_notification: false,
          0|mm  |      parse_mode: 'Markdown',
          0|mm  |      chat_id: '',
          0|mm  |      text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren."}\n```' } }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   chat_id: undefined,
          0|mm  |   text: 'Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.' }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren."}\n```',
          0|mm  |   option:
          0|mm  |    { disable_notification: false,
          0|mm  |      parse_mode: 'Markdown',
          0|mm  |      chat_id: '',
          0|mm  |      text: '`ERROR`\n```\nBad Request: chat_id is empty\n```\nat\n```\n{"type":"TEXT","text":"Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren."}\n```' } }
          0|mm  | [TELBOT] Error: ETELEGRAM
          0|mm  | { ok: false,
          0|mm  |   error_code: 400,
          0|mm  |   description: 'Bad Request: chat_id is empty' }
          0|mm  | ERR_RESPONSE { type: 'TEXT',
          0|mm  |   chat_id: undefined,
          0|mm  |   text: 'Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren.' }
          ^C
          
          

          and it’s never ending.

          What is wrong?

          ? 1 Reply Last reply Reply Quote 0
          • ? Offline
            A Former User @lolobyte
            last edited by

            @lolobyte
            Your telegrambot config is not completed. Read instructions of module on github

            1 Reply Last reply Reply Quote 0
            • lolobyteL Offline
              lolobyte
              last edited by

              Hi, i know.

              But ongoing with step 4 is not possible because Telegranm don’t know the /commands or the /mychatid command!

              This is the reson why i don’t have actually the adminChatId.

              ? 1 Reply Last reply Reply Quote 0
              • ? Offline
                A Former User @lolobyte
                last edited by A Former User

                @lolobyte
                To make things simple, Disable other modules except MMM-TelegramBot.
                Then execute MM again. Show me which logs are displayed.

                1 Reply Last reply Reply Quote 0
                • lolobyteL Offline
                  lolobyte
                  last edited by lolobyte

                  OK, here the new config .js only with telegram module.

                          units: "metric",
                  
                          modules: [
                  //              {
                  //                      module: 'MMM-Tools',
                  //                      position: 'top_right',
                  //                      config: {
                  //                              device : "RPI", // "RPI" is also available
                  //                              refresh_interval_ms : 10000,
                  //                              warning_interval_ms : 1000 * 60 * 5,
                  //                              enable_warning : true,
                  //                              warning : {
                  //                                      CPU_TEMPERATURE : 65,
                  //                                      GPU_TEMPERATURE : 65,
                  //                                      CPU_USAGE : 75,
                  //                                      STORAGE_USED_PERCENT : 80,
                  //                                      MEMORY_USED_PERCENT : 80
                  //                                      },
                  //                              warning_text: {
                  //                                      CPU_TEMPERATURE : "The temperature of CPU is over %VAL%",
                  //                                      GPU_TEMPERATURE : "The temperature of GPU is over %VAL%",
                  //                                      CPU_USAGE : "The usage of CPU is over %VAL%",
                  //                                      STORAGE_USED_PERCENT : "The storage is used over %VAL% percent",
                  //                                      MEMORY_USED_PERCENT : "The memory is used over %VAL% percent",
                  //                                      },
                  //                              },
                  //              },
                                  {
                                          module: 'MMM-TelegramBot',
                                          config: {
                                                  telegramAPIKey :  'xxxxxxxxxxxxxxxmy_API_keyxxxxxxxxxxxxxxxxxxxx',
                                                  allowedUser : ['my_Telegram_username without @'], // This is NOT the username of bot.
                                                  },
                                  },
                          ]
                  
                  };
                  
                  /*************** DO NOT EDIT THE LINE BELOW ***************/
                  if (typeof module !== "undefined") {module.exports = config;}
                  
                  

                  and here the log data.

                  pi@raspi-MM2:~ $ pm2 logs mm
                  [TAILING] Tailing last 15 lines for [mm] process (change the value with --lines option)
                  /home/pi/.pm2/logs/mm-error.log last 15 lines:
                  0|mm       |     at Request.emit (events.js:214:7)
                  0|mm       |     at Request.<anonymous> (/home/pi/MagicMirror/modules/MMM-iCloud-Client/node_modules/request/request.js:1161:10          )
                  0|mm       |     at emitOne (events.js:116:13)
                  0|mm       |     at Request.emit (events.js:211:7)
                  0|mm       |     at IncomingMessage.<anonymous> (/home/pi/MagicMirror/modules/MMM-iCloud-Client/node_modules/request/request.js          :1083:12)
                  0|mm       |     at Object.onceWrapper (events.js:313:30)
                  0|mm       | TypeError: PythonShell is not a constructor
                  0|mm       |     at Class.loadDataFromAPI (/home/pi/MagicMirror/modules/MMM-FRITZ-Box-Callmonitor/node_helper.js:216:17)
                  0|mm       |     at Class.socketNotificationReceived (/home/pi/MagicMirror/modules/MMM-FRITZ-Box-Callmonitor/node_helper.js:69:          9)
                  0|mm       |     at Socket.<anonymous> (/home/pi/MagicMirror/modules/node_modules/node_helper/index.js:113:11)
                  0|mm       |     at emitTwo (events.js:126:13)
                  0|mm       |     at Socket.emit (events.js:214:7)
                  0|mm       |     at /home/pi/MagicMirror/node_modules/socket.io/lib/socket.js:528:12
                  0|mm       |     at _combinedTickCallback (internal/process/next_tick.js:131:7)
                  0|mm       |     at process._tickCallback (internal/process/next_tick.js:180:9)
                  
                  /home/pi/.pm2/logs/mm-out.log last 15 lines:
                  0|mm       | starting network connection testing
                  0|mm       | starting network connection testing
                  0|mm       | Serving iCal
                  0|mm       | starting network connection testing
                  0|mm       | starting network connection testing
                  0|mm       | starting network connection testing
                  0|mm       | starting network connection testing
                  0|mm       | starting network connection testing
                  0|mm       | Serving iCal
                  0|mm       | starting network connection testing
                  0|mm       | starting network connection testing
                  0|mm       |
                  0|mm       | > magicmirror@2.6.0 start /home/pi/MagicMirror
                  0|mm       | > sh run-start.sh
                  0|mm       |
                  
                  0|mm  | Starting MagicMirror: v2.6.0
                  0|mm  | Loading config ...
                  0|mm  | Loading module helpers ...
                  0|mm  | Initializing new module helper ...
                  0|mm  | Module helper loaded: MMM-TelegramBot
                  0|mm  | All module helpers loaded.
                  0|mm  | Starting server on port 8080 ...
                  0|mm  | Server started ...
                  0|mm  | Connecting socket for: MMM-TelegramBot
                  0|mm  | Sockets connected & modules started ...
                  0|mm  | Launching application.
                  
                  
                  

                  the /commands or the /mychatid command doesn’t work.

                  second time restartin MM2

                  pi@raspi-MM2:~ $ pm2 logs mm
                  [TAILING] Tailing last 15 lines for [mm] process (change the value with --lines option)
                  /home/pi/.pm2/logs/mm-error.log last 15 lines:
                  0|mm       |         _started: true,
                  0|mm       |         href: 'https://api.telegram.org/bot%3C718051157:AAFqI9VPBUE5W0FTYeZi770CWaq9mLYEBEQ%3E/getUpdates',
                  0|mm       |         req: [Object],
                  0|mm       |         ntick: true,
                  0|mm       |         response: [Circular],
                  0|mm       |         originalHost: 'api.telegram.org',
                  0|mm       |         originalHostHeaderName: 'host',
                  0|mm       |         responseContent: [Circular],
                  0|mm       |         _destdata: true,
                  0|mm       |         _ended: true,
                  0|mm       |         _callbackCalled: true },
                  0|mm       |      toJSON: [Function: responseToJSON],
                  0|mm       |      caseless: Caseless { dict: [Object] },
                  0|mm       |      read: [Function],
                  0|mm       |      body: { ok: false, error_code: 404, description: 'Not Found' } } }
                  
                  
                  ? 1 Reply Last reply Reply Quote 0
                  • ? Offline
                    A Former User @lolobyte
                    last edited by

                    @lolobyte More error logs are needed. your mm-error.log is showing just last 15 lines.
                    If your file is too long, send me via email : eouia0819@gmail.com.
                    And If you don’t mind, send me your TelegramAPIKey also. (You can make new thing after my researching)

                    1 Reply Last reply Reply Quote 0
                    • lolobyteL Offline
                      lolobyte
                      last edited by lolobyte

                      I searche’d the log files and has found this 2:
                      /home/pi/.pm2/logs/mm-error.log
                      /home/pi/.pm2/logs/mm-out.log

                      mm-error.log is empty

                      mm-out.log

                      
                      > magicmirror@2.6.0 start /home/pi/MagicMirror
                      > sh run-start.sh
                      
                      Starting MagicMirror: v2.6.0
                      Loading config ...
                      Loading module helpers ...
                      Initializing new module helper ...
                      Module helper loaded: MMM-TelegramBot
                      All module helpers loaded.
                      Starting server on port 8080 ...
                      Server started ...
                      Connecting socket for: MMM-TelegramBot
                      Sockets connected & modules started ...
                      Launching application.
                      Shutting down server...
                      Stopping module helper: MMM-TelegramBot
                      
                      > magicmirror@2.6.0 start /home/pi/MagicMirror
                      > sh run-start.sh
                      
                      Starting MagicMirror: v2.6.0
                      Loading config ...
                      Loading module helpers ...
                      Initializing new module helper ...
                      Module helper loaded: MMM-TelegramBot
                      All module helpers loaded.
                      Starting server on port 8080 ...
                      Server started ...
                      Connecting socket for: MMM-TelegramBot
                      Sockets connected & modules started ...
                      Launching application.
                      
                      
                      
                      
                      
                      ? 1 Reply Last reply Reply Quote 0
                      • ? Offline
                        A Former User @lolobyte
                        last edited by

                        @lolobyte
                        Well,

                        mm-error.log is empty

                        mm-out.log

                        It means there’s no error in module on installation phase or running phase.
                        So I have to represent your issue but it might be related your account specific. So I need your TelegramBotAPI Key to represent your issue. Without it, I can help you only limitedly.

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 2 / 5
                        • 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