homeassistant-config/custom_components/cover_half/__init__.py

46 lines
1.5 KiB
Python

""" Service to set covers half open"""
import logging
import voluptuous as vol
from homeassistant.components.cover import DOMAIN as COVER_DOMAIN, ATTR_POSITION
from homeassistant.const import SERVICE_SET_COVER_POSITION, ATTR_ENTITY_ID
# The domain of your component. Should be equal to the name of your component.
from homeassistant.helpers.service import async_extract_entity_ids
DOMAIN = "cover_half"
# List of component names (string) your component depends upon.
# We depend on group because group will be loaded after all the components that
# initialize devices have been setup.
DEPENDENCIES = ['group', 'cover']
# Name of the service that we expose.
SERVICE_SET_HALF = 'set_half'
ATTR_HALF_POSITION = 'half_position'
# Shortcut for the logger
_LOGGER = logging.getLogger(__name__)
# Validate that all required config options are given.
CONFIG_SCHEMA = vol.Schema({
DOMAIN: vol.Schema({})
}, extra=vol.ALLOW_EXTRA)
async def async_setup(hass, config):
"""Setup example component."""
async def async_set_half_service(service):
entity_ids = await async_extract_entity_ids(hass, service, expand_group=True)
for entity_id in entity_ids:
data = {
ATTR_ENTITY_ID: entity_id,
ATTR_POSITION: hass.states.get(entity_id).attributes.get(ATTR_HALF_POSITION, 20)
}
await hass.services.async_call(COVER_DOMAIN, SERVICE_SET_COVER_POSITION, data)
hass.services.async_register(DOMAIN, SERVICE_SET_HALF, async_set_half_service)
return True