1
mirror of https://github.com/home-assistant/core synced 2024-09-15 17:29:45 +02:00

Add area support to climate service schemas (#25441)

* Add area support to climate service schemas

* Incorrect Voluptuous usage

* Fix typo
This commit is contained in:
Aaron Bach 2019-07-23 14:33:41 -06:00 committed by GitHub
parent 20ed07cc5c
commit 2850f9d19e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,11 +7,11 @@ from typing import Any, Dict, List, Optional
import voluptuous as vol
from homeassistant.const import (
ATTR_ENTITY_ID, ATTR_TEMPERATURE, PRECISION_TENTHS, PRECISION_WHOLE,
SERVICE_TURN_OFF, SERVICE_TURN_ON, STATE_OFF, STATE_ON, TEMP_CELSIUS)
ATTR_TEMPERATURE, PRECISION_TENTHS, PRECISION_WHOLE, SERVICE_TURN_OFF,
SERVICE_TURN_ON, STATE_OFF, STATE_ON, TEMP_CELSIUS)
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.config_validation import ( # noqa
PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE)
ENTITY_SERVICE_SCHEMA, PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE)
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.entity_component import EntityComponent
from homeassistant.helpers.temperature import display_temp as show_temp
@ -50,42 +50,32 @@ CONVERTIBLE_ATTRIBUTE = [
_LOGGER = logging.getLogger(__name__)
TURN_ON_OFF_SCHEMA = vol.Schema({
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
})
SET_AUX_HEAT_SCHEMA = vol.Schema({
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
SET_AUX_HEAT_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({
vol.Required(ATTR_AUX_HEAT): cv.boolean,
})
SET_TEMPERATURE_SCHEMA = vol.Schema(vol.All(
cv.has_at_least_one_key(
ATTR_TEMPERATURE, ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_LOW),
{
ENTITY_SERVICE_SCHEMA.extend({
vol.Exclusive(ATTR_TEMPERATURE, 'temperature'): vol.Coerce(float),
vol.Inclusive(ATTR_TARGET_TEMP_HIGH, 'temperature'): vol.Coerce(float),
vol.Inclusive(ATTR_TARGET_TEMP_LOW, 'temperature'): vol.Coerce(float),
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
vol.Optional(ATTR_HVAC_MODE): vol.In(HVAC_MODES),
}
})
))
SET_FAN_MODE_SCHEMA = vol.Schema({
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
SET_FAN_MODE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({
vol.Required(ATTR_FAN_MODE): cv.string,
})
SET_PRESET_MODE_SCHEMA = vol.Schema({
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
SET_PRESET_MODE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({
vol.Required(ATTR_PRESET_MODE): cv.string,
})
SET_HVAC_MODE_SCHEMA = vol.Schema({
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
SET_HVAC_MODE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({
vol.Required(ATTR_HVAC_MODE): vol.In(HVAC_MODES),
})
SET_HUMIDITY_SCHEMA = vol.Schema({
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
SET_HUMIDITY_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({
vol.Required(ATTR_HUMIDITY): vol.Coerce(float),
})
SET_SWING_MODE_SCHEMA = vol.Schema({
vol.Optional(ATTR_ENTITY_ID): cv.comp_entity_ids,
SET_SWING_MODE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({
vol.Required(ATTR_SWING_MODE): cv.string,
})
@ -97,11 +87,11 @@ async def async_setup(hass: HomeAssistantType, config: ConfigType) -> bool:
await component.async_setup(config)
component.async_register_entity_service(
SERVICE_TURN_ON, TURN_ON_OFF_SCHEMA,
SERVICE_TURN_ON, ENTITY_SERVICE_SCHEMA,
'async_turn_on'
)
component.async_register_entity_service(
SERVICE_TURN_OFF, TURN_ON_OFF_SCHEMA,
SERVICE_TURN_OFF, ENTITY_SERVICE_SCHEMA,
'async_turn_off'
)
component.async_register_entity_service(