diff --git a/homeassistant/components/binary_sensor/digital_ocean.py b/homeassistant/components/binary_sensor/digital_ocean.py index ea02196f3eb..d9a0ac6711b 100644 --- a/homeassistant/components/binary_sensor/digital_ocean.py +++ b/homeassistant/components/binary_sensor/digital_ocean.py @@ -8,19 +8,18 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.components.binary_sensor import ( BinarySensorDevice, PLATFORM_SCHEMA) from homeassistant.components.digital_ocean import ( CONF_DROPLETS, ATTR_CREATED_AT, ATTR_DROPLET_ID, ATTR_DROPLET_NAME, ATTR_FEATURES, ATTR_IPV4_ADDRESS, ATTR_IPV6_ADDRESS, ATTR_MEMORY, - ATTR_REGION, ATTR_VCPUS) -from homeassistant.loader import get_component -import homeassistant.helpers.config_validation as cv + ATTR_REGION, ATTR_VCPUS, DATA_DIGITAL_OCEAN) _LOGGER = logging.getLogger(__name__) DEFAULT_NAME = 'Droplet' -DEFAULT_SENSOR_CLASS = 'motion' +DEFAULT_SENSOR_CLASS = 'moving' DEPENDENCIES = ['digital_ocean'] PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -30,19 +29,21 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the Digital Ocean droplet sensor.""" - digital_ocean = get_component('digital_ocean') + digital = hass.data.get(DATA_DIGITAL_OCEAN) + if not digital: + return False + droplets = config.get(CONF_DROPLETS) dev = [] for droplet in droplets: - droplet_id = digital_ocean.DIGITAL_OCEAN.get_droplet_id(droplet) + droplet_id = digital.get_droplet_id(droplet) if droplet_id is None: _LOGGER.error("Droplet %s is not available", droplet) return False - dev.append(DigitalOceanBinarySensor( - digital_ocean.DIGITAL_OCEAN, droplet_id)) + dev.append(DigitalOceanBinarySensor(digital, droplet_id)) - add_devices(dev) + add_devices(dev, True) class DigitalOceanBinarySensor(BinarySensorDevice): @@ -53,7 +54,7 @@ class DigitalOceanBinarySensor(BinarySensorDevice): self._digital_ocean = do self._droplet_id = droplet_id self._state = None - self.update() + self.data = None @property def name(self): diff --git a/homeassistant/components/digital_ocean.py b/homeassistant/components/digital_ocean.py index b133aa5f48f..6ba2c824859 100644 --- a/homeassistant/components/digital_ocean.py +++ b/homeassistant/components/digital_ocean.py @@ -29,7 +29,7 @@ ATTR_VCPUS = 'vcpus' CONF_DROPLETS = 'droplets' -DIGITAL_OCEAN = None +DATA_DIGITAL_OCEAN = 'data_do' DIGITAL_OCEAN_PLATFORMS = ['switch', 'binary_sensor'] DOMAIN = 'digital_ocean' @@ -47,13 +47,14 @@ def setup(hass, config): conf = config[DOMAIN] access_token = conf.get(CONF_ACCESS_TOKEN) - global DIGITAL_OCEAN - DIGITAL_OCEAN = DigitalOcean(access_token) + digital = DigitalOcean(access_token) - if not DIGITAL_OCEAN.manager.get_account(): + if not digital.manager.get_account(): _LOGGER.error("No Digital Ocean account found for the given API Token") return False + hass.data[DATA_DIGITAL_OCEAN] = digital + return True diff --git a/homeassistant/components/switch/digital_ocean.py b/homeassistant/components/switch/digital_ocean.py index c873439dd58..081eea80e2d 100644 --- a/homeassistant/components/switch/digital_ocean.py +++ b/homeassistant/components/switch/digital_ocean.py @@ -8,13 +8,12 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.components.switch import (SwitchDevice, PLATFORM_SCHEMA) from homeassistant.components.digital_ocean import ( CONF_DROPLETS, ATTR_CREATED_AT, ATTR_DROPLET_ID, ATTR_DROPLET_NAME, ATTR_FEATURES, ATTR_IPV4_ADDRESS, ATTR_IPV6_ADDRESS, ATTR_MEMORY, - ATTR_REGION, ATTR_VCPUS) -from homeassistant.loader import get_component -import homeassistant.helpers.config_validation as cv + ATTR_REGION, ATTR_VCPUS, DATA_DIGITAL_OCEAN) _LOGGER = logging.getLogger(__name__) @@ -29,19 +28,21 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the Digital Ocean droplet switch.""" - digital_ocean = get_component('digital_ocean') + digital = hass.data.get(DATA_DIGITAL_OCEAN) + if not digital: + return False + droplets = config.get(CONF_DROPLETS) dev = [] for droplet in droplets: - droplet_id = digital_ocean.DIGITAL_OCEAN.get_droplet_id(droplet) + droplet_id = digital.get_droplet_id(droplet) if droplet_id is None: _LOGGER.error("Droplet %s is not available", droplet) return False - dev.append(DigitalOceanSwitch( - digital_ocean.DIGITAL_OCEAN, droplet_id)) + dev.append(DigitalOceanSwitch(digital, droplet_id)) - add_devices(dev) + add_devices(dev, True) class DigitalOceanSwitch(SwitchDevice): @@ -54,8 +55,6 @@ class DigitalOceanSwitch(SwitchDevice): self.data = None self._state = None - self.update() - @property def name(self): """Return the name of the switch."""