core/homeassistant/components/smarthab/light.py

70 lines
1.7 KiB
Python
Raw Normal View History

"""Support for SmartHab device integration."""
from datetime import timedelta
import logging
import pysmarthab
from requests.exceptions import Timeout
2020-04-26 16:49:41 +00:00
from homeassistant.components.light import LightEntity
from . import DATA_HUB, DOMAIN
_LOGGER = logging.getLogger(__name__)
SCAN_INTERVAL = timedelta(seconds=60)
def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the SmartHab lights platform."""
hub = hass.data[DOMAIN][DATA_HUB]
devices = hub.get_device_list()
_LOGGER.debug("Found a total of %s devices", str(len(devices)))
2019-07-31 19:25:30 +00:00
entities = (
SmartHabLight(light) for light in devices if isinstance(light, pysmarthab.Light)
)
add_entities(entities, True)
2020-04-26 16:49:41 +00:00
class SmartHabLight(LightEntity):
"""Representation of a SmartHab Light."""
def __init__(self, light):
"""Initialize a SmartHabLight."""
self._light = light
@property
def unique_id(self) -> str:
"""Return a unique ID."""
return self._light.device_id
@property
def name(self) -> str:
"""Return the display name of this light."""
return self._light.label
@property
def is_on(self) -> bool:
"""Return true if light is on."""
return self._light.state
def turn_on(self, **kwargs):
"""Instruct the light to turn on."""
self._light.turn_on()
def turn_off(self, **kwargs):
"""Instruct the light to turn off."""
self._light.turn_off()
def update(self):
"""Fetch new state data for this light."""
try:
self._light.update()
except Timeout:
2019-07-31 19:25:30 +00:00
_LOGGER.error(
"Reached timeout while updating light %s from API", self.entity_id
)