From 2e6108365eb98ca888ada17d333c570df609dbbe Mon Sep 17 00:00:00 2001 From: springstan <46536646+springstan@users.noreply.github.com> Date: Mon, 6 Apr 2020 00:46:50 +0200 Subject: [PATCH] Remove global variable from sleepiq (#33715) * Remove global variable from sleepiq * Remove global variable from sleepiq v2 * Create constant file * Move back time constant * Update homeassistant/components/sleepiq/__init__.py Co-Authored-By: Quentame Co-authored-by: Quentame --- homeassistant/components/sleepiq/__init__.py | 19 +++++-------------- .../components/sleepiq/binary_sensor.py | 18 ++++++++++-------- homeassistant/components/sleepiq/const.py | 11 +++++++++++ homeassistant/components/sleepiq/sensor.py | 17 +++++++++-------- 4 files changed, 35 insertions(+), 30 deletions(-) create mode 100644 homeassistant/components/sleepiq/const.py 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