diff --git a/homeassistant/components/updater.py b/homeassistant/components/updater.py index 8fa447183ad..cd03e6f00fc 100644 --- a/homeassistant/components/updater.py +++ b/homeassistant/components/updater.py @@ -10,13 +10,15 @@ import logging import requests -from homeassistant.const import __version__ as CURRENT_VERSION +from homeassistant.const import __version__ as ( + CURRENT_VERSION, ATTR_FRIENDLY_NAME) from homeassistant.helpers import event _LOGGER = logging.getLogger(__name__) PYPI_URL = 'https://pypi.python.org/pypi/homeassistant/json' DEPENDENCIES = [] DOMAIN = 'updater' +ENTITY_ID = 'updater.updater' def setup(hass, config): @@ -24,16 +26,25 @@ def setup(hass, config): def check_newest_version(_=None): ''' check if a new version is available and report if one is ''' - newest = get_newest_version() + + try: + newest = get_newest_version() + except requests.RequestException: + _LOGGER.exception('Could not contact PyPI to check for updates') + return + except ValueError: + _LOGGER.exception('Received invalid response from PyPI') + return + except KeyError: + _LOGGER.exception('Response from PyPI did not include version') + return + if newest != CURRENT_VERSION and newest is not None: hass.states.set( - '{}.Update'.format(DOMAIN), newest, - {'friendly_name': 'Update Available'}) + ENTITY_ID, newest, {'friendly_name': 'Update Available'}) event.track_time_change(hass, check_newest_version, - hour=12, minute=0, second=0) - event.track_time_change(hass, check_newest_version, - hour=0, minute=0, second=0) + hour=[0, 12], minute=0, second=0) check_newest_version() @@ -42,10 +53,5 @@ def setup(hass, config): def get_newest_version(): ''' Get the newest HA version form PyPI ''' - try: - req = requests.get(PYPI_URL) - except OSError: - _LOGGER.warning('Could not contact PyPI to check for updates') - return - + req = requests.get(PYPI_URL) return req.json()['info']['version']