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

    bwente

    @bwente

    18
    Reputation
    533
    Profile views
    25
    Posts
    1
    Followers
    0
    Following
    Joined
    Last Online

    bwente Unfollow Follow
    • RE: Seymour — my modern take on the 3Com Audrey

      A quick follow-up with some well-deserved acknowledgements.

      Seymour may look like a standalone appliance, but it was made possible by the MagicMirror community and its wonderfully reusable ecosystem. Much of the project has been about connecting existing modules into a cohesive experience rather than reinventing everything from scratch.

      Special thanks to:

      Edward Shen for MMM-pages, which provides the underlying page and channel system.
      Tom Hirschberger for MMM-GPIO-Notifications, which connects Seymour’s rotary encoder to MagicMirror.
      Jopyth and contributors for MMM-Remote-Control, which makes remote administration and updates easier.
      shbatm for projects including MMM-KeyBindings and MMM-RTSPStream.
      MMRIZE for MMM-CalendarExt3 and MMM-CalendarExt3Agenda.

      The MagicMirror team and every module author whose work helped turn this experiment into a functioning appliance.

      Seymour also builds on WLED, Home Assistant, and Raspberry Pi—another reminder of how much becomes possible when open-source projects are designed to work together.

      I have added a few pieces for the Audrey experience, including the timer, centralized messages, themes, channel navigation, and LED attention behavior. But Seymour’s foundation belongs to the broader community.

      Thank you to everyone who created, maintained, documented, tested, or answered questions about these projects. Seymour would not exist without your work.

      posted in Show your Mirror
      B
      bwente
    • Seymour — my modern take on the 3Com Audrey

      I’ve been working on a small ambient information appliance called Seymour.

      The inspiration is the original 3Com Audrey internet appliance. Seymour is built around a Raspberry Pi, a 7-inch touchscreen, a rotary encoder, an illuminated WLED ring, an internal speaker, and a 3D-printed enclosure. I chose MagicMirror because its module ecosystem already provides most of the useful building blocks.

      Instead of presenting everything as one dashboard, Seymour organizes modules into channels. Pressing the encoder opens the channel selector, rotating chooses a channel, and pressing again opens it. The touchscreen is also available.

      IMG_9332_normalized.jpg

      The current prototype includes clock, weather, news, calendar, messages, a kitchen timer, and local music playback through Music Assistant. The LED ring provides status and attention feedback, while the speaker handles music and timer sounds.

      IMG_9334_normalized.jpg IMG_9337_normalized.jpg IMG_9333_normalized.jpg IMG_9330_normalized.jpg

      It is still a working prototype, although it may already be close to the finished personal appliance I wanted. I’m continuing to polish the documentation and software before making the repositories public.

      posted in Show your Mirror
      B
      bwente
    • MMM-KitchenTimer - Touch-friendly countdown timer

      Description:

      A newly refreshed fork of MMM-KitchenTimer, a responsive, touch-friendly countdown timer for MagicMirror².

      It provides a large countdown display, configurable quick-duration presets, and accessible controls for touch, mouse, and keyboard. Tap the time display to pause or resume the countdown, and use the Reset or Dismiss control to cancel the timer or silence its alarm.

      The module supports compact and full-screen layouts, optional alarm and button sounds, and reliable wall-clock timing. Active timers continue running and can finish while the module is hidden by page-management modules such as MMM-pages.

      MMM-KitchenTimer also provides incoming and outgoing MagicMirror notifications. Other modules can start, add time to, pause, resume, reset, or dismiss the timer. Semantic state notifications make it possible to integrate voice assistants, smart lights, MQTT bridges, physical controls, notification centers, and other automations without embedding hardware-specific behavior in the timer.

      This is a maintained fork of the module originally created by Tom Short, published with his permission. The original MIT attribution and existing configuration compatibility have been preserved.

      Screenshots:

      MMM-KitchenTimer screenshot.png

      Download:

      https://github.com/bwente/MMM-KitchenTimer

      Installation:

      cd ~/MagicMirror/modules
      git clone https://github.com/bwente/MMM-KitchenTimer.git
      

      Version 1.2.0

      • Added a configurable alarmVolume option
      • Alarm volume accepts values from 0 to 1 and remains independent of button feedback volume
      • Invalid alarm-volume values fall back safely to full volume
      • Improved outgoing notification semantics for smart-home integrations
      • Starting a timer from a preset now emits KITCHEN_TIMER_STARTED
      • Adding time to a running or paused timer continues to emit KITCHEN_TIMER_UPDATED
      • Makes it easier for MQTT, Home Assistant, Alexa, and other integrations to distinguish new timers from

      Version 1.1.0

      • Added Bulgarian, Danish, German, English, Spanish, French, Hungarian, Dutch, Russian, and Thai translations
      • Follow MagicMirror’s global language setting automatically
      • Added localized controls, status messages, and accessibility labels
      • Preserve keyboard and touchscreen focus while the timer display updates
      • Added stable control identifiers for external integrations
      • Expanded automated test coverage

      Version 1.0.1

      • Keep active timers and completion events running while hidden
      • Improve compatibility with page-management modules such as MMM-pages

      Version 1.0.0

      • Modernized the original module as a maintained MagicMirror² module
      • Added large, touch-friendly controls
      • Added configurable quick-duration presets
      • Added tap-to-pause and resume behavior
      • Added compact and full-screen layouts
      • Added incoming timer-control notifications
      • Added outgoing semantic state and progress notifications
      • Preserved the original configuration options and MIT attribution
      posted in Utilities timer touch kitchen
      B
      bwente
    • RE: MMM-KitchenTimer - Touch-friendly countdown timer

      @Niggich Update the module and it will use you language setting in your overall config.

      posted in Utilities
      B
      bwente
    • Updating Compliments using a spreadsheet

      I just discovered MagicMirror last week and got things setup this weekend. It has been a blast trying out new modules. A big thank you to everyone in the community that has given their time.

      I am not a programmer and not much for command line. But I can follow instructions and copy and paste. I was looking for ways to update my mirror without having to touch terminal. I wanted an easy way to update my Compliments without making an JSON file by hand. I setup a new google sheets document.

      0_1502682132337_6dd2e42c-6148-44eb-907a-42fd5bace095-image.png

      Then published it.

      0_1502682216393_2dd17c70-16a4-4c55-b7f7-7f165b581226-image.png

      It turns out the JSON that google exports is not the JSON that Compliments needs. I tired my hand at jquery and html and got it to create the same format in the browser. But what is rendered in the browser window isn’t JSON either, it looks like it but it isn’t. I tried specifying the remotefile path as the html file that I made didn’t work.

      I then tried writing to the file system and javascript can’t do that in the browser either. Then I discovered that node.js can write a file. I converted my jquery JSON looper into a node file.

      0_1502683309962_mirror_snap.JPG

      I started this morning with my first javascript, and this afternoon my first node.js, now tonight I am trying to figure out how to best make it work. I have to manually run

      node remotefile.js
      

      config.js

      {
           module: 'compliments',
           position: 'lower_third',
           config: {
      	 remoteFile: 'remotefile.json'               
           }
      }
      

      And finally my noob code…

      'use strict';
      var request = require('request');
      
      var url = 'https://spreadsheets.google.com/feeds/list/YOUR_SECRET_SHEET_LINK_ID/od6/public/values?alt=json';
      var compliments = '';
      var anytime = '';
      var morning = '';
      var afternoon = '';
      var evening = '';
      
      request.get({
          url: url,
          json: true,
          headers: { 'User-Agent': 'request' }
      }, (err, res, data) => {
          if (err) {
              console.log('Error:', err);
          } else if (res.statusCode !== 200) {
              console.log('Status:', res.statusCode);
          } else {
              // data is already parsed as JSON:
              var entry = data.feed.entry;
      
              // anytime column
              anytime += '\t"anytime" : [\r\n';
              for (var i = 0; i < entry.length; i++) {
                  if (entry[i]['gsx$anytime']['$t']) {
                      anytime += '\t\t"' + entry[i]['gsx$anytime']['$t'] + '",\r\n';
                  }
              }
              anytime = anytime.replace(/,\s*$/, "") + '\r\n';
              anytime += '\t],\r\n';
      
              // morning column
              morning += '\t"morning" : [\r\n';
              for (var i = 0; i < entry.length; i++) {
                  if (entry[i]['gsx$morning']['$t']) {
                      morning += '\t\t"' + entry[i]['gsx$morning']['$t'] + '",\r\n';
                  }
              }
              morning = morning.replace(/,\s*$/, "") + '\r\n';
              morning += '\t],\r\n';
      
              // afternoon column
              afternoon += '\t"afternoon" : [\r\n';
              for (var i = 0; i < entry.length; i++) {
                  if (entry[i]['gsx$afternoon']['$t']) {
                      afternoon += '\t\t"' + entry[i]['gsx$afternoon']['$t'] + '",\r\n';
                  }
              }
              afternoon = afternoon.replace(/,\s*$/, "") + '\r\n';
              afternoon += '\t],\r\n';
      
              // evening column
              evening += '\t"evening" : [\r\n';
              for (var i = 0; i < entry.length; i++) {
                  if (entry[i]['gsx$evening']['$t']) {
                      evening += '\t\t"' + entry[i]['gsx$evening']['$t'] + '",\r\n';
                  }
              }
              evening = evening.replace(/,\s*$/, "") + '\r\n';
              evening += '\t]';
      
      
              compliments = '{\r\n' + anytime + morning + afternoon + evening + '\r\n}';
      
              var fs = require('fs');
              fs.writeFile("remotefile.json", compliments, function(err) {
                  if (err) {
                      return console.log(err);
                  }
      
                  console.log("The file was saved!");
              });
      
          }
      });
      

      I know the code could be a lot better. I also know I could use PHP to make it easier (just return JSON from the url). What would be the best MagicMirror way?

      posted in Development
      B
      bwente
    • RE: Seymour — my modern take on the 3Com Audrey

      @KristjanESPERANTO

      Thanks! Here is a look inside.

      ce64d846-ff5e-410b-b3b4-c4164ad46eff-image.jpeg

      It is definitely a little packed in there. The Raspberry Pi runs MagicMirror, with the rotary encoder as the main physical control. There is also a small D1 mini running WLED for the illuminated ring, plus the internal speakers and amplifier.

      A lot of the fun has been making all of those pieces work together. Turning and pressing the dial controls the channel selector, the LED ring can change based on status or notifications, and Home Assistant ties into it for messages and other events.

      The enclosure is 3D printed and has gone through quite a few revisions to get everything to fit. Still needs a revision to fit my hands!

      I am still cleaning up the code and documentation, but I am happy to share more of the hardware, wiring, software setup, or some of the failed prototypes if anyone is interested.

      posted in Show your Mirror
      B
      bwente
    • RE: MMM-KitchenTimer - Touch-friendly countdown timer

      @Niggich Thanks! For bottom_right, try enabling the module’s built-in compact layout:

      {
        module: "MMM-KitchenTimer",
        position: "bottom_right",
        config: {
          compact: true,
        },
      },
      
      posted in Utilities
      B
      bwente
    • RE: Strava weekinbike & lastactivitymap

      @JMac For simple modules you should be able to clone it from github.

      cd ~/MagicMirror/modules
      git clone https://github.com/bwente/MMM-KitchenTimer.git
      
      posted in Troubleshooting
      B
      bwente
    • RE: Unifi doorbell video shown on MM when bell rung

      I did something similar with my Reolink doorbell, but used Home Assistant as the middleman.

      When motion is detected, Home Assistant grabs a snapshot and sends it to MagicMirror. I use MMM-MessageCenter to display the notification and keep the snapshot in the message history, so I can still see who was at the door afterward.

      8bc1bd39-c9be-42ff-bad6-c864b697f8e5-image.jpeg

      I went with snapshots rather than live video since it is lightweight and, for my use, I mostly just wanted to see who came to the door.

      posted in Show your Mirror
      B
      bwente
    • RE: ReferenceError: primordials is not defined

      I tried to do a simple update that did not work.

      This fixed it. https://github.com/nodesource/distributions/blob/master/README.md

      I also lost electron somehow, once that was installed everything is back. Thank you.

      posted in Troubleshooting
      B
      bwente
    • RE: MMM-KitchenTimer - Touch-friendly countdown timer

      @Niggich looks like trigger.payload_json.remainingSeconds is empty or double quoted. Can you view just the payload and see?

      posted in Utilities
      B
      bwente
    • RE: Seymour — my modern take on the 3Com Audrey

      BTW MMM-WeatherHero is a great module for this. It looks right at home.

      8fc94368-ebaa-4459-92e5-0601d10a8eff-image.jpeg

      posted in Show your Mirror
      B
      bwente
    • RE: MMM-KitchenTimer - Touch-friendly countdown timer

      @Niggich said:

      My Echo know I want to start a Timer but it’s asking for how long.

      Great, now that you’ve confirmed MQTT is working, the next step is to add the Home Assistant automation.

      alias: MagicMirror kitchen timer started
      triggers:
        - trigger: mqtt
          topic: magicmirror/kitchen-timer/started
      
      actions:
        - action: media_player.play_media
          target:
            entity_id: media_player.kitchen_echo
          data:
            media_content_type: custom
            media_content_id: >-
              set a timer for
              {{ trigger.payload_json.remainingSeconds | int }}
              seconds
      

      I think that will work. I don’t know if it needs to be escaped or not.

      posted in Utilities
      B
      bwente
    • RE: Strava weekinbike & lastactivitymap

      @JMac For simple modules you should be able to clone it from github.

      cd ~/MagicMirror/modules
      git clone https://github.com/bwente/MMM-KitchenTimer.git
      
      posted in Troubleshooting
      B
      bwente
    • RE: MMM-KitchenTimer - Touch-friendly countdown timer

      @Niggich

      Something like this for your MMM-MQTTbridge config on your mirror.

      {
        module: "MMM-MQTTbridge",
        disabled: false,
        config: {
          mqttServer: "mqtt://USERNAME:PASSWORD@192.168.1.10:1883",
          stringifyPayload: true,
      
          mqttConfig: {
            // This example only sends MagicMirror events to MQTT.
            listenMqtt: false,
            interval: 300000,
          },
      
          notiConfig: {
            listenNoti: true,
            ignoreNotiId: ["CLOCK_MINUTE", "CLOCK_SECOND", "NEWS_FEED"],
            ignoreNotiSender: ["system"],
            qos: 0,
          },
        },
      },
      

      then edit

      ~/MagicMirror/modules/MMM-MQTTbridge/dict/notiDictionary.js
      
      var notiHook = [
        {
          notiId: "KITCHEN_TIMER_STARTED",
          notiPayload: [
            {
              notiMqttCmd: ["Kitchen timer started"],
            },
          ],
        },
      ];
      
      var notiMqttCommands = [
        {
          commandId: "Kitchen timer started",
          mqttTopic: "magicmirror/kitchen-timer/started",
          stringifyPayload: true,
          retain: false,
          qos: 0,
        },
      ];
      
      module.exports = { notiHook, notiMqttCommands };
      

      after restarting your mirror you should be able to listen for the topic: magicmirror/kitchen-timer/started in Home Assistant developer tools.

      posted in Utilities
      B
      bwente
    • RE: Unifi doorbell video shown on MM when bell rung

      I did something similar with my Reolink doorbell, but used Home Assistant as the middleman.

      When motion is detected, Home Assistant grabs a snapshot and sends it to MagicMirror. I use MMM-MessageCenter to display the notification and keep the snapshot in the message history, so I can still see who was at the door afterward.

      8bc1bd39-c9be-42ff-bad6-c864b697f8e5-image.jpeg

      I went with snapshots rather than live video since it is lightweight and, for my use, I mostly just wanted to see who came to the door.

      posted in Show your Mirror
      B
      bwente
    • RE: Seymour — my modern take on the 3Com Audrey

      @KristjanESPERANTO

      Thanks! Here is a look inside.

      ce64d846-ff5e-410b-b3b4-c4164ad46eff-image.jpeg

      It is definitely a little packed in there. The Raspberry Pi runs MagicMirror, with the rotary encoder as the main physical control. There is also a small D1 mini running WLED for the illuminated ring, plus the internal speakers and amplifier.

      A lot of the fun has been making all of those pieces work together. Turning and pressing the dial controls the channel selector, the LED ring can change based on status or notifications, and Home Assistant ties into it for messages and other events.

      The enclosure is 3D printed and has gone through quite a few revisions to get everything to fit. Still needs a revision to fit my hands!

      I am still cleaning up the code and documentation, but I am happy to share more of the hardware, wiring, software setup, or some of the failed prototypes if anyone is interested.

      posted in Show your Mirror
      B
      bwente
    • RE: MMM-KitchenTimer - Touch-friendly countdown timer

      @Niggich On the HA side you would listen for the timer topic.

      alias: Start Echo timer from MagicMirror
      triggers:
        - trigger: mqtt
          topic: magicmirror/kitchen-timer/started
      
      actions:
        - action: media_player.play_media
          target:
            entity_id: media_player.kitchen_echo
          data:
            media_content_type: custom
            media_content_id: >-
              set a timer for
              {{ trigger.payload_json.remainingSeconds | int }}
              seconds
      
      posted in Utilities
      B
      bwente
    • RE: Seymour — my modern take on the 3Com Audrey

      A quick follow-up with some well-deserved acknowledgements.

      Seymour may look like a standalone appliance, but it was made possible by the MagicMirror community and its wonderfully reusable ecosystem. Much of the project has been about connecting existing modules into a cohesive experience rather than reinventing everything from scratch.

      Special thanks to:

      Edward Shen for MMM-pages, which provides the underlying page and channel system.
      Tom Hirschberger for MMM-GPIO-Notifications, which connects Seymour’s rotary encoder to MagicMirror.
      Jopyth and contributors for MMM-Remote-Control, which makes remote administration and updates easier.
      shbatm for projects including MMM-KeyBindings and MMM-RTSPStream.
      MMRIZE for MMM-CalendarExt3 and MMM-CalendarExt3Agenda.

      The MagicMirror team and every module author whose work helped turn this experiment into a functioning appliance.

      Seymour also builds on WLED, Home Assistant, and Raspberry Pi—another reminder of how much becomes possible when open-source projects are designed to work together.

      I have added a few pieces for the Audrey experience, including the timer, centralized messages, themes, channel navigation, and LED attention behavior. But Seymour’s foundation belongs to the broader community.

      Thank you to everyone who created, maintained, documented, tested, or answered questions about these projects. Seymour would not exist without your work.

      posted in Show your Mirror
      B
      bwente
    • Seymour — my modern take on the 3Com Audrey

      I’ve been working on a small ambient information appliance called Seymour.

      The inspiration is the original 3Com Audrey internet appliance. Seymour is built around a Raspberry Pi, a 7-inch touchscreen, a rotary encoder, an illuminated WLED ring, an internal speaker, and a 3D-printed enclosure. I chose MagicMirror because its module ecosystem already provides most of the useful building blocks.

      Instead of presenting everything as one dashboard, Seymour organizes modules into channels. Pressing the encoder opens the channel selector, rotating chooses a channel, and pressing again opens it. The touchscreen is also available.

      IMG_9332_normalized.jpg

      The current prototype includes clock, weather, news, calendar, messages, a kitchen timer, and local music playback through Music Assistant. The LED ring provides status and attention feedback, while the speaker handles music and timer sounds.

      IMG_9334_normalized.jpg IMG_9337_normalized.jpg IMG_9333_normalized.jpg IMG_9330_normalized.jpg

      It is still a working prototype, although it may already be close to the finished personal appliance I wanted. I’m continuing to polish the documentation and software before making the repositories public.

      posted in Show your Mirror
      B
      bwente