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-Hoymiles-Wifi

    Scheduled Pinned Locked Moved Development
    58 Posts 6 Posters 5.4k Views 5 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.
    • evroomE Online
      evroom @Jose1701
      last edited by

      @Jose1701

      Yeah, stopped is not good.
      I will need to get it working myself before I can give more useful information on what to check.
      Will keep you posted.

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

      Test environment:
      MagicMirror version: v2.31.0
      Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
      Raspbian GNU/Linux 12 (bookworm)

      evroomE 1 Reply Last reply Reply Quote 0
      • evroomE Online
        evroom @evroom
        last edited by

        @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",
        

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

        Test environment:
        MagicMirror version: v2.31.0
        Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
        Raspbian GNU/Linux 12 (bookworm)

        J 1 Reply Last reply Reply Quote 0
        • J Offline
          Jose1701 @evroom
          last edited by

          @evroom

          Great job! It could work for me. Unfortunately it’s dark outside but I can see the gauge on my mirror.

          I don’t even dare to ask, but do you have a hint how about resizing it? I tried it with width and height but it won’t work.

           {
              module: "MMM-HoymilesPVMonitor",
              disabled: false,
              header: "PV Monitor",
              position: "top_left",
              width: "100px",
              height: "105px",
              config: {
                dtuIp: "192.168.178.150",        // IP address of your Hoymiles DTU
                maxPower: 800,                  // Maximum system power in watts
                updateInterval: 5 * 60 * 1000   // Update interval in milliseconds (default: 5 minutes)
              }
            },
          
          

          Many thanks and kind regards

          Florian

          S evroomE 2 Replies Last reply Reply Quote 0
          • S Do not disturb
            sdetweil @Jose1701
            last edited by

            @Jose1701 said in MMM-Hoymiles-Wifi:

            width: "100px",
            height: "105px",
            

            those are outside the config:{} section, that means they are for the MM runtime…
            but we don’t process width/height

            if you want to do this you need to learn to use css(cascading style sheet) to customize the html presentation
            ALL updated css goes in css/custom.css

            a css entry in custom.css is

            selector_clause {
               styles to apply to elements selected by the selector clause
            }
            

            we add the modulename as a class to the web content so that one can ‘select’ only for that module

            key selector clause elements
            starts with . means element has classname=xxx
            starts with # means element has id=xxxx
            does not start with either, means html element name, div, span, p, h1, img…

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            J 1 Reply Last reply Reply Quote 0
            • J Offline
              Jose1701 @sdetweil
              last edited by

              @sdetweil

              Alright, I will try to get some info in the internet. Never done sth with css.

              Thanks

              S 2 Replies Last reply Reply Quote 0
              • S Do not disturb
                sdetweil @Jose1701
                last edited by

                @Jose1701 I understand , the browser provides a developer environment with different capabilities

                logger
                code execution
                and elements viewer, css tester env

                see the second link in my signature below for a starter course on the elements tab.

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                1 Reply Last reply Reply Quote 0
                • evroomE Online
                  evroom @Jose1701
                  last edited by evroom

                  @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

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

                  Test environment:
                  MagicMirror version: v2.31.0
                  Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
                  Raspbian GNU/Linux 12 (bookworm)

                  J 1 Reply Last reply Reply Quote 0
                  • J Offline
                    Jose1701 @evroom
                    last edited by

                    @evroom

                    ok. Thank you for your patience and help.

                    1 Reply Last reply Reply Quote 0
                    • S Do not disturb
                      sdetweil @Jose1701
                      last edited by

                      @Jose1701 also. Sometimes the author documents it on the readme, sometimes the author provides their own css you can override w custom.css entries

                      Sometimes it’s all grunt work….

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      1 Reply Last reply Reply Quote 0
                      • J Offline
                        Jose1701
                        last edited by

                        I spent a bit of time an got the following to work by using help of a friend.
                        I wrote the following in the css:

                        
                        /* custom.css */
                        
                        /* Passt die Gesamtbreite des gesamten Moduls an */
                        .MMM-HoymilesPVMonitor {
                            /* Beispiel: Setzt die maximale Breite des gesamten Moduls auf 200 Pixel */
                            max-width: 200px; 
                            /* Stellt sicher, dass das Modul zentriert bleibt, falls es kleiner als die Spalte ist */
                            margin-left: auto;
                            margin-right: auto;
                        }
                        
                        /* 
                          Passt den inneren Container an, der das Canvas-Diagramm enthält.
                          Dies überschreibt die 95% Breite, die im JS definiert wurde.
                        */
                        .MMM-HoymilesPVMonitor div:first-child {
                            /* 
                              Setzt die Breite des Containers auf 100% der oben definierten max-width (z.B. 200px).
                              Sie können hier auch absolute Werte (z.B. 180px) verwenden, 
                              aber 100% ist am flexibelsten.
                            */
                            width: 100% !important; 
                        }
                        
                        

                        Now it is smaller, nevertheless I can’t get it much more smaller because the gauge will disappear then.

                        (It’s not displayed correctly in the screenshot, but it is on my mirror.)

                        Screenshot 2025-11-07 102555.jpg

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