Source code for thermostat.eeweather_wrapper
from datetime import datetime
import eeweather
import pandas as pd
# This routine is a compact and distilled version of code that was originally
# released as eeweather_wrapper.py
# https://github.com/openeemeter/eemeter/blob/345afcb40ce5786bfbd117cb51536d7ca807a32c/eemeter/weather/eeweather_wrapper.py
#
# Copyright 2017 Open Energy Efficiency
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
def _convert_to_farenheit(x):
""" Converts Celsius to Fahrenheit
Parameters
----------
x : float
Temperature in Celsius
Returns
-------
float
"""
return 1.8 * x + 32
[docs]def get_indexed_temperatures_eeweather(usaf_id, index):
""" Helper routine to return average temperatures over the given index in Fahrenheit
Parameters
----------
usaf_id : string
USAF ID of the station to look up
index : pandas.DatetimeIndex
Index over which to supply average temperatures.
Returns
-------
temperatures : pandas.Series with DatetimeIndex
Average temperatures over series indexed by :code:`index`.
"""
if index.shape == (0,):
return pd.Series([], index=index, dtype=float)
years = sorted(index.groupby(index.year).keys())
start = pd.to_datetime(datetime(years[0], 1, 1), utc=True)
end = pd.to_datetime(datetime(years[-1], 12, 31, 23, 59), utc=True)
tempC, warnings = eeweather.load_isd_hourly_temp_data(usaf_id, start, end)
tempC = tempC.resample('H').mean()[index]
tempF = _convert_to_farenheit(tempC)
return tempF