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

    Erik Jan

    @evroom

    MagicMirror version: 2.33.0
    Raspberry Pi 4 Model B Rev 1.5 (8 GB RAM)
    Raspbian GNU/Linux 12 (bookworm)

    53
    Reputation
    2.7k
    Profile views
    499
    Posts
    2
    Followers
    0
    Following
    Joined
    Last Online

    evroom Unfollow Follow
    Project Sponsor

    Best posts made by evroom

    • RE: I am stuck need help

      @dcarls91
      I understand that in the beginning the amount information can be overwhelming, but how are you going to find out what you are doing when you scrape your project?
      Especially when you are so close in getting the ‘Mirror’ started; just a few characters are missing in the config file.
      The community here is very active and very helpful and can step down a nodge when it is getting too technical.
      Of course it is expected that you have a certain level of knowledge or that you are willing to obtain that level.

      Besides spending several hours, did you spend any money on equipment, etc?

      If you decide to give it a last effort, then it would help to tell us on what platform your Mirror is running (Raspberry, PC, Ubuntu, etc) and it would help to report back with a bit more details (other than I tried and it did not work).
      And if someone tells you to perform action XYZ and you have no idea what the heck XYZ is or how to execute, then don’t be afraid to say so.

      The suggestions given, like try it module by module and the config check are very useful (I guess everyone was in this position, I know I was) and will solve your issues.

      If you decide to move away from Magic Mirror, then I respect that, but perhaps you will reconsider.

      Disclaimer: I do not have any shares in the project and am by no means an expert. Just reaching out. :-)

      posted in Troubleshooting
      evroomE
      evroom
    • RE: MMM-MPlayer

      @myfingersarecold said in MMM-MPlayer:

      I don’t feel like actually uploading it to github, but here is the source code, and an example config.

      I took the liberty to take the provided code, make changes to it and make it available as a public repository:

      https://github.com/evroom/MMM-MPlayer

      My own main purpose for using it, is to setup a new Raspberry Pi (Raspberry Pi 4 Model B), with Debian 12 (bookworm) and the latest MM version (2.30.0).
      Replacing a Pi 3b 32-bit Debian 10 buster setup where OMXPlayer is still working.
      I will be using a single window with a single RTSP stream (for an Axis Network Camera).
      Nothing fancy.

      Best regards,

      E.J.

      posted in Utilities
      evroomE
      evroom
    • RE: MMM-PublicTransportHafas: Service Temporarily Unavailable

      @KristjanESPERANTO

      I did the update and it is looking much better now.
      I reverted back to db (npm run query dbis working again).
      Only one thing I noticed:

      MMM-PublicTransportHafas_20250112_001.png

      On display (last update 11:15)
      11:08 +1.0333333333333334
      11:28 +0

      The 11:08 entry is in the past (maxUnreachableDepartures: 2,).
      The +1.0333333333333334 is a bit too much :-)

      posted in Troubleshooting
      evroomE
      evroom
    • RE: CANNOT ADD MODULES

      Hi,

      For beginners, the catchphrase is “JSON syntax”.
      There are many articles to be found, both short and lengthy.
      A small article would be:
      https://restfulapi.net/json-syntax/

      The main things to look for in your config.js file are:

      • does every [ have a matching ]
      • are all arrays separated by a , (the last array does not need a ,)
      • does every { have a matching }
      • are all objects separated by a , (the last object does not need a ,)
      • is every name value pair separated by a ,

      The syntax checker will try to find out if this syntax is correct and tries to predict where the error could be.
      So, when it says it saw a [ and it cannot find a matching ] it tells you what was expected and what it saw.

      Try to format you config.js to make it more visible.
      For example this:

      [{},{}],[{},{[]}]
      

      is better written like this:

      [
        {},
        {}
      ],
      [
        {
        },
        {
          [
          ]
        }
      ]
      

      Pairs of [ ]and { } are better visible like this.

      Good luck :-)

      posted in Troubleshooting
      evroomE
      evroom
    • RE: MMM-MPlayer

      @KristjanESPERANTO said in MMM-MPlayer:

      @evroom Nice! 🚀 Please add it to the module list 🙂

      Done.

      posted in Utilities
      evroomE
      evroom
    • RE: Cronjob

      @CyruS1337 said in Cronjob:

      I have always used the command sudo crontab -e and with this it did not work.

      Just to clarify.

      Normally you are user pi: $ who am I

      So crontab -e will work for the pi user.
      Using sudo crontab -e will change the crontab for the root user.

      Now how can you tell what is what ?

      For the user pi:
      $ sudo crontab -l -u pi
      which is the same as
      $ crontab -l
      For the user root:
      $ sudo crontab -l -u root

      Furthermore, when you have activated the root crontab, then the command will run as root, in the root (/) directory.
      In this case pm2 reload command will search for the mm.sh script under / and will not find it.
      Whereas when activated the pi crontab, the mm.sh script will be searched in the /home/pi directory, where it should be, and it will work.

      Use pm2 show mmto show the details on mm under pm2.
      Then you will understand it better.

      Cron messages normally are directed to /var/log/cron.log, but on my system it is not directed:

      $ grep cron /etc/rsyslog.conf
      #cron.*				/var/log/cron.log
      

      To see the cron messages, when not in cron.log:

      $ tail -F /var/log/syslog | grep CRON
      

      [ On my system I see CRON messages for root, although I do not have root crontab entries. There is a crond running that runs alongside $ systemctl status cron.]

      Have fun :-)

      posted in Troubleshooting
      evroomE
      evroom
    • RE: MMM-Soccer - Standings, Schedules and Top Scorers

      It looks like I mixed up things.

      You have:
      MMM-soccer: uses api.football-data.org - api v1
      MagicMirror-FootballLeagues: api.football-data.org - api v1
      MMM-SoccerLiveScore: uses www.ta4-images.de

      Modules using api.football-data.org - api v1 - are not working and that leaves MMM-SoccerLiveScore as the only module working at this moment.

      Now … I promised to have a look at MMM-Soccer, which is MMM-soccer (small detail), to see if I can get v2 working.
      So I started with github (never used it before) and got MM working on my MacBook.
      Stupidly I got a copy of MMM-SoccerLiveScore and was surprised to see it working.
      Only then I realised that my comments were based on MagicMirror-FootballLeagues and not on MMM-Soccer.
      Not even speaking about MMM-SoccerLiveScore.

      Probably the heat-wave melted my brains, or what was left of it.

      What to do ?

      On the one hand we have MMM-SoccerLiveScore.
      Install it. Configure it. Run it. Go with it.
      Nothing needed.
      I have it running myself.

      Then we have MMM-soccer and MagicMirror-FootballLeagues.
      Both need to be adapted to run with api v2.
      MagicMirror-FootballLeagues, owner @master117, looks to be more up-to-date and a better start than MMM-soccer.
      It says to be a spin.off of MMM-SoccerLiveScore, but I do not know exactly why.
      And I do not know if an adapted MagicMirror-FootballLeagues will have more possibilities over the other(s).

      I might give it a try, just for the fun of it.

      posted in Sport
      evroomE
      evroom
    • RE: TV Tuner

      I got streaming from a Linux SAT receiver with enigma2 working, using the module MMM-RTSPStream-
      But you will need to supply a bit more information than rather ‘a TV tuner’.

      posted in Requests
      evroomE
      evroom
    • RE: [MMM-RTSPStream] - Video Streaming from Live Feeds & Security Cameras

      Hi,

      Quite happy with MMM-RTSPStream so far; thx to those that contributed to it.

      Next thing I am trying to use MMM-RTSPStream for, is streaming sat-tv from a Dreambox & VU+ receivers.
      I am able to stream a channel using:

      omxplayer --vol -3000 --win “0 0 480 320” --live http://192.168.178.28:8001/1:0:19:283D:3FB:1:C00000:0:0:0:

      It is not a rtsp stream, but it can use omxplayer for streaming.
      When I try to use MMM-iFrame, I can add the URL, but then it tries to open a program that can play mpg (and MagicMirror won’t start).
      When I use it to stream using my browser (on my PC), I have it open VLC player, but installing VLC on Raspberry (using HW acceleration) is quite an act, so I would prefer to use omxplayer.

      Could this be done ?

      I am not so familiar with JavaScript and CCS (yet), more a Perl guy, but am willing to assist and test-drive.

      posted in Utilities
      evroomE
      evroom
    • RE: show info from a webpage

      Probably there are better and possible simpler ways to get it done, but I do something similar using a Perl script and this module:
      https://github.com/eouia/MMM-HTMLBox
      The Perl script reads values and builds a HTML page.
      The module displays it on the Magic Mirror.
      A cron job makes it semi-static as it runs the script regularly.

      posted in Troubleshooting
      evroomE
      evroom

    Latest posts made by evroom

    • RE: Too many API calls in default weather module after update

      @perilax
      Or just a quick work-around as the default for updateInterval for openweathermap is 10 minutes anyway.
      Try to comment out those 2 lines with //.

      @kristjanesperanto
      Quick response; quick fix 👍

      posted in Troubleshooting
      evroomE
      evroom
    • RE: MMM-PublicTransportHub

      @KristjanESPERANTO said:
      I would be happy to hear your feedback.

      I’ve replaced the Hafas module with this new one and am currently testing it.
      Only using it for 1 S-Bahn to and from a single location.
      For the moment it looks to meet my needs.
      The only thing that I would like to additionally see, is the last 2 departures/arrivals in the past, but I think that is a limitation of the API.

      posted in Transport
      evroomE
      evroom
    • RE: Calendar CustomEvents

      @sdetweil said:

      @evroom keyword means find this(via regex) in the title, then work rest of customization . ONLY For events that find keyword string

      .* Means all events

      Yes, it is a double regex, right?
      First look if this an event title that you would like to change, then search for the string you want to replace.
      Still do not understand why the examples from the first post do not work, but for that we would need the exact event titles.

      {keyword: ‘this event’, transform: { search: ‘changed’, replace: ‘modified’}

      Event title: ‘we want this event to be changed’.
      New title: ‘we want this event to be modified’.

      Do you happen to know how to make the keyword case insensitive?
      string/i or m/string/i do not work.
      Neither does (?i)
      which means ‘match the reminder of the pattern with the i modifier.

      posted in Troubleshooting
      evroomE
      evroom
    • RE: Calendar CustomEvents

      @daportelli

      The comments in the code are very confusing, but I think I get it now, more or less.

      Try this:

      {keyword: '.*', transform: { search: 'Spotify', replace: 'Music'}},
      {keyword: '.*', transform: { search: 'Canterbury-Bankstown Bulldogs', replace: 'Bulldogs'},
      

      The keyword is the event title string you want to change, in format regex.
      The search is the substring that you want to replace, in format regex
      The replace is what will be replaced based on your search

      So in this case, let’s say the event title string is:
      ‘Spotify play list’
      Then you search the complete string (.*) for the substring from search and you replace it by the string from replace.
      Hence, the event title now becomes:
      ‘Music play list’

      I hope it is a little bit more clear.

      Should it not work, then please supply a event title and in short what you want to be replaced.

      posted in Troubleshooting
      evroomE
      evroom
    • RE: Calendar CustomEvents

      @daportelli said:

      https://fossa.com/resources/devops-tools/regex-tester/

      The ‘Regular Expression’ is your ‘search’ from the config line, hence ‘in Hamburg$’.
      The ‘Replacement Pattern’ is your ‘Replace’ from the config line, hence ‘’ (nothing)
      The ‘Test String’ is what is triggered by your ‘keyword’ so in this case ‘Geburtstag in Hamburg’ will trigger the search and replace.

      So, fill in:
      Regular Expression: in Hamburg$
      Test String: Geburtstag in Hamburg
      Replacement Pattern: ‘’

      Then your Match will be ‘in Hamburg’ and your Highlighted will be ‘Geburtstag’ (that what remains white).

      For testing search & replace on https://regex101.com, you will need to choose Function - Substitution on the left side.

      Regular Expression: .in.Hamburg$
      Test String: Geburtstag in Hamburg
      Substitution:
      This will result in: Geburtstag

      This will only match on ‘in Hamburg’, so to make it more flexible you will need to make use of so called grouping:
      Regular Expression: (Geburtstag).+$
      Substitution: $1
      This will result in: Geburtstag

      posted in Troubleshooting
      evroomE
      evroom
    • RE: MMM-Mplayer video issues

      @ge

      A pity it does not work for you.
      Strange that is only happens after a several hours
      But mplayer is rather old, perhaps that is the primary issue.

      Still, I tried it on my Pi 3b with 1Gb RAM and it runs well.
      It is 3 to 5 seconds lagging.
      Like the stream on my P4b with 8Gb.
      It also does not seem very memory hungry.

      Pi 3b is steaming now for over 2 hours, so I will need to look later again to see if it got messed up.
      The Pi 4b is streaming for 2 weeks straight now, without issues.

      To me it looks more like a camera issue, but if you say that other players have no issues …
      Somehow mplayer does not like your rtsp stream, or it is a combination of factors.

      I have found that there is a config file, where you can set options.
      Try out some options (need to restart MagicMirror after every change).
      For example try nocache first.
      Then try cache=65536.
      The option nosound is always good (can be set in the MMM-Mplayer options too, if not already done so).
      The bandwidth option is just a shot in the dark.

      $ vi ~/.mplayer/config
      # Write your default config options here!
      
      # No cache
      nocache=yes
      
      # Cache size in kBytes (4MB / 8MB / 16MB / 64MB)
      # cache=4096
      # cache=8192
      # cache=16384
      # cache=65536
      
      # Do not play/encode sound
      nosound=yes
      
      # Bandwidth (10MB / 100MB / 1000MB)
      # bandwidth=80000000
      bandwidth=100000000
      # bandwidth=1000000000
      

      What also can be the case, is that the windowSize is not matching your stream resolution.
      This can cause issues as it needs to recode this portion.
      Try:

      windowSize: { width: 960, height: 540 },
      

      for a 1920x1080 (16:9) stream.

      That is all I can think of.
      Good luck.

      posted in Troubleshooting
      evroomE
      evroom
    • RE: pm2 doesnt work with crontab

      @plainbroke said in pm2 doesnt work with crontab:

      @evroom,
      I get that nothing is found, when I run either of your suggestions.

      The journalctl -f shows the current activities.
      Simular to tail -f <filename>.
      So when there are none, you will see none.
      Use that when you know that a cron job is going to occur anytime soon.
      The --since "1 hour ago" searches for activities in the last hour.
      Change to, for example --since "24 hours ago" for activities in the last 24 hours.
      When nothing comes out, then indeed nothing happened (during the time period you are searching in).

      Other --since options:

      "today"
      "00:20"
      "2025-11-12"
      "2025-11-12 07:30:00"
      
      posted in Troubleshooting
      evroomE
      evroom
    • RE: pm2 doesnt work with crontab

      About /var/log/syslog.
      Debian does not use that anymore, already since a while.
      As far as I understand it, you will need to get familiar with journalctl.
      For cron jobs try this:

      $ journalctl --since "1 hour ago" --unit cron.service
      
      $ journalctl -f -u cron.service
      

      Happy hunting.

      posted in Troubleshooting
      evroomE
      evroom
    • RE: MMM-Hoymiles-Wifi

      @Jose1701

      No, sorry, no idea.
      What Sam says, but that needs knowledge.
      But I opened an issue/request, so let’s see if it will be granted:
      https://github.com/CuddlyCow/MMM-HoymilesPVMonitor/issues

      posted in Development
      evroomE
      evroom
    • RE: MMM-Hoymiles-Wifi

      @Jose1701

      Remove the old module from the config:

      $ vi ~/MagicMirror/config/config.js
      
      Remove the "MMM-Hoymiles-Wifi" config, or set:
      
          module: "MMM-Hoymiles-Wifi"
          disabled: true,
      
      Delete HoymilesWifi from pm2:
      
      $ pm2 stop HoymilesWifi
      $ pm2 delete HoymilesWifi
      $ pm2 save
      
      If desired, completely remove the old module:
      
      $ cd ~/MagicMirror/modules/
      $ rm -rf MMM-Hoymiles-Wifi
      

      Install MMM-HoymilesPVMonitor:

      $ cd ~/MagicMirror/modules
      
      $ git clone https://github.com/CuddlyCow/MMM-HoymilesPVMonitor.git
      
      $ cd MMM-HoymilesPVMonitor
      
      $ git branch
      * main
      
      $ git remote -v
      origin	https://github.com/CuddlyCow/MMM-HoymilesPVMonitor.git (fetch)
      origin	https://github.com/CuddlyCow/MMM-HoymilesPVMonitor.git (push)
      
      $ which hoymiles-wifi
      /home/admin/.local/bin/hoymiles-wifi
      
      $ echo $PATH
      /home/admin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
      
      $ vi ~/MagicMirror/config/config.js
      
        {
          module: "MMM-HoymilesPVMonitor",
          disabled: false,
          header: "PV Monitor",
          position: "top_left",
          config: {
            dtuIp: "192.168.178.50",        // IP address of your Hoymiles DTU
            maxPower: 800,                  // Maximum system power in watts
            updateInterval: 5 * 60 * 1000   // Update interval in milliseconds (default: 5 minutes)
          }
        }
      
      
      $ grep 'dtuIp' ~/MagicMirror/config/config.js
            dtuIp: "192.168.178.50",        // IP address of your Hoymiles DTU
      
      
      $ ls -als public/history_daily.json
      4 -rw-r--r-- 1 admin admin 115 Nov  6 08:47 public/history_daily.json
      
      $ cat public/history_daily.json
      [
        {
          "timestamp": "2025-11-06 08:47",
          "power": 40,
          "energy_daily": 0.03,
          "energy_total": 0.8
        }
      
      $ pm2 flush
      
      $ pm2 restart MagicMirror
      
      $ pm2 status MagicMirror
      ┌────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
      │ id │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
      ├────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
      │ 0  │ MagicMirror    │ default     │ 2.33.0  │ fork    │ 26202    │ 4m     │ 3    │ online    │ 0%       │ 2.1mb    │ admin    │ enabled  │
      └────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
      
      $ pm2 logs MagicMirror --lines 100
      
      0|MagicMir | [2025-11-06 08:47:43.474] [INFO]  [MMM-HoymilesPVMonitor.js:17:9] MMM-HoymilesPVMonitor started with DTU-IP: 192.168.178.50
      :
      :
      0|MagicMir | [2025-11-06 08:47:49.226] [LOG]   [MMM-HoymilesPVMonitor] Running Python script: python3 /home/admin/MagicMirror/modules/MMM-HoymilesPVMonitor/dtu_data.py --ip 192.168.178.50 --max 800 --out /home/admin/MagicMirror/modules/MMM-HoymilesPVMonitor/public/history_daily.json
      0|MagicMir | [2025-11-06 08:47:51.682] [LOG]   [MMM-HoymilesPVMonitor] Python script output: [WARNING] Could not load history: Expecting value: line 2 column 1 (char 1)
      0|MagicMir | [2025-11-06 08:47] [INFO] Live DTU data appended: {'timestamp': '2025-11-06 08:47', 'power': 40, 'energy_daily': 0.03, 'energy_total': 0.8}
      :
      :
      0|MagicMir | [2025-11-06 08:52:42.141] [LOG]   [MMM-HoymilesPVMonitor] Running Python script: python3 /home/admin/MagicMirror/modules/MMM-HoymilesPVMonitor/dtu_data.py --ip 192.168.178.50 --max 800 --out /home/admin/MagicMirror/modules/MMM-HoymilesPVMonitor/public/history_daily.json
      0|MagicMir | [2025-11-06 08:52:43.287] [LOG]   [MMM-HoymilesPVMonitor] Python script output: [2025-11-06 08:52] [INFO] Live DTU data appended: {'timestamp': '2025-11-06 08:52', 'power': 41, 'energy_daily': 0.03, 'energy_total': 0.8}
      
      $ cat public/history_daily.json
      [
        {
          "timestamp": "2025-11-06 08:47",
          "power": 40,
          "energy_daily": 0.03,
          "energy_total": 0.8
        },
        {
          "timestamp": "2025-11-06 08:52",
          "power": 41,
          "energy_daily": 0.03,
          "energy_total": 0.8
        }
      

      Tested on:

      $ cat /proc/device-tree/model; echo
      Raspberry Pi 3 Model B Plus Rev 1.3
      
      $ vcgencmd get_config total_mem
      total_mem=1024
      
      $ grep version ~/MagicMirror/package.json
      	"version": "2.33.0",
      
      posted in Development
      evroomE
      evroom