Measuring Solar Generation on a Fronius Inverter


Currently, I have four ways to monitor the total power generated by my solar panels.

  1. Check the meter. This is the most accurate way - but it is located inside a cupboard.
  2. Read the total from the Fronius API. Unfortunately, this rounds off to the nearest kWh, so isn't brilliantly accurate.
  3. Use the Fronius API to check the power being generated every minute, then convert to kWh. That seems accurate, but show discrepancies when compared with...
  4. Solar.web takes a reading every five minutes from the solar panels, and then graphs them.

Obviously, the meter in the cupboard is the one that counts. Those are the numbers which I submit back to the electricity company in order to get a payment. What I'm curious about is which method for accessing the API is the most accurate and whether I need to modify my open source code.

Let's take a look at how each one performs.

The Meter

I took a photo before sunrise, and another before sunset.
Solar Power Meter
869.81 - 853.36 = 16.45kWh.

So, that's what I'm aiming at.

Fronius Total API

The Fronius API is really easy to access - here are the (truncated) results.

{
	"Body" : {
		"Data" : {
			"DAY_ENERGY" : {
				"Value" : 17000,
				"Unit" : "Wh"
			},
			"TOTAL_ENERGY" : {
				"Value" : 880000,
				"Unit" : "Wh"
			},
			"YEAR_ENERGY" : {
				"Value" : 812000,
				"Unit" : "Wh"
			}
		}
	}
}

The "Day Energy" has been rounded to the nearest kWh. It's broadly accurate, but not spectacular.

(The "Total Energy" is a little higher than the current meter reading - that's fine, it was installed shortly before the meter so it's quite usual to have a discrepancy.)

Minute by Minute Readings

I wrote some code to query the API and store the current value. It does this every minute and then produces a graph at sunset.

Edent Solar Readings-fs8

The calculation is pretty simple

// Calculate the total kWh generated.
// Sum the readings and divide by 60. (Because we read every minute & there are 60 minutes in an hour).
// Divide by 1,000 to get kWh
// Only need 2 decimal places of precision
$kWh = round( (array_sum($currentPowerArray) / 60 / 1000), 2);

In this case, the reading of 16.45kWh was exactly accurate.

Solar.Web

Fronius offer the Solar.Web system for a pretty nifty remote view of your systems.

Solarweb

Yesterday's reading was 16.89kWh and looked like this:
Solar Web Readings-fs8

Taking a look on my system, it appears that the logging is done every 5 minutes.

Fronius Inverter Logging-fs8

I don't know if it's reading an average every five minutes, or it's an instantaneous read which just happens to be at the high point. Every reading from Solar.Web was a few hundred Wh higher.

Conclusions

SourceReading    Deviation from meter
Meter16.45-
API Total17+3.3%
Minute-by-Minute    16.450%
Solar.web16.89+2.4%

Long story short? The most accurate programmatic reading is from my minute-by-minute script - but there's not much in it. Interestingly, the Fronius API is the most inaccurate. There's a firmware update available, so I'll see if that fixes things.


Share this post on…

3 thoughts on “Measuring Solar Generation on a Fronius Inverter”

  1. With my older Fronius Inverter and 1 decimal place export meter I have fewer choices for data; I still haven’t sorted out the serial connection to poll for generation data (RS–422/485)

    Reply
    1. Depending on the unit, you may be able to get an expansion board which offers 3G connectivity, WiFi, etc. Worth looking into.

      Reply
      1. Chris Neale says:

        I irregularly take the CSV from a fitted USB drive (again 5 minute intervals), and I have the charts that https://app.net/314 creates from a clamp meter… I’m not without an impression of generation.

        I cannot remember what add–on is required for an IG–TL 3.6—I think that’s a) expensive and b) RS–4xx

        Reply

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">