46 lines
1.5 KiB
Python
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
|