diff --git a/docs/source/api.rst b/docs/source/api.rst index dc4c57694..53678f8ce 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -279,8 +279,25 @@ DOE RTC io.fetch.rtc.request_doe_rtc_data io.fetch.rtc.fetch_doe_rtc +NREL PVDAQ +---------- + +.. autosummary:: + :toctree: generated/ + + io.fetch.pvdaq.get_pvdaq_metadata + io.fetch.pvdaq.get_pvdaq_data + + Reference observations ----------------------- +====================== + +The following modules contain code for initializing the reference +database, wrappers for fetching data, functions for processing (e.g. +renaming and resampling) data, and wrapper functions for posting data. +The pure fetch functions are found in ``pvlib.iotools`` and in +``solarforecastarbiter.io.fetch``. See the source code for additional +files with site and observation metadata. .. autosummary:: :toctree: generated/ @@ -295,6 +312,7 @@ Reference observations io.reference_observations.srml io.reference_observations.surfrad io.reference_observations.arm + io.reference_observations.pvdaq SFA API ======= diff --git a/docs/source/whatsnew/1.0.0rc1.rst b/docs/source/whatsnew/1.0.0rc1.rst index e68549c90..0c4040121 100644 --- a/docs/source/whatsnew/1.0.0rc1.rst +++ b/docs/source/whatsnew/1.0.0rc1.rst @@ -23,7 +23,8 @@ Enhancements limit each request to one week of data (:issue:`424`) (:pull:`435`) * PDF report figures are generated instead of SVG for easy integration into PDF reports (:issue:`360`) (:pull:`437`) - +* Added support for NREL PVDAQ sites to the reference database functions. + (:issue:`397`) (:pull:`438`) Bug fixes ~~~~~~~~~ diff --git a/solarforecastarbiter/cli.py b/solarforecastarbiter/cli.py index 3a6641348..5215f9692 100644 --- a/solarforecastarbiter/cli.py +++ b/solarforecastarbiter/cli.py @@ -161,7 +161,7 @@ def referencedata(): network_opt = click.option( '--network', multiple=True, - help="The Networks to act on. Defaults to all.", + help="The networks to act on. Defaults to all.", default=reference_data.NETWORK_OPTIONS, type=click.Choice(reference_data.NETWORK_OPTIONS)) diff --git a/solarforecastarbiter/datamodel.py b/solarforecastarbiter/datamodel.py index feb5a4e9f..409bdeb61 100644 --- a/solarforecastarbiter/datamodel.py +++ b/solarforecastarbiter/datamodel.py @@ -478,7 +478,7 @@ class Observation(BaseModel): Variable name, e.g. power, GHI. Each allowed variable has an associated pre-defined unit. interval_value_type : str - The type of the data in the observation. Typically interval mean or + The type of the data in the observation. Typically interval_mean or instantaneous, but additional types may be defined for events. interval_length : pandas.Timedelta The length of time between consecutive data points, e.g. 5 minutes, diff --git a/solarforecastarbiter/io/fetch/pvdaq.py b/solarforecastarbiter/io/fetch/pvdaq.py new file mode 100644 index 000000000..3f3b42645 --- /dev/null +++ b/solarforecastarbiter/io/fetch/pvdaq.py @@ -0,0 +1,106 @@ +"""Functions to read NREL PVDAQ data. +""" + +# Code originally written by Bennet Meyers (@bmeyers), Stanford, SLAC in +# https://github.com/pvlib/pvlib-python/pull/664 +# Adapated by Will Holmgren (@wholmgren), University of Arizona + +import json +from io import StringIO + +import requests +import pandas as pd + + +# consider adding an auth=(username, password) kwarg (default None) to +# support private data queries + +def get_pvdaq_metadata(system_id, api_key): + """Query PV system metadata from NREL's PVDAQ data service. + + Parameters + ---------- + system_id: int + The system ID corresponding to the site that data should be + queried from. + + api_key: string + Your NREL API key (https://developer.nrel.gov/docs/api-key/) + + Returns + ------- + list of dict + """ + + params = {'system_id': system_id, 'api_key': api_key} + sites_url = 'https://developer.nrel.gov/api/pvdaq/v3/sites.json' + r = requests.get(sites_url, params=params) + r.raise_for_status() + outputs = json.loads(r.content)['outputs'] + return outputs + + +def get_pvdaq_data(system_id, year, api_key='DEMO_KEY'): + """Query PV system data from NREL's PVDAQ data service: + + https://maps.nrel.gov/pvdaq/ + + This function uses the annual raw data file API, which is the most + efficient way of accessing multi-year, sub-hourly time series data. + + Parameters + ---------- + system_id: int + The system ID corresponding to the site that data should be + queried from. + + year: int or list of ints + Either the year to request or the list of years to request. + Multiple years will be concatenated into a single DataFrame. + + api_key: string + Your NREL API key (https://developer.nrel.gov/docs/api-key/) + + Returns + ------- + pandas.DataFrame + A DataFrame containing the time series data from the + PVDAQ service over the years requested. Times are typically + in local time. + + Notes + ----- + The PVDAQ metadata contains a key "available_years" that is a useful + value for the *year* argument. + """ + + try: + year = int(year) + except TypeError: + year = [int(yr) for yr in year] + else: + year = [year] + + # Each year must queries separately, so iterate over the years and + # generate a list of dataframes. + # Consider putting this loop in its own private function with + # try / except / try again pattern for network issues and NREL API + # throttling + df_list = [] + for yr in year: + params = { + 'api_key': api_key, + 'system_id': system_id, + 'year': yr + } + base_url = 'https://developer.nrel.gov/api/pvdaq/v3/data_file' + response = requests.get(base_url, params=params) + response.raise_for_status() + df = pd.read_csv(StringIO(response.text)) + df_list.append(df) + + # concatenate the list of yearly DataFrames + df = pd.concat(df_list, axis=0, sort=True) + df['Date-Time'] = pd.to_datetime(df['Date-Time']) + df.set_index('Date-Time', inplace=True) + return df diff --git a/solarforecastarbiter/io/fetch/tests/data/pvdaq_2019_data.csv b/solarforecastarbiter/io/fetch/tests/data/pvdaq_2019_data.csv new file mode 100644 index 000000000..2f541d20c --- /dev/null +++ b/solarforecastarbiter/io/fetch/tests/data/pvdaq_2019_data.csv @@ -0,0 +1,193 @@ +SiteID,Date-Time,ac_current,ac_power,ac_voltage,ambient_temp,dc_current,dc_power,dc_voltage,inverter_error_code,inverter_temp,module_temp,poa_irradiance,power_factor,relative_humidity,wind_direction,wind_speed +1276,2019-01-01 00:00:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-01 00:15:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-01 00:30:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 00:45:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 01:00:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 01:15:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 01:30:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 01:45:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 02:00:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 02:15:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 02:30:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 02:45:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 03:00:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 03:15:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 03:30:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 03:45:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 04:00:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 04:15:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 04:30:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 04:45:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 05:00:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 05:15:00,0,-200,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 05:30:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 05:45:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 06:00:00,0,-200,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 06:15:00,0,-200,283,,0,0,20,0,24,,,0,,, +1276,2019-01-01 06:30:00,0,-200,283,,0,0,255,0,24,,,0,,, +1276,2019-01-01 06:45:00,0,-200,283,,0,0,401,0,24,,,0,,, +1276,2019-01-01 07:00:00,0,-100,283,,0,0,433,0,24,,,0,,, +1276,2019-01-01 07:15:00,0,-100,283,,0,0,449,0,24,,,0,,, +1276,2019-01-01 07:30:00,0,-200,284,,0,0,462,0,24,,,0,,, +1276,2019-01-01 07:45:00,0,-100,284,,0,0,473,0,24,,,0,,, +1276,2019-01-01 08:00:00,0,-100,284,,0,0,480,0,24,,,0,,, +1276,2019-01-01 08:15:00,0,-200,283,,0,0,484,0,24,,,0,,, +1276,2019-01-01 08:30:00,0,-100,284,,0,0,484,0,24,,,0,,, +1276,2019-01-01 08:45:00,0,-200,284,,0,0,485,0,24,,,0,,, +1276,2019-01-01 09:00:00,0,-100,284,,0,0,484,0,24,,,0,,, +1276,2019-01-01 09:15:00,0,-200,284,,0,0,484,0,24,,,0,,, +1276,2019-01-01 09:30:00,0,-100,284,,0,0,481,0,24,,,0,,, +1276,2019-01-01 09:45:00,0,-100,284,,0,0,481,0,24,,,0,,, +1276,2019-01-01 10:00:00,0,-100,284,,0,0,477,0,24,,,0,,, +1276,2019-01-01 10:15:00,0,-200,284,,0,0,476,0,24,,,0,,, +1276,2019-01-01 10:30:00,0,-200,284,,0,0,476,0,24,,,0,,, +1276,2019-01-01 10:45:00,0,-200,284,,0,0,475,0,24,,,0,,, +1276,2019-01-01 11:00:00,0,-200,284,,0,0,473,0,24,,,0,,, +1276,2019-01-01 11:15:00,0,-200,285,,0,0,475,0,24,,,0,,, +1276,2019-01-01 11:30:00,0,-200,284,,0,0,473,0,24,,,0,,, +1276,2019-01-01 11:45:00,0,-100,285,,0,0,472,0,24,,,0,,, +1276,2019-01-01 12:00:00,0,-200,285,,0,0,472,0,24,,,0,,, +1276,2019-01-01 12:15:00,0,-100,285,,0,0,471,0,24,,,0,,, +1276,2019-01-01 12:30:00,0,-200,285,,0,0,469,0,24,,,0,,, +1276,2019-01-01 12:45:00,0,-100,285,,0,0,467,0,24,,,0,,, +1276,2019-01-01 13:00:00,0,-100,284,,0,0,467,0,24,,,0,,, +1276,2019-01-01 13:15:00,0,-200,285,,0,0,468,0,24,,,0,,, +1276,2019-01-01 13:30:00,0,-100,284,,0,0,469,0,24,,,0,,, +1276,2019-01-01 13:45:00,0,-200,285,,0,0,471,0,24,,,0,,, +1276,2019-01-01 14:00:00,0,-100,284,,0,0,469,0,24,,,0,,, +1276,2019-01-01 14:15:00,0,-200,284,,0,0,471,0,24,,,0,,, +1276,2019-01-01 14:30:00,0,-100,285,,0,0,472,0,24,,,0,,, +1276,2019-01-01 14:45:00,0,-100,285,,0,0,472,0,24,,,0,,, +1276,2019-01-01 15:00:00,0,-100,285,,0,0,472,0,24,,,0,,, +1276,2019-01-01 15:15:00,0,-200,285,,0,0,469,0,24,,,0,,, +1276,2019-01-01 15:30:00,0,-100,284,,0,0,466,0,24,,,0,,, +1276,2019-01-01 15:45:00,0,-100,284,,0,0,459,0,24,,,0,,, +1276,2019-01-01 16:00:00,0,-200,283,,0,0,451,0,24,,,0,,, +1276,2019-01-01 16:15:00,0,-100,282,,0,0,438,0,24,,,0,,, +1276,2019-01-01 16:30:00,0,-200,283,,0,0,419,0,24,,,0,,, +1276,2019-01-01 16:45:00,0,-100,282,,0,0,390,0,24,,,0,,, +1276,2019-01-01 17:00:00,0,-100,282,,0,0,237,0,24,,,0,,, +1276,2019-01-01 17:15:00,0,-100,282,,0,0,19,0,24,,,0,,, +1276,2019-01-01 17:30:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 17:45:00,0,-200,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 18:00:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 18:15:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 18:30:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 18:45:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 19:00:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 19:15:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 19:30:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 19:45:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-01 20:00:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 20:15:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-01 20:30:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 20:45:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 21:00:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 21:15:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 21:30:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 21:45:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 22:00:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 22:15:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-01 22:30:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 22:45:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-01 23:00:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-01 23:15:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-01 23:30:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-01 23:45:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 00:00:00,0,-100,286,,0,0,0,0,24,,,0,,, +1276,2019-01-02 00:15:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 00:30:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 00:45:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 01:00:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 01:15:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 01:30:00,0,-200,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 01:45:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 02:00:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 02:15:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 02:30:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 02:45:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 03:00:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 03:15:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 03:30:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 03:45:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 04:00:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 04:15:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 04:30:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 04:45:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 05:00:00,0,-100,282,,0,0,0,0,24,,,0,,, +1276,2019-01-02 05:15:00,0,-200,282,,0,0,0,0,24,,,0,,, +1276,2019-01-02 05:30:00,0,-200,282,,0,0,0,0,24,,,0,,, +1276,2019-01-02 05:45:00,0,-200,281,,0,0,0,0,24,,,0,,, +1276,2019-01-02 06:00:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 06:15:00,0,-100,282,,0,0,19,0,24,,,0,,, +1276,2019-01-02 06:30:00,0,-200,282,,0,0,268,0,24,,,0,,, +1276,2019-01-02 06:45:00,0,-100,281,,0,0,414,0,24,,,0,,, +1276,2019-01-02 07:00:00,0,-100,281,,0,0,444,0,24,,,0,,, +1276,2019-01-02 07:15:00,0,-200,281,,0,0,462,0,24,,,0,,, +1276,2019-01-02 07:30:00,0,-100,283,,0,0,474,0,24,,,0,,, +1276,2019-01-02 07:45:00,0,-100,283,,0,0,483,0,24,,,0,,, +1276,2019-01-02 08:00:00,0,-200,283,,0,0,486,0,24,,,0,,, +1276,2019-01-02 08:15:00,0,-200,283,,0,0,485,0,24,,,0,,, +1276,2019-01-02 08:30:00,0,-200,283,,0,0,482,0,24,,,0,,, +1276,2019-01-02 08:45:00,0,-200,283,,0,0,479,0,24,,,0,,, +1276,2019-01-02 09:00:00,0,-100,283,,0,0,476,0,24,,,0,,, +1276,2019-01-02 09:15:00,0,-100,283,,0,0,473,0,24,,,0,,, +1276,2019-01-02 09:30:00,0,-100,284,,0,0,469,0,24,,,0,,, +1276,2019-01-02 09:45:00,0,-100,284,,0,0,468,0,24,,,0,,, +1276,2019-01-02 10:00:00,0,-100,284,,0,0,465,0,24,,,0,,, +1276,2019-01-02 10:15:00,0,-100,284,,0,0,463,0,24,,,0,,, +1276,2019-01-02 10:30:00,0,-100,284,,0,0,463,0,24,,,0,,, +1276,2019-01-02 10:45:00,0,-200,284,,0,0,464,0,24,,,0,,, +1276,2019-01-02 11:00:00,0,-200,285,,0,0,463,0,24,,,0,,, +1276,2019-01-02 11:15:00,0,-100,285,,0,0,460,0,24,,,0,,, +1276,2019-01-02 11:30:00,0,-100,285,,0,0,458,0,24,,,0,,, +1276,2019-01-02 11:45:00,0,-200,285,,0,0,458,0,24,,,0,,, +1276,2019-01-02 12:00:00,0,-200,285,,0,0,457,0,24,,,0,,, +1276,2019-01-02 12:15:00,0,-100,284,,0,0,455,0,24,,,0,,, +1276,2019-01-02 12:30:00,0,-100,284,,0,0,456,0,24,,,0,,, +1276,2019-01-02 12:45:00,0,-100,285,,0,0,455,0,24,,,0,,, +1276,2019-01-02 13:00:00,0,-100,284,,0,0,456,0,24,,,0,,, +1276,2019-01-02 13:15:00,0,-100,284,,0,0,455,0,24,,,0,,, +1276,2019-01-02 13:30:00,0,-100,285,,0,0,455,0,24,,,0,,, +1276,2019-01-02 13:45:00,0,-200,285,,0,0,458,0,24,,,0,,, +1276,2019-01-02 14:00:00,0,-100,285,,0,0,458,0,24,,,0,,, +1276,2019-01-02 14:15:00,0,-100,285,,0,0,459,0,24,,,0,,, +1276,2019-01-02 14:30:00,0,-200,285,,0,0,461,0,24,,,0,,, +1276,2019-01-02 14:45:00,0,-100,285,,0,0,462,0,24,,,0,,, +1276,2019-01-02 15:00:00,0,-100,284,,0,0,461,0,24,,,0,,, +1276,2019-01-02 15:15:00,0,-100,284,,0,0,461,0,24,,,0,,, +1276,2019-01-02 15:30:00,0,-200,284,,0,0,458,0,24,,,0,,, +1276,2019-01-02 15:45:00,0,-200,283,,0,0,455,0,24,,,0,,, +1276,2019-01-02 16:00:00,0,-100,283,,0,0,447,0,24,,,0,,, +1276,2019-01-02 16:15:00,0,-100,283,,0,0,434,0,24,,,0,,, +1276,2019-01-02 16:30:00,0,-200,281,,0,0,417,0,24,,,0,,, +1276,2019-01-02 16:45:00,0,-100,283,,0,0,392,0,24,,,0,,, +1276,2019-01-02 17:00:00,0,-200,283,,0,0,280,0,24,,,0,,, +1276,2019-01-02 17:15:00,0,-100,284,,0,0,23,0,24,,,0,,, +1276,2019-01-02 17:30:00,0,-200,284,,0,0,1,0,24,,,0,,, +1276,2019-01-02 17:45:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 18:00:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 18:15:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 18:30:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 18:45:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 19:00:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 19:15:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 19:30:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 19:45:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 20:00:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 20:15:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 20:30:00,0,-200,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 20:45:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 21:00:00,0,-100,283,,0,0,0,0,24,,,0,,, +1276,2019-01-02 21:15:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 21:30:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 21:45:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 22:00:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 22:15:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 22:30:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 22:45:00,0,-100,285,,0,0,0,0,24,,,0,,, +1276,2019-01-02 23:00:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 23:15:00,0,-200,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 23:30:00,0,-100,284,,0,0,0,0,24,,,0,,, +1276,2019-01-02 23:45:00,0,-200,285,,0,0,0,0,24,,,0,,, \ No newline at end of file diff --git a/solarforecastarbiter/io/fetch/tests/data/pvdaq_2020_data.csv b/solarforecastarbiter/io/fetch/tests/data/pvdaq_2020_data.csv new file mode 100644 index 000000000..6bc812deb --- /dev/null +++ b/solarforecastarbiter/io/fetch/tests/data/pvdaq_2020_data.csv @@ -0,0 +1,193 @@ +SiteID,Date-Time,ac_current,ac_power,ac_voltage,ambient_temp,dc_current,dc_power,dc_voltage,inverter_error_code,inverter_temp,module_temp,poa_irradiance,power_factor,relative_humidity,wind_direction,wind_speed +1276,2020-01-01 00:00:00,0,-200,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 00:15:00,0,-200,286,,0,0,0,0,30,,,0,,, +1276,2020-01-01 00:30:00,0,-100,286,,0,0,0,0,30,,,0,,, +1276,2020-01-01 00:45:00,0,-100,286,,0,0,0,0,30,,,0,,, +1276,2020-01-01 01:00:00,0,-100,285,,0,0,0,0,30,,,0,,, +1276,2020-01-01 01:15:00,0,-100,284,,0,0,0,0,30,,,0,,, +1276,2020-01-01 01:30:00,0,-200,285,,0,0,0,0,30,,,0,,, +1276,2020-01-01 01:45:00,0,-100,285,,0,0,0,0,30,,,0,,, +1276,2020-01-01 02:00:00,0,-100,285,,0,0,0,0,30,,,0,,, +1276,2020-01-01 02:15:00,0,-100,285,,0,0,0,0,29,,,0,,, +1276,2020-01-01 02:30:00,0,-100,285,,0,0,0,0,29,,,0,,, +1276,2020-01-01 02:45:00,0,-200,285,,0,0,0,0,29,,,0,,, +1276,2020-01-01 03:00:00,0,-100,285,,0,0,0,0,29,,,0,,, +1276,2020-01-01 03:15:00,0,-100,284,,0,0,1,0,29,,,0,,, +1276,2020-01-01 03:30:00,0,-100,285,,0,0,2,0,29,,,0,,, +1276,2020-01-01 03:45:00,0,-200,285,,0,0,1,0,29,,,0,,, +1276,2020-01-01 04:00:00,0,-100,285,,0,0,1,0,29,,,0,,, +1276,2020-01-01 04:15:00,0,-100,284,,0,0,1,0,29,,,0,,, +1276,2020-01-01 04:30:00,0,-100,284,,0,0,5,0,29,,,0,,, +1276,2020-01-01 04:45:00,0,-200,284,,0,0,3,0,29,,,0,,, +1276,2020-01-01 05:00:00,0,-100,284,,0,0,1,0,28,,,0,,, +1276,2020-01-01 05:15:00,0,-200,284,,0,0,0,0,28,,,0,,, +1276,2020-01-01 05:30:00,0,-100,283,,0,0,1,0,28,,,0,,, +1276,2020-01-01 05:45:00,0,-100,284,,0,0,1,0,28,,,0,,, +1276,2020-01-01 06:00:00,0,-200,284,,0,0,1,0,28,,,0,,, +1276,2020-01-01 06:15:00,0,-100,284,,0,0,20,0,28,,,0,,, +1276,2020-01-01 06:30:00,0,-100,284,,0,0,222,0,28,,,0,,, +1276,2020-01-01 06:45:00,3,-200,284,,0,0,294,0,28,,,0.024,,, +1276,2020-01-01 07:00:00,0,-200,284,,0,0,424,0,30,,,0,,, +1276,2020-01-01 07:15:00,3,800,284,,2,800,323,0,32,,,0.209,,, +1276,2020-01-01 07:30:00,4,1900,284,,4,1900,389,0,36,,,0.475,,, +1276,2020-01-01 07:45:00,5,3300,284,,8,3400,402,0,41,,,0.676,,, +1276,2020-01-01 08:00:00,5,3700,285,,8,3700,411,0,47,,,0.718,,, +1276,2020-01-01 08:15:00,7,6000,285,,14,6100,427,0,54,,,0.863,,, +1276,2020-01-01 08:30:00,11,10000,285,,24,10100,411,0,41,,,0.938,,, +1276,2020-01-01 08:45:00,8,6500,285,,15,6600,409,0,56,,,0.872,,, +1276,2020-01-01 09:00:00,14,12400,285,,31,12500,392,0,45,,,0.957,,, +1276,2020-01-01 09:15:00,14,12400,286,,33,12500,371,0,41,,,0.953,,, +1276,2020-01-01 09:30:00,29,26000,286,,68,26400,381,0,48,,,0.988,,, +1276,2020-01-01 09:45:00,17,15300,286,,38,15400,395,0,58,,,0.971,,, +1276,2020-01-01 10:00:00,23,21000,286,,53,21400,393,0,56,,,0.983,,, +1276,2020-01-01 10:15:00,23,21000,286,,54,21300,387,0,50,,,0.983,,, +1276,2020-01-01 10:30:00,34,30100,286,,77,30700,392,0,58,,,0.991,,, +1276,2020-01-01 10:45:00,19,17500,286,,44,17700,399,0,53,,,0.98,,, +1276,2020-01-01 11:00:00,31,27300,287,,71,27700,386,0,47,,,0.99,,, +1276,2020-01-01 11:15:00,31,27700,287,,71,28400,396,0,56,,,0.99,,, +1276,2020-01-01 11:30:00,25,22500,286,,58,22800,384,0,44,,,0.986,,, +1276,2020-01-01 11:45:00,19,17200,286,,44,17500,393,0,60,,,0.977,,, +1276,2020-01-01 12:00:00,23,20300,286,,52,20600,390,0,56,,,0.982,,, +1276,2020-01-01 12:15:00,17,15600,286,,39,15800,392,0,44,,,0.971,,, +1276,2020-01-01 12:30:00,19,17000,285,,44,17300,382,0,61,,,0.974,,, +1276,2020-01-01 12:45:00,41,36200,287,,100,37100,366,0,46,,,0.992,,, +1276,2020-01-01 13:00:00,35,31100,287,,84,31800,372,0,59,,,0.991,,, +1276,2020-01-01 13:15:00,33,29100,287,,79,29800,373,0,57,,,0.991,,, +1276,2020-01-01 13:30:00,31,28000,287,,75,28600,376,0,53,,,0.989,,, +1276,2020-01-01 13:45:00,29,26100,287,,69,26600,381,0,45,,,0.988,,, +1276,2020-01-01 14:00:00,28,24500,287,,65,24900,375,0,59,,,0.987,,, +1276,2020-01-01 14:15:00,24,21800,287,,57,22100,385,0,44,,,0.984,,, +1276,2020-01-01 14:30:00,20,18000,287,,49,18300,366,0,46,,,0.975,,, +1276,2020-01-01 14:45:00,17,15200,287,,41,15500,371,0,52,,,0.965,,, +1276,2020-01-01 15:00:00,13,11400,286,,31,11500,366,0,50,,,0.942,,, +1276,2020-01-01 15:15:00,9,8000,286,,22,8100,358,0,50,,,0.894,,, +1276,2020-01-01 15:30:00,6,4800,286,,13,4900,351,0,59,,,0.763,,, +1276,2020-01-01 15:45:00,4,2600,286,,7,2600,341,0,60,,,0.535,,, +1276,2020-01-01 16:00:00,3,500,285,,1,500,342,0,56,,,0.14,,, +1276,2020-01-01 16:15:00,3,200,285,,0,200,307,0,53,,,0.061,,, +1276,2020-01-01 16:30:00,3,0,284,,0,0,306,0,51,,,0,,, +1276,2020-01-01 16:45:00,0,-100,284,,0,0,368,0,46,,,0,,, +1276,2020-01-01 17:00:00,0,-100,283,,0,0,157,0,45,,,0,,, +1276,2020-01-01 17:15:00,0,-100,284,,0,0,41,0,41,,,0,,, +1276,2020-01-01 17:30:00,0,-200,284,,0,0,9,0,39,,,0,,, +1276,2020-01-01 17:45:00,0,-100,284,,0,0,7,0,37,,,0,,, +1276,2020-01-01 18:00:00,0,-100,285,,0,0,6,0,36,,,0,,, +1276,2020-01-01 18:15:00,0,-100,285,,0,0,5,0,36,,,0,,, +1276,2020-01-01 18:30:00,0,-200,285,,0,0,1,0,35,,,0,,, +1276,2020-01-01 18:45:00,0,-100,285,,0,0,2,0,35,,,0,,, +1276,2020-01-01 19:00:00,0,-100,285,,0,0,1,0,34,,,0,,, +1276,2020-01-01 19:15:00,0,-100,286,,0,0,1,0,34,,,0,,, +1276,2020-01-01 19:30:00,0,-100,286,,0,0,1,0,34,,,0,,, +1276,2020-01-01 19:45:00,0,-100,286,,0,0,1,0,33,,,0,,, +1276,2020-01-01 20:00:00,0,-200,285,,0,0,0,0,33,,,0,,, +1276,2020-01-01 20:15:00,0,-200,285,,0,0,0,0,33,,,0,,, +1276,2020-01-01 20:30:00,0,-100,286,,0,0,1,0,33,,,0,,, +1276,2020-01-01 20:45:00,0,-200,285,,0,0,2,0,32,,,0,,, +1276,2020-01-01 21:00:00,0,-100,286,,0,0,0,0,32,,,0,,, +1276,2020-01-01 21:15:00,0,-200,286,,0,0,0,0,32,,,0,,, +1276,2020-01-01 21:30:00,0,-200,286,,0,0,0,0,32,,,0,,, +1276,2020-01-01 21:45:00,0,-200,286,,0,0,0,0,32,,,0,,, +1276,2020-01-01 22:00:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 22:15:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 22:30:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 22:45:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 23:00:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 23:15:00,0,-200,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 23:30:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-01 23:45:00,0,-100,286,,0,0,0,0,30,,,0,,, +1276,2020-01-02 00:00:00,0,-200,286,,0,0,0,0,30,,,0,,, +1276,2020-01-02 00:15:00,0,-200,285,,0,0,0,0,30,,,0,,, +1276,2020-01-02 00:30:00,0,-200,286,,0,0,0,0,30,,,0,,, +1276,2020-01-02 00:45:00,0,-200,286,,0,0,1,0,30,,,0,,, +1276,2020-01-02 01:00:00,0,-200,286,,0,0,0,0,30,,,0,,, +1276,2020-01-02 01:15:00,0,-100,286,,0,0,1,0,30,,,0,,, +1276,2020-01-02 01:30:00,0,-100,286,,0,0,1,0,30,,,0,,, +1276,2020-01-02 01:45:00,0,-200,285,,0,0,1,0,29,,,0,,, +1276,2020-01-02 02:00:00,0,-100,285,,0,0,1,0,29,,,0,,, +1276,2020-01-02 02:15:00,0,-100,285,,0,0,2,0,29,,,0,,, +1276,2020-01-02 02:30:00,0,-200,285,,0,0,1,0,29,,,0,,, +1276,2020-01-02 02:45:00,0,-200,283,,0,0,0,0,29,,,0,,, +1276,2020-01-02 03:00:00,0,-200,283,,0,0,0,0,29,,,0,,, +1276,2020-01-02 03:15:00,0,-200,283,,0,0,0,0,29,,,0,,, +1276,2020-01-02 03:30:00,0,-200,283,,0,0,0,0,29,,,0,,, +1276,2020-01-02 03:45:00,0,-100,283,,0,0,0,0,29,,,0,,, +1276,2020-01-02 04:00:00,0,-100,283,,0,0,0,0,29,,,0,,, +1276,2020-01-02 04:15:00,0,-100,283,,0,0,0,0,28,,,0,,, +1276,2020-01-02 04:30:00,0,-100,283,,0,0,0,0,28,,,0,,, +1276,2020-01-02 04:45:00,0,-100,283,,0,0,0,0,28,,,0,,, +1276,2020-01-02 05:00:00,0,-100,284,,0,0,0,0,28,,,0,,, +1276,2020-01-02 05:15:00,0,-100,284,,0,0,0,0,28,,,0,,, +1276,2020-01-02 05:30:00,0,-200,283,,0,0,0,0,28,,,0,,, +1276,2020-01-02 05:45:00,0,-100,283,,0,0,0,0,28,,,0,,, +1276,2020-01-02 06:00:00,0,-100,283,,0,0,0,0,28,,,0,,, +1276,2020-01-02 06:15:00,0,-200,283,,0,0,17,0,28,,,0,,, +1276,2020-01-02 06:30:00,0,-100,283,,0,0,254,0,28,,,0,,, +1276,2020-01-02 06:45:00,3,-200,283,,0,0,293,0,28,,,0.023,,, +1276,2020-01-02 07:00:00,0,-200,283,,0,0,420,0,30,,,0,,, +1276,2020-01-02 07:15:00,3,600,283,,1,600,337,0,33,,,0.153,,, +1276,2020-01-02 07:30:00,3,1400,283,,3,1400,400,0,36,,,0.368,,, +1276,2020-01-02 07:45:00,5,3000,284,,10,3100,306,0,39,,,0.564,,, +1276,2020-01-02 08:00:00,8,6300,286,,17,6400,360,0,48,,,0.84,,, +1276,2020-01-02 08:15:00,11,9700,285,,23,9800,406,0,59,,,0.932,,, +1276,2020-01-02 08:30:00,13,12000,286,,30,12200,400,0,59,,,0.956,,, +1276,2020-01-02 08:45:00,17,15300,287,,40,15500,382,0,44,,,0.968,,, +1276,2020-01-02 09:00:00,20,18400,287,,50,18600,368,0,59,,,0.978,,, +1276,2020-01-02 09:15:00,25,22400,287,,61,22700,368,0,60,,,0.984,,, +1276,2020-01-02 09:30:00,28,25200,287,,68,25500,370,0,44,,,0.988,,, +1276,2020-01-02 09:45:00,31,27500,287,,72,28000,380,0,60,,,0.989,,, +1276,2020-01-02 10:00:00,33,29200,288,,77,29800,383,0,55,,,0.991,,, +1276,2020-01-02 10:15:00,35,30900,287,,82,31500,379,0,53,,,0.991,,, +1276,2020-01-02 10:30:00,36,32200,288,,86,32900,378,0,55,,,0.992,,, +1276,2020-01-02 10:45:00,37,33000,287,,88,33800,380,0,58,,,0.993,,, +1276,2020-01-02 11:00:00,38,33800,288,,91,34500,372,0,56,,,0.993,,, +1276,2020-01-02 11:15:00,39,34300,288,,92,35000,373,0,43,,,0.994,,, +1276,2020-01-02 11:30:00,39,34500,288,,93,35200,372,0,51,,,0.992,,, +1276,2020-01-02 11:45:00,39,34700,287,,95,35400,370,0,58,,,0.994,,, +1276,2020-01-02 12:00:00,39,34600,287,,93,35400,375,0,51,,,0.992,,, +1276,2020-01-02 12:15:00,38,34100,288,,92,34700,370,0,45,,,0.994,,, +1276,2020-01-02 12:30:00,38,33600,288,,90,34300,375,0,52,,,0.993,,, +1276,2020-01-02 12:45:00,37,32600,287,,87,33400,380,0,57,,,0.992,,, +1276,2020-01-02 13:00:00,35,31400,287,,86,32000,368,0,59,,,0.991,,, +1276,2020-01-02 13:15:00,34,30100,287,,81,30700,374,0,59,,,0.991,,, +1276,2020-01-02 13:30:00,32,28600,287,,77,29100,372,0,57,,,0.989,,, +1276,2020-01-02 13:45:00,30,26900,287,,72,27600,379,0,52,,,0.988,,, +1276,2020-01-02 14:00:00,28,25000,287,,65,25500,383,0,43,,,0.988,,, +1276,2020-01-02 14:15:00,25,22700,288,,60,23100,382,0,55,,,0.986,,, +1276,2020-01-02 14:30:00,21,18800,286,,50,19000,372,0,58,,,0.979,,, +1276,2020-01-02 14:45:00,17,15400,286,,42,15600,367,0,55,,,0.968,,, +1276,2020-01-02 15:00:00,13,12000,286,,32,12100,368,0,43,,,0.948,,, +1276,2020-01-02 15:15:00,11,9200,285,,26,9300,345,0,59,,,0.915,,, +1276,2020-01-02 15:30:00,8,5900,285,,19,5900,307,0,54,,,0.797,,, +1276,2020-01-02 15:45:00,4,2600,285,,7,2600,360,0,57,,,0.552,,, +1276,2020-01-02 16:00:00,4,1400,284,,4,1400,352,0,56,,,0.353,,, +1276,2020-01-02 16:15:00,3,500,285,,1,400,357,0,54,,,0.131,,, +1276,2020-01-02 16:30:00,3,0,285,,0,0,306,0,52,,,0.012,,, +1276,2020-01-02 16:45:00,0,-100,284,,0,0,360,0,48,,,0,,, +1276,2020-01-02 17:00:00,0,-100,283,,0,0,192,0,46,,,0,,, +1276,2020-01-02 17:15:00,0,-100,285,,0,0,19,0,42,,,0,,, +1276,2020-01-02 17:30:00,0,-200,284,,0,0,1,0,39,,,0,,, +1276,2020-01-02 17:45:00,0,-100,284,,0,0,0,0,38,,,0,,, +1276,2020-01-02 18:00:00,0,-100,285,,0,0,0,0,37,,,0,,, +1276,2020-01-02 18:15:00,0,-100,284,,0,0,0,0,36,,,0,,, +1276,2020-01-02 18:30:00,0,-200,284,,0,0,0,0,36,,,0,,, +1276,2020-01-02 18:45:00,0,-100,286,,0,0,0,0,35,,,0,,, +1276,2020-01-02 19:00:00,0,-200,286,,0,0,0,0,35,,,0,,, +1276,2020-01-02 19:15:00,0,-200,286,,0,0,0,0,35,,,0,,, +1276,2020-01-02 19:30:00,0,-200,287,,0,0,0,0,34,,,0,,, +1276,2020-01-02 19:45:00,0,-200,287,,0,0,0,0,34,,,0,,, +1276,2020-01-02 20:00:00,0,-100,286,,0,0,0,0,34,,,0,,, +1276,2020-01-02 20:15:00,0,-100,286,,0,0,0,0,33,,,0,,, +1276,2020-01-02 20:30:00,0,-200,287,,0,0,0,0,33,,,0,,, +1276,2020-01-02 20:45:00,0,-100,287,,0,0,0,0,33,,,0,,, +1276,2020-01-02 21:00:00,0,-200,287,,0,0,0,0,33,,,0,,, +1276,2020-01-02 21:15:00,0,-100,286,,0,0,0,0,33,,,0,,, +1276,2020-01-02 21:30:00,0,-200,286,,0,0,0,0,32,,,0,,, +1276,2020-01-02 21:45:00,0,-200,286,,0,0,0,0,32,,,0,,, +1276,2020-01-02 22:00:00,0,-200,286,,0,0,0,0,32,,,0,,, +1276,2020-01-02 22:15:00,0,-100,286,,0,0,0,0,32,,,0,,, +1276,2020-01-02 22:30:00,0,-100,286,,0,0,0,0,32,,,0,,, +1276,2020-01-02 22:45:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-02 23:00:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-02 23:15:00,0,-100,286,,0,0,0,0,31,,,0,,, +1276,2020-01-02 23:30:00,0,-200,286,,0,0,0,0,31,,,0,,, +1276,2020-01-02 23:45:00,0,-100,285,,0,0,0,0,31,,,0,,, \ No newline at end of file diff --git a/solarforecastarbiter/io/fetch/tests/data/pvdaq_metadata.json b/solarforecastarbiter/io/fetch/tests/data/pvdaq_metadata.json new file mode 100644 index 000000000..5ce7360b5 --- /dev/null +++ b/solarforecastarbiter/io/fetch/tests/data/pvdaq_metadata.json @@ -0,0 +1 @@ +{"errors":[],"outputs":[{"available_years":[2010,2011,2012,2013,2014,2016,2017,2018,2019,2020],"comments":null,"confidential":false,"inverter_mfg":"Fronius","inverter_model":"IG 4000","module_mfg":"Sharp","module_model":"ND-208U1","site_power":2912.0,"module_tech":2,"name_private":"Nelson Home, Golden, CO, Array 1","name_public":"[2] Residential #1a","site_area":22.82,"site_azimuth":181.2,"site_elevation":1675.0,"site_latitude":39.7214,"site_longitude":105.0972,"site_tilt":18.5,"system_id":2}],"warnings":[],"infos":[],"inputs":{"system_id":"2"},"version":"3.2.0"} \ No newline at end of file diff --git a/solarforecastarbiter/io/fetch/tests/test_pvdaq.py b/solarforecastarbiter/io/fetch/tests/test_pvdaq.py new file mode 100644 index 000000000..397f710d8 --- /dev/null +++ b/solarforecastarbiter/io/fetch/tests/test_pvdaq.py @@ -0,0 +1,100 @@ +import inspect +import os + + +import pandas as pd + + +from solarforecastarbiter.io.fetch import pvdaq + +TEST_DATA_DIR = os.path.dirname( + os.path.abspath(inspect.getfile(inspect.currentframe()))) +SYSTEM_FILE = os.path.join(TEST_DATA_DIR, 'data', 'pvdaq_metadata.json') +DATA_FILE = os.path.join(TEST_DATA_DIR, 'data', 'pvdaq_2020_data.csv') +DATA_FILE_2019 = os.path.join(TEST_DATA_DIR, 'data', 'pvdaq_2019_data.csv') + + +def test_get_pvdaq_metadata(requests_mock): + with open(SYSTEM_FILE, 'r') as f: + content = f.read() + + requests_mock.register_uri( + 'GET', 'https://developer.nrel.gov/api/pvdaq/v3/sites.json', + content=content.encode() + ) + + expected = [{ + 'available_years': [2010, + 2011, + 2012, + 2013, + 2014, + 2016, + 2017, + 2018, + 2019, + 2020], + 'comments': None, + 'confidential': False, + 'inverter_mfg': 'Fronius', + 'inverter_model': 'IG 4000', + 'module_mfg': 'Sharp', + 'module_model': 'ND-208U1', + 'module_tech': 2, + 'name_private': 'Nelson Home, Golden, CO, Array 1', + 'name_public': '[2] Residential #1a', + 'site_area': 22.82, + 'site_azimuth': 181.2, + 'site_elevation': 1675.0, + 'site_latitude': 39.7214, + 'site_longitude': 105.0972, + 'site_power': 2912.0, + 'site_tilt': 18.5, + 'system_id': 2}] + out = pvdaq.get_pvdaq_metadata(2, 'doesntmatter') + assert out == expected + + +def test_get_pvdaq_data(requests_mock): + with open(DATA_FILE, 'r') as f: + content = f.read() + + requests_mock.register_uri( + 'GET', 'https://developer.nrel.gov/api/pvdaq/v3/data_file', + content=content.encode() + ) + + data = pvdaq.get_pvdaq_data(1276, 2020, 'fakekey') + assert data.index[0] == pd.Timestamp('2020-01-01 00:00:00') + assert data.index[-1] == pd.Timestamp('2020-01-02 23:45:00') + some_cols = ['ac_current', 'ac_power', 'dc_power', 'wind_speed'] + for col in some_cols: + assert col in data.columns + + +def test_get_pvdaq_data_2years(requests_mock): + + with open(DATA_FILE, 'r') as f: + content = f.read() + + requests_mock.register_uri( + 'GET', + 'https://developer.nrel.gov/api/pvdaq/v3/data_file?api_key=fakekey&system_id=1276&year=2020', # noqa: E501 + content=content.encode() + ) + + with open(DATA_FILE_2019, 'r') as f: + content_2019 = f.read() + + requests_mock.register_uri( + 'GET', + 'https://developer.nrel.gov/api/pvdaq/v3/data_file?api_key=fakekey&system_id=1276&year=2019', # noqa: E501 + content=content_2019.encode() + ) + + data = pvdaq.get_pvdaq_data(1276, [2019, 2020], 'fakekey') + assert data.index[0] == pd.Timestamp('2019-01-01 00:00:00') + assert data.index[-1] == pd.Timestamp('2020-01-02 23:45:00') + some_cols = ['ac_current', 'ac_power', 'dc_power', 'wind_speed'] + for col in some_cols: + assert col in data.columns diff --git a/solarforecastarbiter/io/reference_observations/README.md b/solarforecastarbiter/io/reference_observations/README.md index ebb129aaa..2632eebb0 100644 --- a/solarforecastarbiter/io/reference_observations/README.md +++ b/solarforecastarbiter/io/reference_observations/README.md @@ -1,8 +1,10 @@ -# Reference Observaitons -Module for importing reference data into the SolarForecastArbiter. +# Reference Observations -This module serves two purposes: - - Creating reference metadata objects. - - Any sites found in an observation network and their associated Observations and avaialable metadata. - - Importing measurements - - Interacting with a Network's API to import the appropriate data as it becomes available. +Package for importing reference data into the Solar Forecast Arbiter. + +This package serves two purposes: + +- Creating reference metadata objects. + - Any sites found in an observation network and their associated Observations and available metadata. +- Importing reference measurements + - Interacting with a network's API to import the appropriate data as it becomes available. diff --git a/solarforecastarbiter/io/reference_observations/common.py b/solarforecastarbiter/io/reference_observations/common.py index 936c74c25..c15d7a4ad 100644 --- a/solarforecastarbiter/io/reference_observations/common.py +++ b/solarforecastarbiter/io/reference_observations/common.py @@ -193,16 +193,21 @@ def create_observation(api, site, variable, extra_params=None, **kwargs): 'variable': variable, 'extra_parameters': json.dumps(extra_parameters) }) + + return check_and_post_observation(api, observation) + + +def check_and_post_observation(api, observation): existing = existing_observations(api) if observation.name in existing: - logger.info('Observation, %s, already exists', observation_name) + logger.info('Observation, %s, already exists', observation.name) return existing[observation.name] try: created = api.create_observation(observation) except HTTPError as e: - logger.error(f'Failed to create {variable} observation at Site ' - f'{site.name}.') + logger.error(f'Failed to create {observation.variable} observation ' + f'at Site {observation.site.name}.') logger.debug(f'HTTP Error: {e.response.text}') else: logger.info(f"Observation {created.name} created successfully.") @@ -263,7 +268,7 @@ def update_site_observations(api, fetch_func, site, observations, An active Reference user session. fetch_func : function A function that requests data and returns a DataFrame for a given site. - The function should accept the parameters (api, site, start end) as + The function should accept the parameters (api, site, start, end) as they appear in this function. site : solarforecastarbiter.datamodel.Site The Site with observations to update. @@ -291,7 +296,8 @@ def update_site_observations(api, fetch_func, site, observations, post_observation_data(api, obs, data_in_range, start, end) -def _prepare_data_to_post(data, variable, observation, start, end): +def _prepare_data_to_post(data, variable, observation, start, end, + resample_how=None): """Manipulate the data including reindexing to observation.interval_label to prepare for posting""" data = data[[variable]] @@ -299,13 +305,17 @@ def _prepare_data_to_post(data, variable, observation, start, end): # ensure data is sorted before slicing and for optimal order in the # database data = data.sort_index() + + if resample_how: + resampler = data.resample(observation.interval_length) + data = getattr(resampler, resample_how)() + # remove all future values, some files have forward filled nightly data data = data[start:min(end, _utcnow())] - # we assume any reference data is given at the proper intervals - # and already averaged if appropriate - # so just reindex the data to put nans where required + if data.empty: return data + # reindex the data to put nans where required # we don't extend the new index to start, end, since reference # data has some lag time from the end it was requested from # and it isn't necessary to keep the nans between uploads in db @@ -349,14 +359,20 @@ def post_observation_data(api, observation, data, start, end): # check for a non-standard variable label in extra_parameters variable = extra_parameters.get('network_data_label', observation.variable) + # check if the raw observation needs to be resampled before posting + resample_how = extra_parameters.get('resample_how', None) try: var_df = _prepare_data_to_post(data, variable, observation, - start, end) + start, end, resample_how=resample_how) except KeyError: logger.error(f'{variable} could not be found in the data file ' f'from {data.index[0]} to {data.index[-1]}' f'for Observation {observation.name}') return + except AttributeError: + logger.error(f'{variable} could not be resampled using method ' + f'{resample_how} for Observation {observation.name}') + return # skip post id data is empty, if there are nans, should still post if var_df.empty: diff --git a/solarforecastarbiter/io/reference_observations/midc.py b/solarforecastarbiter/io/reference_observations/midc.py index 8eea7d8e0..dce847e33 100644 --- a/solarforecastarbiter/io/reference_observations/midc.py +++ b/solarforecastarbiter/io/reference_observations/midc.py @@ -103,10 +103,14 @@ def update_observation_data(api, sites, observations, start, end): """Post new observation data to all MIDC observations from start to end. + Parameters + ---------- api : solarforecastarbiter.io.api.APISession An active Reference user session. sites: list List of all reference sites as Objects + observations: list of solarforecastarbiter.datamodel.Observation + List of all reference observations. start : datetime The beginning of the period to request data for. end : datetime diff --git a/solarforecastarbiter/io/reference_observations/pvdaq.py b/solarforecastarbiter/io/reference_observations/pvdaq.py new file mode 100644 index 000000000..423d7e286 --- /dev/null +++ b/solarforecastarbiter/io/reference_observations/pvdaq.py @@ -0,0 +1,188 @@ +from functools import partial +import json +import logging +import os +from pkg_resources import resource_filename, Requirement + + +import pandas as pd + + +from solarforecastarbiter.datamodel import Observation +from solarforecastarbiter.io.fetch import pvdaq +from solarforecastarbiter.io.reference_observations import ( + common, default_forecasts) + + +logger = logging.getLogger('reference_data') + + +DEFAULT_SITEFILE = resource_filename( + Requirement.parse('solarforecastarbiter'), + 'solarforecastarbiter/io/reference_observations/' + 'pvdaq_reference_sites.json') + + +def adjust_site_parameters(site): + """Kludge the extra metadata in a json file into the metadata dict + derived from a csv file. + + Parameters + ---------- + site: dict + + Returns + ------- + dict + Copy of input plus a new key 'modeling_parameters' and more + metadata in extra_parameters. + + See also + -------- + solarforecastarbiter.io.reference_observations.site_df_to_dicts + """ + with open(DEFAULT_SITEFILE) as fp: + sites_metadata = json.load(fp)['sites'] + site_api_id = int(site['extra_parameters']['network_api_id']) + for site_metadata in sites_metadata: + site_extra_params = json.loads(site_metadata['extra_parameters']) + if site_extra_params['network_api_id'] == site_api_id: + site_out = site.copy() + site_out['modeling_parameters'] = site_metadata[ + 'modeling_parameters'] + site_out['extra_parameters'].update(site_extra_params) + return site_out + + +def initialize_site_observations(api, site): + """Creates an observation at the site for each variable in the PVDAQ + site's file. + + Parameters + ---------- + api : io.api.APISession + API Session object, authenticated for the Reference user. + site : datamodel.Site + The site object for which to create the Observations. + """ + try: + extra_params = common.decode_extra_parameters(site) + except ValueError: + logger.warning('Cannot create reference observations at PVDAQ site ' + f'{site.name}, missing required parameters.') + return + site_api_id = int(extra_params['network_api_id']) + with open(DEFAULT_SITEFILE) as fp: + obs_metadata = json.load(fp)['observations'] + + for obs in obs_metadata: + obs_extra_params = json.loads(obs['extra_parameters']) + if obs_extra_params['network_api_id'] == site_api_id: + obs['site'] = site + observation = Observation.from_dict(obs) + common.check_and_post_observation(api, observation) + + +def initialize_site_forecasts(api, site): + """ + Create a forecasts for each variable measured at the site + + Parameters + ---------- + api : solarforecastarbiter.io.api.APISession + An active Reference user session. + site : datamodel.Site + The site object for which to create Forecasts. + """ + try: + extra_params = common.decode_extra_parameters(site) + except ValueError: + logger.warning('Cannot create reference observations at PVDAQ site ' + f'{site.name}, missing required parameters.') + return + site_api_id = int(extra_params['network_api_id']) + with open(DEFAULT_SITEFILE) as fp: + obs_metadata = json.load(fp)['observations'] + + obs_vars = [] + for obs in obs_metadata: + obs_extra_params = json.loads(obs['extra_parameters']) + if obs_extra_params['network_api_id'] == site_api_id: + obs_vars.append(obs['variable']) + + common.create_forecasts( + api, site, obs_vars, default_forecasts.TEMPLATE_FORECASTS) + + +def fetch(api, site, start, end, *, nrel_pvdaq_api_key): + """Retrieve observation data for a PVDAQ site between start and end. + + Parameters + ---------- + api : io.APISession + Unused but conforms to common.update_site_observations call + site : datamodel.Site + Site object with the appropriate metadata. + start : datetime + The beginning of the period to request data for. + end : datetime + The end of the period to request data for. + nrel_pvdaq_api_key : str + API key for developer.nrel.gov + + Returns + ------- + data : pandas.DataFrame + All of the requested data concatenated into a single DataFrame. + """ + try: + site_extra_params = common.decode_extra_parameters(site) + except ValueError: + return pd.DataFrame() + try: + years = list(range(start.year, end.year + 1)) + obs_df = pvdaq.get_pvdaq_data( + site_extra_params['network_api_id'], years, + api_key=nrel_pvdaq_api_key) + except Exception: + # Not yet sure what kind of errors we might hit in production + logger.warning(f'Could not retrieve data for site {site.name}' + f' between {start} and {end}.') + return pd.DataFrame() + obs_df = obs_df.tz_localize(site.timezone) + return obs_df + + +def update_observation_data(api, sites, observations, start, end): + """Post new observation data to all PVDAQ observations from + start to end. + + Parameters + ---------- + api : solarforecastarbiter.io.api.APISession + An active Reference user session. + sites: list + List of all reference sites as Objects + observations: list of solarforecastarbiter.datamodel.Observation + List of all reference observations. + start : datetime + The beginning of the period to request data for. + end : datetime + The end of the period to request data for. + + Raises + ------ + KeyError + If NREL_PVDAQ_API_KEY environmental variable is not set. + Abuse of KeyError - should probably be ValueError - but kept for + consistency with other reference_observations modules. + """ + nrel_pvdaq_api_key = os.getenv('NREL_PVDAQ_API_KEY') + if nrel_pvdaq_api_key is None: + raise KeyError('"NREL_PVDAQ_API_KEY" environment variable must be ' + 'set to update PVDAQ observation data.') + pvdaq_sites = common.filter_by_networks(sites, ['NREL PVDAQ']) + for site in pvdaq_sites: + common.update_site_observations( + api, partial(fetch, nrel_pvdaq_api_key=nrel_pvdaq_api_key), + site, observations, start, end) diff --git a/solarforecastarbiter/io/reference_observations/pvdaq_reference_sites.json b/solarforecastarbiter/io/reference_observations/pvdaq_reference_sites.json new file mode 100644 index 000000000..c43cd2754 --- /dev/null +++ b/solarforecastarbiter/io/reference_observations/pvdaq_reference_sites.json @@ -0,0 +1,2791 @@ +{ + "sites": [ + { + "name": "NREL x-Si #1", + "latitude": 39.7406, + "longitude": -105.1774, + "elevation": 1785.050170898438, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 4, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"1800\", \"module_mfg\": \"Sanyo\", \"module_model\": \"HIP 200-BA3\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.001, + "dc_capacity": 0.001, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL CIS #1", + "latitude": 39.7404, + "longitude": -105.1774, + "elevation": 1783.616333007812, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 10, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"\", \"module_mfg\": \"Shell Solar\", \"module_model\": \"Eclipse 80\", \"module_tech\": \"7\"}", + "modeling_parameters": { + "ac_capacity": 0.00112, + "dc_capacity": 0.00112, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "Silicor Materials", + "latitude": 39.7404, + "longitude": -105.1772, + "elevation": 1782.188354492188, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 33, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"Sunny Boy 3000US\", \"module_mfg\": \"Silicor Materials\", \"module_model\": \"240\", \"module_tech\": \"9\"}", + "modeling_parameters": { + "ac_capacity": 0.0024, + "dc_capacity": 0.0024, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "Andre Agassi Preparatory Academy - Building A", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 34, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"135kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14664, + "dc_capacity": 0.14664, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 11.2, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL Ribbon Si #1c", + "latitude": 39.7407, + "longitude": -105.1773, + "elevation": 1784.211669921875, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 39, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Mobil\", \"module_model\": \"Ra 280-50H\", \"module_tech\": \"4\"}", + "modeling_parameters": { + "ac_capacity": 0.0014, + "dc_capacity": 0.0014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL x-Si #6", + "latitude": 39.742, + "longitude": -105.1727, + "elevation": 1777.210815429688, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 50, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-SI\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL x-Si #7", + "latitude": 39.7416, + "longitude": -105.1734, + "elevation": 1775.096069335938, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 51, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-Si\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + { + "name": "Distributed Sun - Hunt Valley", + "latitude": 39.4856, + "longitude": -76.6636, + "elevation": 100.5236282348633, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1199, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"2\"}", + "modeling_parameters": { + "ac_capacity": 0.05292, + "dc_capacity": 0.05292, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 20.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "Distributed Sun - BWI Hilton", + "latitude": 39.1958, + "longitude": -76.6808, + "elevation": 48.21525955200195, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1200, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.05184, + "dc_capacity": 0.05184, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 205.0, + "tracking_type": "fixed" + } + }, + { + "name": "Distributed Sun - 5 Executive Campus", + "latitude": 39.9283, + "longitude": -75.0481, + "elevation": 6.49128532409668, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1201, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14014, + "dc_capacity": 0.14014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 230.0, + "tracking_type": "fixed" + } + }, + { + "name": "Distributed Sun - 6 Executive Campus", + "latitude": 39.9292, + "longitude": -75.0472, + "elevation": 7.377955913543701, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1202, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.05184, + "dc_capacity": 0.05184, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 230.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL Visitor Parking Structure", + "latitude": 39.7407, + "longitude": -105.1694, + "elevation": 1759.846923828125, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1208, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"SunPower\", \"module_model\": \"SPR-315E\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.52416, + "dc_capacity": 0.52416, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 9.1, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + { + "name": "Integrator #2 - Site A", + "latitude": 40.8061, + "longitude": -73.8849, + "elevation": 6.965095996856689, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1232, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"Power Gate 50kW\", \"module_mfg\": \"Suntech\", \"module_model\": \"STP-270\", \"module_tech\": \"2\"}", + "modeling_parameters": { + "ac_capacity": 0.05049, + "dc_capacity": 0.05049, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 169.0, + "tracking_type": "fixed" + } + }, + { + "name": "Integrator #2 - Site C", + "latitude": 40.4335, + "longitude": -74.5106, + "elevation": 35.21721267700195, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1234, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"Power Gate Plus 500kW; Power Gate Plus 250kW\", \"module_mfg\": \"Suntech\", \"module_model\": \"STP-275\", \"module_tech\": \"2\"}", + "modeling_parameters": { + "ac_capacity": 0.88915, + "dc_capacity": 0.88915, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 224.0, + "tracking_type": "fixed" + } + }, + { + "name": "Andre Agassi Preparatory Academy - Building B", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1276, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.06848, + "dc_capacity": 0.06848, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 5.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "Andre Agassi Preparatory Academy - Building C", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1277, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"30kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.04056, + "dc_capacity": 0.04056, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "Andre Agassi Preparatory Academy - Building D", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1278, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"(1) 100kW, (1) 50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.17136, + "dc_capacity": 0.17136, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 0.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL Research Support Facility II", + "latitude": 39.7409, + "longitude": -105.1711, + "elevation": 1764.8974609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1283, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"Solon\", \"module_model\": \"Solon Black 230/01\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.40824, + "dc_capacity": 0.40824, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL CIGS#12", + "latitude": 39.7405, + "longitude": -105.1774, + "elevation": 1784.451416015625, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1289, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"6\"}", + "modeling_parameters": { + "ac_capacity": "", + "dc_capacity": "", + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "NREL Parking Garage", + "latitude": 39.7388, + "longitude": -105.1732, + "elevation": 1758.17724609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1332, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Satcon\", \"inverter_model\": \"PVS-500(x2), PVS-135(x1)\", \"module_mfg\": \"SunPower\", \"module_model\": \"318W(x3136), 315W(496)\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 1.153488, + "dc_capacity": 1.153488, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 16.77, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "RTC,FSEC,Baseline", + "latitude": 28.405, + "longitude": -80.7709, + "elevation": 10.27022838592529, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1403, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "RTC,NV,Baseline", + "latitude": 36.0275, + "longitude": -114.9215, + "elevation": 695.5903930664062, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1423, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + { + "name": "RTC,NREL,Baseline", + "latitude": 39.7397, + "longitude": -105.174, + "elevation": 1764.428344726562, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1426, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"ABB\", \"inverter_model\": \"PVI 3k\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.0027, + "dc_capacity": 0.0027, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 30.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + } + ], + "observations": [ + { + "name": "NREL x-Si #1 ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #1", + "latitude": 39.7406, + "longitude": -105.1774, + "elevation": 1785.050170898438, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 4, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"1800\", \"module_mfg\": \"Sanyo\", \"module_model\": \"HIP 200-BA3\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.001, + "dc_capacity": 0.001, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 4, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #1 dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #1", + "latitude": 39.7406, + "longitude": -105.1774, + "elevation": 1785.050170898438, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 4, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"1800\", \"module_mfg\": \"Sanyo\", \"module_model\": \"HIP 200-BA3\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.001, + "dc_capacity": 0.001, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 4, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #1 ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #1", + "latitude": 39.7406, + "longitude": -105.1774, + "elevation": 1785.050170898438, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 4, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"1800\", \"module_mfg\": \"Sanyo\", \"module_model\": \"HIP 200-BA3\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.001, + "dc_capacity": 0.001, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 4, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #1 poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #1", + "latitude": 39.7406, + "longitude": -105.1774, + "elevation": 1785.050170898438, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 4, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"1800\", \"module_mfg\": \"Sanyo\", \"module_model\": \"HIP 200-BA3\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.001, + "dc_capacity": 0.001, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 4, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL CIS #1 ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIS #1", + "latitude": 39.7404, + "longitude": -105.1774, + "elevation": 1783.616333007812, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 10, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"\", \"module_mfg\": \"Shell Solar\", \"module_model\": \"Eclipse 80\", \"module_tech\": \"7\"}", + "modeling_parameters": { + "ac_capacity": 0.00112, + "dc_capacity": 0.00112, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 10, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL CIS #1 dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIS #1", + "latitude": 39.7404, + "longitude": -105.1774, + "elevation": 1783.616333007812, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 10, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"\", \"module_mfg\": \"Shell Solar\", \"module_model\": \"Eclipse 80\", \"module_tech\": \"7\"}", + "modeling_parameters": { + "ac_capacity": 0.00112, + "dc_capacity": 0.00112, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 10, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL CIS #1 ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIS #1", + "latitude": 39.7404, + "longitude": -105.1774, + "elevation": 1783.616333007812, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 10, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"\", \"module_mfg\": \"Shell Solar\", \"module_model\": \"Eclipse 80\", \"module_tech\": \"7\"}", + "modeling_parameters": { + "ac_capacity": 0.00112, + "dc_capacity": 0.00112, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 10, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL CIS #1 poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIS #1", + "latitude": 39.7404, + "longitude": -105.1774, + "elevation": 1783.616333007812, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 10, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"\", \"module_mfg\": \"Shell Solar\", \"module_model\": \"Eclipse 80\", \"module_tech\": \"7\"}", + "modeling_parameters": { + "ac_capacity": 0.00112, + "dc_capacity": 0.00112, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 10, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "Silicor Materials ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "Silicor Materials", + "latitude": 39.7404, + "longitude": -105.1772, + "elevation": 1782.188354492188, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 33, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"Sunny Boy 3000US\", \"module_mfg\": \"Silicor Materials\", \"module_model\": \"240\", \"module_tech\": \"9\"}", + "modeling_parameters": { + "ac_capacity": 0.0024, + "dc_capacity": 0.0024, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 33, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "Silicor Materials dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "Silicor Materials", + "latitude": 39.7404, + "longitude": -105.1772, + "elevation": 1782.188354492188, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 33, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"Sunny Boy 3000US\", \"module_mfg\": \"Silicor Materials\", \"module_model\": \"240\", \"module_tech\": \"9\"}", + "modeling_parameters": { + "ac_capacity": 0.0024, + "dc_capacity": 0.0024, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 33, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "Silicor Materials ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "Silicor Materials", + "latitude": 39.7404, + "longitude": -105.1772, + "elevation": 1782.188354492188, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 33, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"Sunny Boy 3000US\", \"module_mfg\": \"Silicor Materials\", \"module_model\": \"240\", \"module_tech\": \"9\"}", + "modeling_parameters": { + "ac_capacity": 0.0024, + "dc_capacity": 0.0024, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 33, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "Silicor Materials poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "Silicor Materials", + "latitude": 39.7404, + "longitude": -105.1772, + "elevation": 1782.188354492188, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 33, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA\", \"inverter_model\": \"Sunny Boy 3000US\", \"module_mfg\": \"Silicor Materials\", \"module_model\": \"240\", \"module_tech\": \"9\"}", + "modeling_parameters": { + "ac_capacity": 0.0024, + "dc_capacity": 0.0024, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 33, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building A ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building A", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 34, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"135kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14664, + "dc_capacity": 0.14664, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 11.2, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 34, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building A dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building A", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 34, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"135kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14664, + "dc_capacity": 0.14664, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 11.2, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 34, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building A ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building A", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 34, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"135kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14664, + "dc_capacity": 0.14664, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 11.2, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 34, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building A poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building A", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 34, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"135kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14664, + "dc_capacity": 0.14664, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 11.2, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 34, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building A wind_speed", + "variable": "wind_speed", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building A", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 34, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"135kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14664, + "dc_capacity": 0.14664, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 11.2, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"wind_speed\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 34, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "NREL Ribbon Si #1c ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Ribbon Si #1c", + "latitude": 39.7407, + "longitude": -105.1773, + "elevation": 1784.211669921875, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 39, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Mobil\", \"module_model\": \"Ra 280-50H\", \"module_tech\": \"4\"}", + "modeling_parameters": { + "ac_capacity": 0.0014, + "dc_capacity": 0.0014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 39, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL Ribbon Si #1c dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Ribbon Si #1c", + "latitude": 39.7407, + "longitude": -105.1773, + "elevation": 1784.211669921875, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 39, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Mobil\", \"module_model\": \"Ra 280-50H\", \"module_tech\": \"4\"}", + "modeling_parameters": { + "ac_capacity": 0.0014, + "dc_capacity": 0.0014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 39, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL Ribbon Si #1c ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Ribbon Si #1c", + "latitude": 39.7407, + "longitude": -105.1773, + "elevation": 1784.211669921875, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 39, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Mobil\", \"module_model\": \"Ra 280-50H\", \"module_tech\": \"4\"}", + "modeling_parameters": { + "ac_capacity": 0.0014, + "dc_capacity": 0.0014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 39, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL Ribbon Si #1c poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Ribbon Si #1c", + "latitude": 39.7407, + "longitude": -105.1773, + "elevation": 1784.211669921875, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 39, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Mobil\", \"module_model\": \"Ra 280-50H\", \"module_tech\": \"4\"}", + "modeling_parameters": { + "ac_capacity": 0.0014, + "dc_capacity": 0.0014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 39, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #6 ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #6", + "latitude": 39.742, + "longitude": -105.1727, + "elevation": 1777.210815429688, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 50, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-SI\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 50, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #6 dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #6", + "latitude": 39.742, + "longitude": -105.1727, + "elevation": 1777.210815429688, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 50, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-SI\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 50, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #6 ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #6", + "latitude": 39.742, + "longitude": -105.1727, + "elevation": 1777.210815429688, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 50, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-SI\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 50, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #7 ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #7", + "latitude": 39.7416, + "longitude": -105.1734, + "elevation": 1775.096069335938, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 51, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-Si\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 51, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #7 dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #7", + "latitude": 39.7416, + "longitude": -105.1734, + "elevation": 1775.096069335938, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 51, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-Si\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 51, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #7 ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #7", + "latitude": 39.7416, + "longitude": -105.1734, + "elevation": 1775.096069335938, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 51, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-Si\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 51, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL x-Si #7 poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL x-Si #7", + "latitude": 39.7416, + "longitude": -105.1734, + "elevation": 1775.096069335938, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 51, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Fronius\", \"inverter_model\": \"IG 4500-LV\", \"module_mfg\": \"Siemens\", \"module_model\": \"M55 c-Si\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 45.0, + "surface_azimuth": 158.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 51, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "Distributed Sun - Hunt Valley inv1_ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 5.0, + "interval_label": "beginning", + "site": { + "name": "Distributed Sun - Hunt Valley", + "latitude": 39.4856, + "longitude": -76.6636, + "elevation": 100.5236282348633, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1199, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"2\"}", + "modeling_parameters": { + "ac_capacity": 0.05292, + "dc_capacity": 0.05292, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 20.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"inv1_ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1199, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"resample_how\": \"first\"}" + }, + { + "name": "Distributed Sun - Hunt Valley inv1_dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 5.0, + "interval_label": "beginning", + "site": { + "name": "Distributed Sun - Hunt Valley", + "latitude": 39.4856, + "longitude": -76.6636, + "elevation": 100.5236282348633, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1199, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"2\"}", + "modeling_parameters": { + "ac_capacity": 0.05292, + "dc_capacity": 0.05292, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 20.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"inv1_dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1199, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"resample_how\": \"first\"}" + }, + { + "name": "Distributed Sun - BWI Hilton ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 5.0, + "interval_label": "beginning", + "site": { + "name": "Distributed Sun - BWI Hilton", + "latitude": 39.1958, + "longitude": -76.6808, + "elevation": 48.21525955200195, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1200, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.05184, + "dc_capacity": 0.05184, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 205.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1200, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"resample_how\": \"first\"}" + }, + { + "name": "Distributed Sun - 5 Executive Campus ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 5.0, + "interval_label": "beginning", + "site": { + "name": "Distributed Sun - 5 Executive Campus", + "latitude": 39.9283, + "longitude": -75.0481, + "elevation": 6.49128532409668, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1201, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14014, + "dc_capacity": 0.14014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 230.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1201, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"resample_how\": \"first\"}" + }, + { + "name": "Distributed Sun - 5 Executive Campus dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 5.0, + "interval_label": "beginning", + "site": { + "name": "Distributed Sun - 5 Executive Campus", + "latitude": 39.9283, + "longitude": -75.0481, + "elevation": 6.49128532409668, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1201, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.14014, + "dc_capacity": 0.14014, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 230.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1201, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"resample_how\": \"first\"}" + }, + { + "name": "Distributed Sun - 6 Executive Campus ac_power_metered", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 5.0, + "interval_label": "beginning", + "site": { + "name": "Distributed Sun - 6 Executive Campus", + "latitude": 39.9292, + "longitude": -75.0472, + "elevation": 7.377955913543701, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1202, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.05184, + "dc_capacity": 0.05184, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 230.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power_metered\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1202, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 5, \"resample_how\": \"first\"}" + }, + { + "name": "NREL Visitor Parking Structure ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Visitor Parking Structure", + "latitude": 39.7407, + "longitude": -105.1694, + "elevation": 1759.846923828125, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1208, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"SunPower\", \"module_model\": \"SPR-315E\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.52416, + "dc_capacity": 0.52416, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 9.1, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1208, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "NREL Visitor Parking Structure dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Visitor Parking Structure", + "latitude": 39.7407, + "longitude": -105.1694, + "elevation": 1759.846923828125, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1208, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"SunPower\", \"module_model\": \"SPR-315E\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.52416, + "dc_capacity": 0.52416, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 9.1, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1208, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "Integrator #2 - Site A ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Integrator #2 - Site A", + "latitude": 40.8061, + "longitude": -73.8849, + "elevation": 6.965095996856689, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1232, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"Power Gate 50kW\", \"module_mfg\": \"Suntech\", \"module_model\": \"STP-270\", \"module_tech\": \"2\"}", + "modeling_parameters": { + "ac_capacity": 0.05049, + "dc_capacity": 0.05049, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 169.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1232, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Integrator #2 - Site C ac_power_metered_A", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Integrator #2 - Site C", + "latitude": 40.4335, + "longitude": -74.5106, + "elevation": 35.21721267700195, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1234, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"Power Gate Plus 500kW; Power Gate Plus 250kW\", \"module_mfg\": \"Suntech\", \"module_model\": \"STP-275\", \"module_tech\": \"2\"}", + "modeling_parameters": { + "ac_capacity": 0.88915, + "dc_capacity": 0.88915, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 224.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power_metered_A\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1234, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building B ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building B", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1276, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.06848, + "dc_capacity": 0.06848, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 5.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1276, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building B dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building B", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1276, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.06848, + "dc_capacity": 0.06848, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 5.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1276, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building B ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building B", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1276, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.06848, + "dc_capacity": 0.06848, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 5.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1276, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building B poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building B", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1276, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.06848, + "dc_capacity": 0.06848, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 5.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1276, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building B wind_speed", + "variable": "wind_speed", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building B", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1276, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.06848, + "dc_capacity": 0.06848, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 5.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"wind_speed\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1276, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building C ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building C", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1277, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"30kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.04056, + "dc_capacity": 0.04056, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1277, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building C dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building C", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1277, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"30kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.04056, + "dc_capacity": 0.04056, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1277, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building C ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building C", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1277, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"30kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.04056, + "dc_capacity": 0.04056, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1277, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building C poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building C", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1277, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"30kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.04056, + "dc_capacity": 0.04056, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1277, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building C wind_speed", + "variable": "wind_speed", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building C", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1277, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"30kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.04056, + "dc_capacity": 0.04056, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"wind_speed\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1277, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building D inv1_ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building D", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1278, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"(1) 100kW, (1) 50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.17136, + "dc_capacity": 0.17136, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 0.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"inv1_ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1278, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building D inv1_dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building D", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1278, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"(1) 100kW, (1) 50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.17136, + "dc_capacity": 0.17136, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 0.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"inv1_dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1278, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building D ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building D", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1278, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"(1) 100kW, (1) 50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.17136, + "dc_capacity": 0.17136, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 0.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1278, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building D poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building D", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1278, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"(1) 100kW, (1) 50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.17136, + "dc_capacity": 0.17136, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 0.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1278, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "Andre Agassi Preparatory Academy - Building D wind_speed", + "variable": "wind_speed", + "interval_value_type": "interval_mean", + "interval_length": 15.0, + "interval_label": "beginning", + "site": { + "name": "Andre Agassi Preparatory Academy - Building D", + "latitude": 36.1952, + "longitude": -115.1582, + "elevation": 625.3253173828125, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1278, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"inverter_mfg\": \"SatCon Technology\", \"inverter_model\": \"(1) 100kW, (1) 50kW\", \"module_mfg\": \"Sharp \", \"module_model\": \"NU-U240F1\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.17136, + "dc_capacity": 0.17136, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 0.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"wind_speed\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1278, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 15, \"resample_how\": \"first\"}" + }, + { + "name": "NREL Research Support Facility II poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Research Support Facility II", + "latitude": 39.7409, + "longitude": -105.1711, + "elevation": 1764.8974609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1283, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"Solon\", \"module_model\": \"Solon Black 230/01\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.40824, + "dc_capacity": 0.40824, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1283, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "NREL Research Support Facility II ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Research Support Facility II", + "latitude": 39.7409, + "longitude": -105.1711, + "elevation": 1764.8974609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1283, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"Solon\", \"module_model\": \"Solon Black 230/01\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.40824, + "dc_capacity": 0.40824, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1283, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "NREL Research Support Facility II ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Research Support Facility II", + "latitude": 39.7409, + "longitude": -105.1711, + "elevation": 1764.8974609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1283, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"Solon\", \"module_model\": \"Solon Black 230/01\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.40824, + "dc_capacity": 0.40824, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1283, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "NREL Research Support Facility II dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Research Support Facility II", + "latitude": 39.7409, + "longitude": -105.1711, + "elevation": 1764.8974609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1283, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"Solon\", \"module_model\": \"Solon Black 230/01\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.40824, + "dc_capacity": 0.40824, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1283, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "NREL Research Support Facility II wind_speed", + "variable": "wind_speed", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Research Support Facility II", + "latitude": 39.7409, + "longitude": -105.1711, + "elevation": 1764.8974609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1283, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"SMA America\", \"inverter_model\": \"Sunny Central 250U\", \"module_mfg\": \"Solon\", \"module_model\": \"Solon Black 230/01\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 0.40824, + "dc_capacity": 0.40824, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 10.0, + "surface_azimuth": 165.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"wind_speed\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1283, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "NREL CIGS#12 ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIGS#12", + "latitude": 39.7405, + "longitude": -105.1774, + "elevation": 1784.451416015625, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1289, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"6\"}", + "modeling_parameters": { + "ac_capacity": "", + "dc_capacity": "", + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1289, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL CIGS#12 dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIGS#12", + "latitude": 39.7405, + "longitude": -105.1774, + "elevation": 1784.451416015625, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1289, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"6\"}", + "modeling_parameters": { + "ac_capacity": "", + "dc_capacity": "", + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1289, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL CIGS#12 ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIGS#12", + "latitude": 39.7405, + "longitude": -105.1774, + "elevation": 1784.451416015625, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1289, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"6\"}", + "modeling_parameters": { + "ac_capacity": "", + "dc_capacity": "", + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1289, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL CIGS#12 poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL CIGS#12", + "latitude": 39.7405, + "longitude": -105.1774, + "elevation": 1784.451416015625, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1289, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"\", \"module_model\": \"\", \"module_tech\": \"6\"}", + "modeling_parameters": { + "ac_capacity": "", + "dc_capacity": "", + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 40.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1289, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "NREL Parking Garage ac_power_metered", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "NREL Parking Garage", + "latitude": 39.7388, + "longitude": -105.1732, + "elevation": 1758.17724609375, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1332, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"Satcon\", \"inverter_model\": \"PVS-500(x2), PVS-135(x1)\", \"module_mfg\": \"SunPower\", \"module_model\": \"318W(x3136), 315W(496)\", \"module_tech\": \"1\"}", + "modeling_parameters": { + "ac_capacity": 1.153488, + "dc_capacity": 1.153488, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 16.77, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power_metered\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1332, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"mean\"}" + }, + { + "name": "RTC,FSEC,Baseline ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,FSEC,Baseline", + "latitude": 28.405, + "longitude": -80.7709, + "elevation": 10.27022838592529, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1403, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1403, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,FSEC,Baseline ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,FSEC,Baseline", + "latitude": 28.405, + "longitude": -80.7709, + "elevation": 10.27022838592529, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1403, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1403, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,FSEC,Baseline dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,FSEC,Baseline", + "latitude": 28.405, + "longitude": -80.7709, + "elevation": 10.27022838592529, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1403, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1403, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,FSEC,Baseline poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,FSEC,Baseline", + "latitude": 28.405, + "longitude": -80.7709, + "elevation": 10.27022838592529, + "timezone": "Etc/GMT+5", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1403, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1403, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NV,Baseline ac_power", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NV,Baseline", + "latitude": 36.0275, + "longitude": -114.9215, + "elevation": 695.5903930664062, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1423, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ac_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1423, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NV,Baseline ambient_temp", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NV,Baseline", + "latitude": 36.0275, + "longitude": -114.9215, + "elevation": 695.5903930664062, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1423, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temp\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1423, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NV,Baseline dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NV,Baseline", + "latitude": 36.0275, + "longitude": -114.9215, + "elevation": 695.5903930664062, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1423, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1423, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NV,Baseline poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NV,Baseline", + "latitude": 36.0275, + "longitude": -114.9215, + "elevation": 695.5903930664062, + "timezone": "Etc/GMT+8", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1423, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"\", \"inverter_model\": \"\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.006, + "dc_capacity": 0.006, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 35.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1423, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NREL,Baseline AC_PowerA", + "variable": "ac_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NREL,Baseline", + "latitude": 39.7397, + "longitude": -105.174, + "elevation": 1764.428344726562, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1426, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"ABB\", \"inverter_model\": \"PVI 3k\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.0027, + "dc_capacity": 0.0027, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 30.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"AC_PowerA\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1426, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NREL,Baseline ambient_temperature", + "variable": "air_temperature", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NREL,Baseline", + "latitude": 39.7397, + "longitude": -105.174, + "elevation": 1764.428344726562, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1426, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"ABB\", \"inverter_model\": \"PVI 3k\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.0027, + "dc_capacity": 0.0027, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 30.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"ambient_temperature\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1426, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NREL,Baseline dc_power", + "variable": "dc_power", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NREL,Baseline", + "latitude": 39.7397, + "longitude": -105.174, + "elevation": 1764.428344726562, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1426, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"ABB\", \"inverter_model\": \"PVI 3k\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.0027, + "dc_capacity": 0.0027, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 30.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"dc_power\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1426, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + }, + { + "name": "RTC,NREL,Baseline poa_irradiance", + "variable": "poa_global", + "interval_value_type": "interval_mean", + "interval_length": 1.0, + "interval_label": "beginning", + "site": { + "name": "RTC,NREL,Baseline", + "latitude": 39.7397, + "longitude": -105.174, + "elevation": 1764.428344726562, + "timezone": "Etc/GMT+7", + "site_id": "", + "provider": "", + "extra_parameters": "{\"network_api_id\": 1426, \"attribution\": \"https://developer.nrel.gov/docs/solar/pvdaq-v3/\", \"network\": \"NREL PVDAQ\", \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"inverter_mfg\": \"ABB\", \"inverter_model\": \"PVI 3k\", \"module_mfg\": \"Suniva\", \"module_model\": \"OPT270-60 BLK-BLK\", \"module_tech\": \"\"}", + "modeling_parameters": { + "ac_capacity": 0.0027, + "dc_capacity": 0.0027, + "temperature_coefficient": 0.3, + "dc_loss_factor": 0, + "ac_loss_factor": 0, + "surface_tilt": 30.0, + "surface_azimuth": 180.0, + "tracking_type": "fixed" + } + }, + "uncertainty": 0, + "observation_id": "", + "provider": "", + "extra_parameters": "{\"network_data_label\": \"poa_irradiance\", \"network\": \"NREL PVDAQ\", \"network_api_id\": 1426, \"network_api_abbreviation\": \"pvdaq\", \"observation_interval_length\": 1, \"resample_how\": \"first\"}" + } + ] +} \ No newline at end of file diff --git a/solarforecastarbiter/io/reference_observations/reference_data.py b/solarforecastarbiter/io/reference_observations/reference_data.py index eb53f54a0..b26bc5396 100644 --- a/solarforecastarbiter/io/reference_observations/reference_data.py +++ b/solarforecastarbiter/io/reference_observations/reference_data.py @@ -38,6 +38,7 @@ rtc, common, arm, + pvdaq ) @@ -50,11 +51,12 @@ 'NREL MIDC': midc, 'DOE RTC': rtc, 'DOE ARM': arm, + 'NREL PVDAQ': pvdaq } # list of options for the 'network' argument NETWORK_OPTIONS = ['NOAA SURFRAD', 'NOAA SOLRAD', 'NOAA USCRN', 'NREL MIDC', - 'UO SRML', 'DOE RTC', 'DOE ARM'] + 'UO SRML', 'DOE RTC', 'DOE ARM', 'NREL PVDAQ'] DEFAULT_SITEFILE = resource_filename( Requirement.parse('solarforecastarbiter'), @@ -89,6 +91,9 @@ DOE ARM: DOE Atmospheric Radiation Measurement https://www.arm.gov/ + +NREL PVDAQ: National Renewable Energy Laboratory PV Data Acquisition +https://developer.nrel.gov/docs/solar/pvdaq-v3/ """ # noqa: E501 diff --git a/solarforecastarbiter/io/reference_observations/rtc.py b/solarforecastarbiter/io/reference_observations/rtc.py index 18a6c1735..ac309c10f 100644 --- a/solarforecastarbiter/io/reference_observations/rtc.py +++ b/solarforecastarbiter/io/reference_observations/rtc.py @@ -126,6 +126,8 @@ def update_observation_data(api, sites, observations, start, end): """Post new observation data to a list of DOE RTC Observations from start to end. + Parameters + ---------- api : solarforecastarbiter.io.api.APISession An active Reference user session. sites: list of solarforecastarbiter.datamodel.Site diff --git a/solarforecastarbiter/io/reference_observations/sfa_reference_sites.csv b/solarforecastarbiter/io/reference_observations/sfa_reference_sites.csv index 819bd0633..b13b498e2 100644 --- a/solarforecastarbiter/io/reference_observations/sfa_reference_sites.csv +++ b/solarforecastarbiter/io/reference_observations/sfa_reference_sites.csv @@ -224,3 +224,26 @@ interval_length,name,latitude,longitude,elevation,network_api_id,network_api_abb 1.0,"Southern Great Plains (SGP), Omega, Oklahoma",35.87969970703125,-98.17279815673828,373.0,sgpmetE38.b1,sgp,America/Chicago,"https://www.arm.gov/capabilities/vaps/qcrad",DOE ARM 1.0,"Southern Great Plains (SGP), Ringwood, Oklahoma",36.430999755859375,-98.28399658203124,414.0,sgpmetE15.b1,sgp,America/Chicago,"https://www.arm.gov/capabilities/vaps/qcrad",DOE ARM 1.0,"Southern Great Plains (SGP), Tryon, Oklahoma",35.86149978637695,-97.06950378417969,309.0,sgpmetE35.b1,sgp,America/Chicago,"https://www.arm.gov/capabilities/vaps/qcrad",DOE ARM +1,NREL x-Si #1,39.7406,-105.1774,1785.050170898438,4,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL CIS #1,39.7404,-105.1774,1783.616333007812,10,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,Silicor Materials,39.7404,-105.1772,1782.188354492188,33,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +15,Andre Agassi Preparatory Academy - Building A,36.1952,-115.1582,625.3253173828125,34,,Etc/GMT+8,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL Ribbon Si #1c,39.7407,-105.1773,1784.211669921875,39,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL x-Si #6,39.742,-105.1727,1777.210815429688,50,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL x-Si #7,39.7416,-105.1734,1775.096069335938,51,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +5,Distributed Sun - Hunt Valley,39.4856,-76.6636,100.5236282348633,1199,,Etc/GMT+5,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +5,Distributed Sun - BWI Hilton,39.1958,-76.6808,48.21525955200195,1200,,Etc/GMT+5,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +5,Distributed Sun - 5 Executive Campus,39.9283,-75.0481,6.49128532409668,1201,,Etc/GMT+5,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +5,Distributed Sun - 6 Executive Campus,39.9292,-75.0472,7.377955913543701,1202,,Etc/GMT+5,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL Visitor Parking Structure,39.7407,-105.1694,1759.846923828125,1208,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +15,Integrator #2 - Site A,40.8061,-73.8849,6.965095996856689,1232,,Etc/GMT+5,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +15,Integrator #2 - Site C,40.4335,-74.5106,35.21721267700195,1234,,Etc/GMT+5,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +15,Andre Agassi Preparatory Academy - Building B,36.1952,-115.1582,625.3253173828125,1276,,Etc/GMT+8,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +15,Andre Agassi Preparatory Academy - Building C,36.1952,-115.1582,625.3253173828125,1277,,Etc/GMT+8,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +15,Andre Agassi Preparatory Academy - Building D,36.1952,-115.1582,625.3253173828125,1278,,Etc/GMT+8,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL Research Support Facility II,39.7409,-105.1711,1764.8974609375,1283,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL CIGS#12,39.7405,-105.1774,1784.451416015625,1289,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,NREL Parking Garage,39.7388,-105.1732,1758.17724609375,1332,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,"RTC,FSEC,Baseline",28.405,-80.7709,10.27022838592529,1403,,Etc/GMT+5,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,"RTC,NV,Baseline",36.0275,-114.9215,695.5903930664062,1423,,Etc/GMT+8,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ +1,"RTC,NREL,Baseline",39.7397,-105.174,1764.428344726562,1426,,Etc/GMT+7,https://developer.nrel.gov/docs/solar/pvdaq-v3/,NREL PVDAQ diff --git a/solarforecastarbiter/io/reference_observations/tests/test_common.py b/solarforecastarbiter/io/reference_observations/tests/test_common.py index 02fa2810a..c28e2ec05 100644 --- a/solarforecastarbiter/io/reference_observations/tests/test_common.py +++ b/solarforecastarbiter/io/reference_observations/tests/test_common.py @@ -197,7 +197,7 @@ def test_create_observation_extra_parameters( mock_api.create_observation.assert_called_with(expected) -test_kwarg_observation = Observation.from_dict({ +observation_dict = { 'name': 'just observation', 'variable': 'ghi', 'interval_label': 'beginning', @@ -209,7 +209,8 @@ def test_create_observation_extra_parameters( '"network_api_id": "qcradlong1", ' '"network_api_abbreviation": "abbrv", ' '"observation_interval_length": 1}') -}) +} +test_kwarg_observation = Observation.from_dict(observation_dict) obs_kwargs = { 'interval_label': 'beginning', 'name': 'just observation', @@ -217,6 +218,33 @@ def test_create_observation_extra_parameters( 'uncertainty': 2, } +observation_dict_resample_mean = observation_dict.copy() +observation_dict_resample_mean['extra_parameters'] = ( + '{"network": "DOE ARM", ' + '"network_api_id": "qcradlong1", ' + '"network_api_abbreviation": "abbrv", ' + '"observation_interval_length": 1, ' + '"resample_how": "mean"}') +test_observation_mean = Observation.from_dict(observation_dict_resample_mean) + +observation_dict_resample_first = observation_dict.copy() +observation_dict_resample_first['extra_parameters'] = ( + '{"network": "DOE ARM", ' + '"network_api_id": "qcradlong1", ' + '"network_api_abbreviation": "abbrv", ' + '"observation_interval_length": 1, ' + '"resample_how": "first"}') +test_observation_first = Observation.from_dict(observation_dict_resample_first) + +observation_dict_resample_fail = observation_dict.copy() +observation_dict_resample_fail['extra_parameters'] = ( + '{"network": "DOE ARM", ' + '"network_api_id": "qcradlong1", ' + '"network_api_abbreviation": "abbrv", ' + '"observation_interval_length": 1, ' + '"resample_how": "nopethepope"}') +test_observation_fail = Observation.from_dict(observation_dict_resample_fail) + @pytest.mark.parametrize('site,variable,expected,kwargs', [ (site_objects[0], 'ghi', test_kwarg_observation, obs_kwargs), @@ -228,6 +256,13 @@ def test_create_observation_with_kwargs( mock_api.create_observation.assert_called_with(expected) +@pytest.mark.parametrize('observation,resample_how', [ + # all test data has same freq as observation.interval_length, + # so resample method should not matter + (test_kwarg_observation, None), + (test_observation_mean, 'mean'), + (test_observation_first, 'first') +]) @pytest.mark.parametrize('inp,expected', [ # nan kept (pd.DataFrame({'ghi': [0, 1, 4.0, None, 5, 6]}, dtype='float', @@ -265,12 +300,62 @@ def test_create_observation_with_kwargs( index=pd.DatetimeIndex( ['2019-10-04T1201Z', '2019-10-04T1202Z']))), ]) -def test_prepare_data_to_post(inp, expected): +def test_prepare_data_to_post(inp, expected, observation, resample_how): start = pd.Timestamp('2019-10-04T1200Z') end = pd.Timestamp('2019-10-04T1205Z') variable = 'ghi' - out = common._prepare_data_to_post(inp, variable, test_kwarg_observation, - start, end) + out = common._prepare_data_to_post(inp, variable, observation, start, end, + resample_how=resample_how) + pd.testing.assert_frame_equal(out, expected) + + +@pytest.mark.parametrize('inp,expected', [ + (pd.DataFrame({'ghi': [0, 1, 4.0, None, 5, 6] * 2}, dtype='float', + index=pd.date_range('2019-10-04T1200Z', freq='30s', + periods=12)), + pd.DataFrame({'value': [0.5, 4.0, 5.5, 0.5, 4.0, 5.5], + 'quality_flag': [0, 0, 0, 0, 0, 0]}, + index=pd.date_range('2019-10-04T1200Z', freq='1min', + periods=6))), + (pd.DataFrame({'ghi': [0, 1, None, None, 5, 6] * 2}, dtype='float', + index=pd.date_range('2019-10-04T1200Z', freq='30s', + periods=12)), + pd.DataFrame({'value': [0.5, None, 5.5, 0.5, None, 5.5], + 'quality_flag': [0, 1, 0, 0, 1, 0]}, + index=pd.date_range('2019-10-04T1200Z', freq='1min', + periods=6))), +]) +def test_prepare_data_to_post_mean(inp, expected): + start = pd.Timestamp('2019-10-04T1200Z') + end = pd.Timestamp('2019-10-04T1205Z') + variable = 'ghi' + out = common._prepare_data_to_post(inp, variable, test_observation_mean, + start, end, resample_how='mean') + pd.testing.assert_frame_equal(out, expected) + + +@pytest.mark.parametrize('inp,expected', [ + (pd.DataFrame({'ghi': [0, 1, None, 4.0, 5, 6] * 2}, dtype='float', + index=pd.date_range('2019-10-04T1200Z', freq='30s', + periods=12)), + pd.DataFrame({'value': [0.0, 4.0, 5.0, 0.0, 4.0, 5.0], + 'quality_flag': [0, 0, 0, 0, 0, 0]}, + index=pd.date_range('2019-10-04T1200Z', freq='1min', + periods=6))), + (pd.DataFrame({'ghi': [0, 1, None, None, 5, 6] * 2}, dtype='float', + index=pd.date_range('2019-10-04T1200Z', freq='30s', + periods=12)), + pd.DataFrame({'value': [0.0, None, 5.0, 0.0, None, 5.0], + 'quality_flag': [0, 1, 0, 0, 1, 0]}, + index=pd.date_range('2019-10-04T1200Z', freq='1min', + periods=6))), +]) +def test_prepare_data_to_post_first(inp, expected): + start = pd.Timestamp('2019-10-04T1200Z') + end = pd.Timestamp('2019-10-04T1205Z') + variable = 'ghi' + out = common._prepare_data_to_post(inp, variable, test_observation_first, + start, end, resample_how='first') pd.testing.assert_frame_equal(out, expected) @@ -356,6 +441,13 @@ def test_post_observation_data_all_nans( assert ret is None +def test_post_observation_data_AttributeError( + mock_api, log, fake_ghi_data, start, end): + common.post_observation_data(mock_api, test_observation_fail, + fake_ghi_data, start, end) + log.error.assert_called() + + @pytest.fixture() def now(mocker): now = pd.Timestamp('20190108T11:32:00Z') diff --git a/solarforecastarbiter/io/reference_observations/tests/test_ref_pvdaq.py b/solarforecastarbiter/io/reference_observations/tests/test_ref_pvdaq.py new file mode 100644 index 000000000..b4a40e446 --- /dev/null +++ b/solarforecastarbiter/io/reference_observations/tests/test_ref_pvdaq.py @@ -0,0 +1,167 @@ +import re + +import pandas as pd + +import pytest + +from solarforecastarbiter.datamodel import ( + SolarPowerPlant, FixedTiltModelingParameters) +from solarforecastarbiter.io import api +from solarforecastarbiter.io.reference_observations import pvdaq + + +@pytest.fixture +def session(requests_mock): + return api.APISession('') + + +@pytest.fixture +def site(): + return SolarPowerPlant( + name='NREL x-Si #1', + latitude=39.7406, + longitude=-105.1774, + elevation=1785.050170898438, + timezone='Etc/GMT+7', + site_id='', + provider='', + extra_parameters='{"network_api_id": 4, "attribution": "https://developer.nrel.gov/docs/solar/pvdaq-v3/", "network": "NREL PVDAQ", "network_api_abbreviation": "pvdaq", "observation_interval_length": 1, "inverter_mfg": "SMA", "inverter_model": "1800", "module_mfg": "Sanyo", "module_model": "HIP 200-BA3", "module_tech": "1"}', # noqa: E501 + modeling_parameters=FixedTiltModelingParameters( + ac_capacity=0.001, + dc_capacity=0.001, + temperature_coefficient=0.3, + dc_loss_factor=0, + ac_loss_factor=0, + surface_tilt=40.0, + surface_azimuth=180.0, + tracking_type='fixed')) + + +@pytest.fixture +def site_no_extra(): + return SolarPowerPlant( + name='NREL x-Si #1', + latitude=39.7406, + longitude=-105.1774, + elevation=1785.050170898438, + timezone='Etc/GMT+7', + site_id='', + provider='', + extra_parameters='', + modeling_parameters=FixedTiltModelingParameters( + ac_capacity=0.001, + dc_capacity=0.001, + temperature_coefficient=0.3, + dc_loss_factor=0, + ac_loss_factor=0, + surface_tilt=40.0, + surface_azimuth=180.0, + tracking_type='fixed')) + + +@pytest.fixture +def log(mocker): + log = mocker.patch('solarforecastarbiter.io.reference_observations.' + 'pvdaq.logger') + return log + + +@pytest.fixture() +def mock_list_sites(mocker, many_sites): + mocker.patch('solarforecastarbiter.io.api.APISession.list_sites', + return_value=many_sites) + + +def test_initialize_site_observations( + requests_mock, mocker, session, site, single_observation, + single_observation_text, mock_list_sites): + matcher = re.compile(f'{session.base_url}/observations/.*') + requests_mock.register_uri('POST', matcher, + text=single_observation.observation_id) + requests_mock.register_uri('GET', matcher, content=single_observation_text) + status = mocker.patch( + 'solarforecastarbiter.io.api.APISession.create_observation') + pvdaq.initialize_site_observations(session, site) + assert status.called + + +def test_initialize_site_observations_fail(session, site_no_extra, log): + pvdaq.initialize_site_observations(session, site_no_extra) + assert log.warning.call_count == 1 + + +def test_initialize_site_forecasts( + requests_mock, mocker, session, site, single_forecast, + single_forecast_text, mock_list_sites): + matcher = re.compile(f'{session.base_url}/forecasts/.*') + requests_mock.register_uri('POST', matcher, + text=single_forecast.forecast_id) + requests_mock.register_uri('GET', matcher, content=single_forecast_text) + status = mocker.patch( + 'solarforecastarbiter.io.reference_observations.common.' + 'create_forecasts') + pvdaq.initialize_site_forecasts(session, site) + assert status.called + + +def test_initialize_site_forecasts_fail(session, site_no_extra, log): + pvdaq.initialize_site_forecasts(session, site_no_extra) + assert log.warning.call_count == 1 + + +def test_fetch(mocker, session, site): + status = mocker.patch( + 'solarforecastarbiter.io.fetch.pvdaq.get_pvdaq_data' + ) + start = pd.Timestamp('2020-01-01T0000Z') + end = pd.Timestamp('2020-01-02T0000Z') + api_key = 'nopethepope' + pvdaq.fetch(session, site, start, end, nrel_pvdaq_api_key=api_key) + assert status.called + + +def test_fetch_fail(session, site_no_extra): + start = pd.Timestamp('2020-01-01T0000Z') + end = pd.Timestamp('2020-01-02T0000Z') + api_key = 'nopethepope' + out = pvdaq.fetch(session, site_no_extra, start, end, + nrel_pvdaq_api_key=api_key) + assert out.empty + + +def test_fetch_fail_except(session, site, mocker, log): + start = pd.Timestamp('2020-01-01T0000Z') + end = pd.Timestamp('2020-01-02T0000Z') + api_key = 'nopethepope' + status = mocker.patch( + 'solarforecastarbiter.io.fetch.pvdaq.get_pvdaq_data' + ) + status.side_effect = Exception + out = pvdaq.fetch(session, site, start, end, + nrel_pvdaq_api_key=api_key) + assert log.warning.call_count == 1 + assert out.empty + + +@pytest.fixture +def mock_pvdaq_creds(mocker): + mocker.patch.dict('os.environ', {'NREL_PVDAQ_API_KEY': 'fake_key'}) + + +def test_update_observation_data(mocker, session, site, mock_pvdaq_creds): + obs_update = mocker.patch( + 'solarforecastarbiter.io.reference_observations.common.' + 'update_site_observations') + start = pd.Timestamp('20200101T0000Z') + end = pd.Timestamp('20200102T0000Z') + pvdaq.update_observation_data(session, [site], [], start, end) + obs_update.assert_called() + assert obs_update.call_count == 1 + + +def test_update_observation_data_no_creds(session, site): + start = pd.Timestamp('20200101T0000Z') + end = pd.Timestamp('20200102T0000Z') + with pytest.raises(KeyError) as e: + pvdaq.update_observation_data(session, [site], [], start, end) + assert 'environment variable' in str(e.value)