Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Ryobi platform for the cover component.
- For more details about this platform, please refer to the documentation
- https://home-assistant.io/components/cover.ryobi_gdo/
- """
- import logging
- import voluptuous as vol
- import homeassistant.helpers.config_validation as cv
- from homeassistant.components.cover import (
- CoverDevice, PLATFORM_SCHEMA, SUPPORT_OPEN, SUPPORT_CLOSE)
- from homeassistant.const import (
- CONF_USERNAME, CONF_PASSWORD, STATE_UNKNOWN, STATE_CLOSED)
- REQUIREMENTS = ['py_ryobi_gdo==0.0.27']
- _LOGGER = logging.getLogger(__name__)
- CONF_DEVICE_ID = 'device_id'
- PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- vol.Required(CONF_DEVICE_ID): vol.All(cv.ensure_list, [cv.string]),
- vol.Required(CONF_PASSWORD): cv.string,
- vol.Required(CONF_USERNAME): cv.string,
- })
- SUPPORTED_FEATURES = (SUPPORT_OPEN | SUPPORT_CLOSE)
- def setup_platform(hass, config, add_entities, discovery_info=None):
- """Set up the Ryobi covers."""
- from py_ryobi_gdo import RyobiGDO as ryobi_door
- covers = []
- username = config.get(CONF_USERNAME)
- password = config.get(CONF_PASSWORD)
- devices = config.get(CONF_DEVICE_ID)
- for device_id in devices:
- my_door = ryobi_door(username, password, device_id)
- _LOGGER.debug("Getting the API key")
- if my_door.get_api_key() is False:
- _LOGGER.error("Wrong credentials, no API key retrieved")
- return
- _LOGGER.debug("Checking if the device ID is present")
- if my_door.check_device_id() is False:
- _LOGGER.error("%s not in your device list", device_id)
- return
- _LOGGER.debug("Adding device %s to covers", device_id)
- covers.append(RyobiCover(hass, my_door))
- if covers:
- _LOGGER.debug("Adding covers")
- add_entities(covers, True)
- class RyobiCover(CoverDevice):
- """Representation of a ryobi cover."""
- def __init__(self, hass, ryobi_door):
- """Initialize the cover."""
- self.ryobi_door = ryobi_door
- self._name = 'ryobi_gdo_{}'.format(ryobi_door.get_device_id())
- self._door_state = None
- @property
- def name(self):
- """Return the name of the cover."""
- return self._name
- @property
- def is_closed(self):
- """Return if the cover is closed."""
- if self._door_state == STATE_UNKNOWN:
- return False
- return self._door_state == STATE_CLOSED
- @property
- def device_class(self):
- """Return the class of this device, from component DEVICE_CLASSES."""
- return 'garage'
- @property
- def supported_features(self):
- """Flag supported features."""
- return SUPPORTED_FEATURES
- def close_cover(self, **kwargs):
- """Close the cover."""
- _LOGGER.debug("Closing garage door")
- self.ryobi_door.close_device()
- def open_cover(self, **kwargs):
- """Open the cover."""
- _LOGGER.debug("Opening garage door")
- self.ryobi_door.open_device()
- def update(self):
- """Update status from the door."""
- _LOGGER.debug("Updating RyobiGDO status")
- self.ryobi_door.update()
- self._door_state = self.ryobi_door.get_door_status()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement