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 <polletquentin74@me.com>

Co-authored-by: Quentame <polletquentin74@me.com>
pull/33726/head
springstan 2020-04-06 00:46:50 +02:00 committed by GitHub
parent 67c3a4c970
commit 2e6108365e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 30 deletions

View File

@ -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)

View File

@ -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

View File

@ -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]

View File

@ -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