Skip to content

Commit

Permalink
Merge pull request home-assistant#2195 from home-assistant/hotfix-20-3
Browse files Browse the repository at this point in the history
Hotfix 20 3
  • Loading branch information
balloob committed Jun 2, 2016
2 parents 644d5de + c3b6086 commit 6c5efd5
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 19 deletions.
75 changes: 57 additions & 18 deletions homeassistant/components/sensor/forecast.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,26 +131,38 @@ def unit_system(self):
"""Return the unit system of this entity."""
return self._unit_system

# pylint: disable=too-many-branches
# pylint: disable=too-many-branches,too-many-statements
def update(self):
"""Get the latest data from Forecast.io and updates the states."""
import forecastio

self.forecast_client.update()
data = self.forecast_client.data.currently()
data_minutely = self.forecast_client.data.minutely()
data_hourly = self.forecast_client.data.hourly()
data_daily = self.forecast_client.data.daily()

try:
if self.type == 'summary':
self._state = data.summary
elif self.type == 'minutely_summary':
self._state = data_minutely.summary
if self.type == 'minutely_summary':
self.forecast_client.update_minutely()
self._state = self.forecast_client.data_minutely.summary
return

elif self.type == 'hourly_summary':
self._state = data_hourly.summary
self.forecast_client.update_hourly()
self._state = self.forecast_client.data_hourly.summary
return

elif self.type == 'daily_summary':
self._state = data_daily.summary
self.forecast_client.update_daily()
self._state = self.forecast_client.data_daily.summary
return

except forecastio.utils.PropertyUnavailable:
return

self.forecast_client.update_currently()
data = self.forecast_client.data_currently

try:
if self.type == 'summary':
self._state = data.summary
elif self.type == 'icon':
self._state = data.icon
elif self.type == 'nearest_storm_distance':
Expand Down Expand Up @@ -191,24 +203,51 @@ def update(self):
class ForeCastData(object):
"""Gets the latest data from Forecast.io."""

# pylint: disable=too-many-instance-attributes

def __init__(self, api_key, latitude, longitude, units):
"""Initialize the data object."""
self._api_key = api_key
self.latitude = latitude
self.longitude = longitude
self.units = units

self.data = None
self.unit_system = None
self.units = units
self.data_currently = None
self.data_minutely = None
self.data_hourly = None
self.data_daily = None

self.update()

@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update(self):
"""Get the latest data from Forecast.io."""
import forecastio

forecast = forecastio.load_forecast(self._api_key,
self.latitude,
self.longitude,
units=self.units)
self.data = forecast
self.unit_system = forecast.json['flags']['units']
self.data = forecastio.load_forecast(self._api_key,
self.latitude,
self.longitude,
units=self.units)
self.unit_system = self.data.json['flags']['units']

@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update_currently(self):
"""Update currently data."""
self.data_currently = self.data.currently()

@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update_minutely(self):
"""Update minutely data."""
self.data_minutely = self.data.minutely()

@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update_hourly(self):
"""Update hourly data."""
self.data_hourly = self.data.hourly()

@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update_daily(self):
"""Update daily data."""
self.data_daily = self.data.daily()
2 changes: 1 addition & 1 deletion homeassistant/const.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# coding: utf-8
"""Constants used by Home Assistant components."""

__version__ = "0.20.2"
__version__ = "0.20.3"
REQUIRED_PYTHON_VER = (3, 4)

PLATFORM_FORMAT = '{}.{}'
Expand Down

0 comments on commit 6c5efd5

Please sign in to comment.