Peak solar hours, for solar power siting studies

There’s a commonly used metric in solar power plant studies called variously Peak Solar Hours, or Peak Sun Hours. Essentially it’s how many watt-hours per day a one-watt solar panel will produce, so it’s an integration of Watts Per Square Meter over the day. It is typically measured with a pyrometer, which can cost as much as a complete Weatherflow station.

Is there a way to get a rough approximation of this metric from my WeatherFlow station? Either (ideally) from stored cloud data, or I could log UDP broadcast data and derive some kind of curve fit from my pyrometer and solar plant, unless there’s an easier way?

There have been a couple of discussions of “Hours Of Sunshine” in Developers and/or Feature Requests, but this is for the solar-power-specific metric above.

Many thanks in advance for any thoughts!

I have to think your local electric company would have that information for your general location

A google search for “peak solar hours” returned this one which is interesting…

Do you have a formula to preform the calculation?

A search turns up several websites that state:

“Note that peak sun-hours is not the same as hours of daylight; a peak-sun hour describes the intensity of sunlight in a specific area and is defined as an hour of sunlight that offers 1,000 watts of photovoltaic power per square meter.”

So it’s a simple query and formula.

The question I have is one hour of 1001 watts and hour of 999 watts equal to two hours of 1000 watts?

Correct, it’s just watts per square meter as a fraction of “full daylight” (which is 1000w/m^2) integrated over the day.

So yes, one hour at 999 plus 1 hour at 1001 is 2 peak hours.

Typical readings in the US are in the 3-5 range, but I’m looking to determine if there are any microclimate effects that’ll make one local site or another better for development. Plus I’m not in the US so the NREL maps and other free data sources don’t work here.

I’ve got two more Weatherflow systems on order to place in locations with power and internet, but I was hoping to just read out “today was 5.2 peak hours in this location and 5.3 in the other one” for instance.


It seems pretty simple

DISTINCT COUNT(id), SUM(solar_radiation) FROM SkyObservation WHERE solar_radiation > 0 AND serial_number = ‘SK-00000730’ AND datestamp > ‘2019-02-25 00:00:00’

This returned 685 records and a sum of 210064.

210064 / 685 / 60 = 5.11

And that value matches real close as to what two solar stations in m area reported today.


Very cool! I’m not familiar with how to query the WastherFlow SQL servers as above, is there a specific API for that?


I store the data locally. There are some third-party applications that capture and store the data using a Raspberry Pi. Once you have the data, you can preform your own queries.

I’m still not convinced that formula is correct so I’m going to keep researching and testing.

1 Like

David ( @dsj ),

Is the solar_radiation from the Sky Observation a simple one minute reading or is it a calculated one hour reading?

If a bird lands on my sky I see the drop in solar radiation that minute. So I guess it is reading the average for each minute.
cheers Ian :slight_smile:

If i add up all the values between 12:00 and 13:00 I get a value of 33,460. That’s 33 hours of peak solar sun and that can’t be correct.

1 Like

Maybe I need to divide the total value by 60 to get the average per hour.

Upon more study and testing…

210,064 / 60 = 3501.06667 / 1000 = 3.50 hours and that is a more believable value for this time of year.

So take the sum for the day and divide by 60000 and you get a value that should be usable. This will work regardless of the time of the reading.

@wpns I hope this helps you.

I can add this to ArchiveSW if any of you want it.

1 Like

It’s a one-minute average.

Perfect! Can I get historical data from the Weatherflow cloud, or should I capture and log UDP data?


One more question. How often are illuminance and uv read from the sensor?

at the same frequency wind is read (3 sec or 20 sec depending on power save mode)


Oh… Nice. That is information that has never been stated. Thank you.


Sure - it’s part of the observation data available via the REST interface -

Or yes, you can get that from the observations on the fly if you want to do that moving forward via any of those ways. API docs are at

Yes, you may use the REST API to retrieve the one minute data and store it for use. You may preform queries on the data with the REST API.

If you are willing to set up a computer or Raspberry Pi you may find it more convenient to capture the data via UDP. This will also allow you to retrieve and store past data that resides on the WeatherFlow servers.

Is there a limit to how far back I can query the WeatherFlow servers?