diff --git a/homeassistant/components/sleepiq/__init__.py b/homeassistant/components/sleepiq/__init__.py index 3399fcb43c5..9227b872080 100644 --- a/homeassistant/components/sleepiq/__init__.py +++ b/homeassistant/components/sleepiq/__init__.py @@ -11,22 +11,12 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -DOMAIN = "sleepiq" +from .const import DOMAIN MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=30) -IS_IN_BED = "is_in_bed" -SLEEP_NUMBER = "sleep_number" -SENSOR_TYPES = {SLEEP_NUMBER: "SleepNumber", IS_IN_BED: "Is In Bed"} - -LEFT = "left" -RIGHT = "right" -SIDES = [LEFT, RIGHT] - _LOGGER = logging.getLogger(__name__) -DATA = None - CONFIG_SCHEMA = vol.Schema( { vol.Required(DOMAIN): vol.Schema( @@ -46,14 +36,14 @@ def setup(hass, config): Will automatically load sensor components to support devices discovered on the account. """ - global DATA # pylint: disable=global-statement + data = None username = config[DOMAIN][CONF_USERNAME] password = config[DOMAIN][CONF_PASSWORD] client = Sleepyq(username, password) try: - DATA = SleepIQData(client) - DATA.update() + data = SleepIQData(client) + data.update() except ValueError: message = """ SleepIQ failed to login, double check your username and password" @@ -61,6 +51,7 @@ def setup(hass, config): _LOGGER.error(message) return False + hass.data[DOMAIN] = data discovery.load_platform(hass, "sensor", DOMAIN, {}, config) discovery.load_platform(hass, "binary_sensor", DOMAIN, {}, config) diff --git a/homeassistant/components/sleepiq/binary_sensor.py b/homeassistant/components/sleepiq/binary_sensor.py index 8396537a2a0..2e502859601 100644 --- a/homeassistant/components/sleepiq/binary_sensor.py +++ b/homeassistant/components/sleepiq/binary_sensor.py @@ -1,33 +1,35 @@ """Support for SleepIQ sensors.""" -from homeassistant.components import sleepiq from homeassistant.components.binary_sensor import BinarySensorDevice +from . import SleepIQSensor +from .const import DOMAIN, IS_IN_BED, SENSOR_TYPES, SIDES + def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the SleepIQ sensors.""" if discovery_info is None: return - data = sleepiq.DATA + data = hass.data[DOMAIN] data.update() dev = [] for bed_id, bed in data.beds.items(): - for side in sleepiq.SIDES: + for side in SIDES: if getattr(bed, side) is not None: dev.append(IsInBedBinarySensor(data, bed_id, side)) add_entities(dev) -class IsInBedBinarySensor(sleepiq.SleepIQSensor, BinarySensorDevice): +class IsInBedBinarySensor(SleepIQSensor, BinarySensorDevice): """Implementation of a SleepIQ presence sensor.""" def __init__(self, sleepiq_data, bed_id, side): """Initialize the sensor.""" - sleepiq.SleepIQSensor.__init__(self, sleepiq_data, bed_id, side) - self.type = sleepiq.IS_IN_BED + SleepIQSensor.__init__(self, sleepiq_data, bed_id, side) + self.type = IS_IN_BED self._state = None - self._name = sleepiq.SENSOR_TYPES[self.type] + self._name = SENSOR_TYPES[self.type] self.update() @property @@ -42,5 +44,5 @@ class IsInBedBinarySensor(sleepiq.SleepIQSensor, BinarySensorDevice): def update(self): """Get the latest data from SleepIQ and updates the states.""" - sleepiq.SleepIQSensor.update(self) + SleepIQSensor.update(self) self._state = self.side.is_in_bed diff --git a/homeassistant/components/sleepiq/const.py b/homeassistant/components/sleepiq/const.py new file mode 100644 index 00000000000..64f508167e1 --- /dev/null +++ b/homeassistant/components/sleepiq/const.py @@ -0,0 +1,11 @@ +"""Define constants for the SleepIQ component.""" + +DOMAIN = "sleepiq" + +IS_IN_BED = "is_in_bed" +SLEEP_NUMBER = "sleep_number" +SENSOR_TYPES = {SLEEP_NUMBER: "SleepNumber", IS_IN_BED: "Is In Bed"} + +LEFT = "left" +RIGHT = "right" +SIDES = [LEFT, RIGHT] diff --git a/homeassistant/components/sleepiq/sensor.py b/homeassistant/components/sleepiq/sensor.py index 404823abe96..b4c3054268d 100644 --- a/homeassistant/components/sleepiq/sensor.py +++ b/homeassistant/components/sleepiq/sensor.py @@ -1,5 +1,6 @@ """Support for SleepIQ sensors.""" -from homeassistant.components import sleepiq +from . import SleepIQSensor +from .const import DOMAIN, SENSOR_TYPES, SIDES, SLEEP_NUMBER ICON = "mdi:hotel" @@ -9,27 +10,27 @@ def setup_platform(hass, config, add_entities, discovery_info=None): if discovery_info is None: return - data = sleepiq.DATA + data = hass.data[DOMAIN] data.update() dev = [] for bed_id, bed in data.beds.items(): - for side in sleepiq.SIDES: + for side in SIDES: if getattr(bed, side) is not None: dev.append(SleepNumberSensor(data, bed_id, side)) add_entities(dev) -class SleepNumberSensor(sleepiq.SleepIQSensor): +class SleepNumberSensor(SleepIQSensor): """Implementation of a SleepIQ sensor.""" def __init__(self, sleepiq_data, bed_id, side): """Initialize the sensor.""" - sleepiq.SleepIQSensor.__init__(self, sleepiq_data, bed_id, side) + SleepIQSensor.__init__(self, sleepiq_data, bed_id, side) self._state = None - self.type = sleepiq.SLEEP_NUMBER - self._name = sleepiq.SENSOR_TYPES[self.type] + self.type = SLEEP_NUMBER + self._name = SENSOR_TYPES[self.type] self.update() @@ -45,5 +46,5 @@ class SleepNumberSensor(sleepiq.SleepIQSensor): def update(self): """Get the latest data from SleepIQ and updates the states.""" - sleepiq.SleepIQSensor.update(self) + SleepIQSensor.update(self) self._state = self.side.sleep_number