Announcement

Collapse
No announcement yet.

Software for monitoring PVP4800 (with PVM1010)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Software for monitoring PVP4800 (with PVM1010)

    AEI had taken over PVPowered, keeping up the web-hosted data collection dashboard.
    But suddenly that has stopped.
    I would like to find software (Mac, Linux preferred) that could collect and display the inverter data.
    Back in 2008, a post by Mike Morrow indicated that he had developed such a tool.
    Does anyone have that or similar code?

    ... Alfred n6ac/AT/arrl.net

  • #2
    I am also looking looking for logging software for a PVP5200 (with PVM1010). I run a computer 24/7 for a weather station that could double as a logger if someone knows if software is available.

    I can read the output in real time with PVM Sync software I got from PVPowered years ago so I know it is possible to gather the data locally. At least I don't have to walk to the inverter and it gives a lot more information than just the total kWh.

    PVM Sync.jpg
    Mike WA5KWK

    Comment


    • #3
      About the PVMSync – I am using that, on a Mac (Mojave) in a virtualbox VM, under XP.
      I was getting incomplete results (only the kWh) until I realized that execution was modifying the "scale_default2" file, turning it into some unwanted html stuff and also was making a duplicate of that without the "2" in the name. So I replaced that file with a fresh copy after I first locked it in MacOS, making it read-only in the virtual Windows machine. Now it gives complete results, like shown in mrburns' post above. I also stripped that file of all the other inverter types except for PVP4800s. I use a Mac system timer "Task Till Dawn" to open the virtual XP machine each evening, to remind me to record the kWh reading.
      But I still really want an app that can gather and store the data without my intervention.

      Comment


      • #4
        Like other PV Powered inverter customers, I was surprised by the discontinuation of the MyPVPower.com monitoring website...

        Moderator note: I probably would have left this alone, but you copied and pasted it in four different threads within a span of about five minutes. We welcome you to join the discussions, but please don't jump right in advertising. Thanks.
        Last edited by sdold; 01-15-2021, 05:10 PM. Reason: Removed cross-posted ads

        Comment


        • #5
          I was also surprised by the discontinuation of MyPVPower.com and I don't have PVMSync but, being in the software business, I created a nodejs (JavaScript) script for pulling info from a PV Powered inverter with the PVM1010. The nodejs script writes to a CSV file at whatever polling interval makes sense for your installation (see below).

          So I am trying to figure out what would be the best way to serve the PV Powered inverter community with this capability. My company develops mobile apps and websites and so we've got the capability to do a mobile app, to do a website like MyPVPower, do a Mac or Windows app, or just distribute the script as a DIY on Github. A lot of work went into it as the API documentation is limited and the inverter occasionally sends out strange data that had to be filtered out. The code actually determines sunrise and sunset at your GPS coordinates so it doesn't report power when its dark (yes, at least my PVP3500 will occasionally do that). The nodejs script isn't particularly user friendly since you have to install node and a number of packages (but it is platform independent) so I'm looking for feedback as to what would be the best user friendly way to deliver this functionality.

          Reply or DM me if you're interested in discussing this further.

          Cheers, Joe Falcone
          joe@phondini.com

          Screen Shot 2021-01-15 at 12.24.45 PM.jpg
          Last edited by hmbay; 01-22-2021, 05:23 PM.

          Comment


          • #6
            I'm interested. Please contact me as I didn't find contact information for you.
            mjburns@west.net

            Comment


            • #7
              Joe, I too am interested.
              n6ac@arrl.net

              Comment


              • #8
                Good morning folks –

                I have been toying with the old PVPowered “UDP Local Communication Interface for the PVM1010” (pdf), on my Mac
                I modified the scale factors to match my PVP4800 inverter, and fixed the formatting so it would not throw up 16-decimal-digit numbers.
                Just 2 files to be placed in user folder. Compile with “javac PVPower.java” in Terminal
                I hope this post is self-explanatory. Also hope that it is not too long for this site!


                *********************************** RESULT (Terminal window on desktop) of running “PVPower.command” (double-click, or timer app –
                Last login: Wed Feb 17 11:38:09 on ttys002
                -bash: nexport: command not found
                MyMini4:~ user1$ /Users/user1/PVPower.command ; exit;
                Wed Feb 17 11:39:13 PST 2021
                Sending Packet to: 10.0.1.72
                Response Packet size: 40
                Inverter Information
                Type: 28
                Status: Online
                DC Voltage 257 V
                AC Voltage 241 V
                AC Power: 3582 W
                Temperature: 35 C 96 F
                Total kWh: 94343
                logout
                Saving session...
                ...copying shared history...
                ...saving history...truncating history files...
                ...completed.
                [Process completed]


                *********************************** CONTENTS of file “PVPower.command” – stored in user directory
                date
                java PVPower 10.0.1.72


                *********************************** CONTENTS of file “PVPower.java” – stored in user directory
                //based on “UDP Local Communication Interface for the PVM1010”
                //modified by Alfred Cellier 2021/02/17
                //scale factors herein are for PVP 4800
                //compile with “javac PVPower.java” in Terminal

                import java.io.*;
                import java.net.*;
                import java.util.*;
                public class PVPower {
                public static void main(String[] args) throws IOException {

                //Required program startup code
                if (args.length != 1) {
                System.out.println("Usage: java Client <Host>");
                return; }

                //Step 1) Create the request packet
                byte[] buffer = new byte[48];

                //Set all entries in buffer to zero
                for ( int i = 0; i < buffer.length; i++ )
                buffer[i] = 0;

                //Step 2) Create a datagram socket and open UDP port
                DatagramSocket socket = new DatagramSocket();

                //Step 3) Send the 4 byte request packet to port 14917
                InetAddress address = InetAddress.getByName(args[0]);
                DatagramPacket packet = new DatagramPacket(buffer, 4, address, 14917);
                socket.send(packet);

                System.out.println( "Sending Packet to: "+ args[0] );

                //Step 4) Get the response packet from the PVM1010
                packet = new DatagramPacket(buffer, buffer.length);
                socket.receive(packet);
                System.out.println( "Response Packet size: "+ packet.getLength() );

                //Step 5) Apply scale factors (for PVP 4800)
                int words[] = new int[18];
                buffer = packet.getData();
                socket.close();

                //Print output from the response packet scaled to PVP 4800
                //Fill my words array
                for ( int w = 0; w < words.length; w++ )
                words[w] = getWord( buffer, w );

                //Arrays.stream(words).forEach(System.outrintln); // !!! THAT SHOULD SAY println, not an emoji !!!
                System.out.println( "Inverter Information" );

                //Inverter's Type
                System.out.println( " Type: "+ words[13] );

                //Print out the inverter's status
                if ( words[2] == 0x15 )
                System.out.println(" Status: Online");
                else if ( words[2] == 0x80 )
                System.out.println(" Status: Faulted");
                else
                System.out.println(" Status: Sleeping");

                //Print the DC voltage
                double dcV = words[5] * 0.015459 ;
                System.out.format( " DC Voltage %.0f V %n", dcV );

                //Print the AC voltage
                double acV = words[8] * 0.018494 ;
                System.out.format( " AC Voltage %.0f V %n", acV );

                //Print the AC Power
                double acP = words[4] * 0.741699 ;
                if ( words[2] == 0x15 )
                System.out.format( " AC Power: %.0f W %n", acP );

                //Print the Temperature
                double degC = words[7] * 0.01 ;
                double degF = degC * 1.8 + 32 ;
                System.out.format( " Temperature: %.0f C %.0f F %n", degC, degF );

                //Print the total kWh
                System.out.println( " Total kWh: "+ ((words[16] << 16) + words[17]) );
                }

                // Get a single word from a buffer
                static int getWord( byte buffer[], int word )
                {
                int word2 = word * 2;

                //Make sure word is valid
                if ( word2 + 1 > buffer.length || word2 < 0 )
                return 0;

                //Return the requested word
                return ((buffer[word2 + 1] & 255) << 8) +
                (buffer[word2 + 0] & 255);
                }
                }
                Last edited by n6ac; 02-17-2021, 08:37 PM.

                Comment


                • #9
                  Also, I am working on a version to run automatically on a scheduled basis, saving data to a txt or csv file.
                  My prototype basically works, but needs much polish.
                  I have never programmed in Java before, so I am slow in progressing.
                  Octogenarian brain ...
                  Last edited by n6ac; 02-18-2021, 04:20 PM.

                  Comment


                  • #10
                    This is not pretty, but it works on my Macs (under Sierra and Mojave).

                    Download the two files.
                    Edit the "PVPower2.command" file for YOUR PVM1010's local IP address (where mine is 10.0.1.72).
                    Then remove the ".txt" extension, and in Terminal, do "chmod 755 PVPower2.command".
                    Edit the "PVPower2.java" file for the proper scale factors for your inverter (mine is PVP4800, model 28).
                    Then remove the ".txt" extension from the "PVPower2.java" file.
                    In Terminal, do "javac PVPower2.java", which will create "PVPower2.class".

                    Double-click on the command file, then Terminal should launch and run, presenting a small window with the current inverter parameters AND creating/appending a comma-separated file "PV_Data.txt" with a line of data containing date, time, AC Power, and kWh.
                    Note, I left out the other parameters. Example –
                    2021-02-22,12:20:10.190075,3366,94461
                    2021-02-22,12:30:01.010565,3325,94461
                    2021-02-22,12:45:00.805363,3250,94462
                    I gave up trying to understand how to avoid the decimals on the time readout. AAt least I got rid of them on the Inverter data.
                    (Except, an odd glitch as the inverter is starting and ending it's day – a few samples show huge obviously unreal numbers (e.g., 48657) for AC Power at those times).
                    Oh – once you have it running, you will want to go to Terminal's Preferences/Profiles/Shell and set "when the shell exits" to "close if the shell exited cleanly", otherwise you will have a screenful of Terminal windows!

                    I use a shareware app called "Task Till Dawn", in which I set up a task to call the command every 15 minutes from 0600 to 1800 (currently).
                    I use an old version of Excel to graph the daily curve from data copied (and edited) from the PV_Data txt file.
                    OH – TaskTillDawn requires the Mac to stay awake during times you want data. Maybe need a cron job ...

                    Obviously not polished, but functional.
                    i would guess that Linux and PC users can adapt this to their platforms.
                    Attached Files
                    Last edited by n6ac; 02-27-2021, 10:11 PM. Reason: added comment on keeping Mac awake, or chron job

                    Comment


                    • #11
                      And, I am still eager to see the app from Joe !!!

                      Comment


                      • #12
                        OK, to avoid the daily grind of fetching the cumulative kWh each evening, I stripped down a copy of the java code (PVPowerDaily.java) to just fetch (using PVPowerDaily.command, activated by TaskTillDawn daily at 2000h) only that single measure, and save to a comma-separated text file (PV_Data_Log.txt),
                        Of course, do the "javac PVPowerDaily.java" to create "PVPowerDaily.class".
                        Results look like this –
                        2021-02-24,20:01:00.615510, 94516
                        2021-02-25,20:01:00.681835, 94539
                        ...
                        Attached Files

                        Comment

                        Working...
                        X