Exemple #1
0
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
Exemple #2
0
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 = _watts_to_mw(obs_df)
    try:
        obs_df = obs_df.tz_localize(site.timezone)
    except NonExistentTimeError as e:
        logger.warning(f'Could not localize data for site {site.name} '
                       f'due to DST issue: {e}')
        return pd.DataFrame()
    return obs_df
Exemple #3
0
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