Add base schema for triggers (#51727)
* Add base schema for triggers * Tweak * Make TRIGGER_BASE_SCHEMA a voluptuous schema * Make state trigger BASE_SCHEMA a voluptuous schema
This commit is contained in:
parent
9e378d51af
commit
49bec86dae
16 changed files with 33 additions and 27 deletions
|
@ -25,7 +25,7 @@ from .exceptions import DeviceNotFound, InvalidDeviceAutomationConfig
|
|||
DOMAIN = "device_automation"
|
||||
|
||||
|
||||
DEVICE_TRIGGER_BASE_SCHEMA = vol.Schema(
|
||||
DEVICE_TRIGGER_BASE_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "device",
|
||||
vol.Required(CONF_DOMAIN): str,
|
||||
|
|
|
@ -18,7 +18,7 @@ EVENT_ENTER = "enter"
|
|||
EVENT_LEAVE = "leave"
|
||||
DEFAULT_EVENT = EVENT_ENTER
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "geo_location",
|
||||
vol.Required(CONF_SOURCE): cv.string,
|
||||
|
|
|
@ -10,7 +10,7 @@ from homeassistant.helpers import config_validation as cv, template
|
|||
CONF_EVENT_TYPE = "event_type"
|
||||
CONF_EVENT_CONTEXT = "context"
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "event",
|
||||
vol.Required(CONF_EVENT_TYPE): vol.All(cv.ensure_list, [cv.template]),
|
||||
|
|
|
@ -3,13 +3,14 @@ import voluptuous as vol
|
|||
|
||||
from homeassistant.const import CONF_EVENT, CONF_PLATFORM, EVENT_HOMEASSISTANT_STOP
|
||||
from homeassistant.core import HassJob, callback
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
|
||||
# mypy: allow-untyped-defs
|
||||
|
||||
EVENT_START = "start"
|
||||
EVENT_SHUTDOWN = "shutdown"
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "homeassistant",
|
||||
vol.Required(CONF_EVENT): vol.Any(EVENT_START, EVENT_SHUTDOWN),
|
||||
|
|
|
@ -44,7 +44,7 @@ def validate_above_below(value):
|
|||
|
||||
|
||||
TRIGGER_SCHEMA = vol.All(
|
||||
vol.Schema(
|
||||
cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "numeric_state",
|
||||
vol.Required(CONF_ENTITY_ID): cv.entity_ids,
|
||||
|
|
|
@ -27,25 +27,25 @@ CONF_ENTITY_ID = "entity_id"
|
|||
CONF_FROM = "from"
|
||||
CONF_TO = "to"
|
||||
|
||||
BASE_SCHEMA = {
|
||||
vol.Required(CONF_PLATFORM): "state",
|
||||
vol.Required(CONF_ENTITY_ID): cv.entity_ids,
|
||||
vol.Optional(CONF_FOR): cv.positive_time_period_template,
|
||||
vol.Optional(CONF_ATTRIBUTE): cv.match_all,
|
||||
}
|
||||
|
||||
TRIGGER_STATE_SCHEMA = vol.Schema(
|
||||
BASE_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "state",
|
||||
vol.Required(CONF_ENTITY_ID): cv.entity_ids,
|
||||
vol.Optional(CONF_FOR): cv.positive_time_period_template,
|
||||
vol.Optional(CONF_ATTRIBUTE): cv.match_all,
|
||||
}
|
||||
)
|
||||
|
||||
TRIGGER_STATE_SCHEMA = BASE_SCHEMA.extend(
|
||||
{
|
||||
**BASE_SCHEMA,
|
||||
# These are str on purpose. Want to catch YAML conversions
|
||||
vol.Optional(CONF_FROM): vol.Any(str, [str]),
|
||||
vol.Optional(CONF_TO): vol.Any(str, [str]),
|
||||
}
|
||||
)
|
||||
|
||||
TRIGGER_ATTRIBUTE_SCHEMA = vol.Schema(
|
||||
TRIGGER_ATTRIBUTE_SCHEMA = BASE_SCHEMA.extend(
|
||||
{
|
||||
**BASE_SCHEMA,
|
||||
vol.Optional(CONF_FROM): cv.match_all,
|
||||
vol.Optional(CONF_TO): cv.match_all,
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ _TIME_TRIGGER_SCHEMA = vol.Any(
|
|||
msg="Expected HH:MM, HH:MM:SS or Entity ID with domain 'input_datetime' or 'sensor'",
|
||||
)
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "time",
|
||||
vol.Required(CONF_AT): vol.All(cv.ensure_list, [_TIME_TRIGGER_SCHEMA]),
|
||||
|
|
|
@ -43,7 +43,7 @@ class TimePattern:
|
|||
|
||||
|
||||
TRIGGER_SCHEMA = vol.All(
|
||||
vol.Schema(
|
||||
cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "time_pattern",
|
||||
CONF_HOURS: TimePattern(maximum=23),
|
||||
|
|
|
@ -15,7 +15,7 @@ CONF_NUMBER = "number"
|
|||
CONF_HELD_MORE_THAN = "held_more_than"
|
||||
CONF_HELD_LESS_THAN = "held_less_than"
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "litejet",
|
||||
vol.Required(CONF_NUMBER): cv.positive_int,
|
||||
|
|
|
@ -19,7 +19,7 @@ CONF_TOPIC = "topic"
|
|||
DEFAULT_ENCODING = "utf-8"
|
||||
DEFAULT_QOS = 0
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): mqtt.DOMAIN,
|
||||
vol.Required(CONF_TOPIC): mqtt.util.valid_subscribe_topic_template,
|
||||
|
|
|
@ -15,7 +15,7 @@ from homeassistant.helpers.event import async_track_sunrise, async_track_sunset
|
|||
|
||||
# mypy: allow-untyped-defs, no-check-untyped-defs
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "sun",
|
||||
vol.Required(CONF_EVENT): cv.sun_event,
|
||||
|
|
|
@ -7,7 +7,7 @@ from homeassistant.helpers import config_validation as cv
|
|||
|
||||
from .const import DEVICE_ID, DOMAIN, EVENT_TAG_SCANNED, TAG_ID
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): DOMAIN,
|
||||
vol.Required(TAG_ID): vol.All(cv.ensure_list, [cv.string]),
|
||||
|
|
|
@ -18,7 +18,7 @@ from homeassistant.helpers.template import result_as_boolean
|
|||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
TRIGGER_SCHEMA = IF_ACTION_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = IF_ACTION_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "template",
|
||||
vol.Required(CONF_VALUE_TEMPLATE): cv.template,
|
||||
|
|
|
@ -12,8 +12,11 @@ import homeassistant.helpers.config_validation as cv
|
|||
|
||||
DEPENDENCIES = ("webhook",)
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
{vol.Required(CONF_PLATFORM): "webhook", vol.Required(CONF_WEBHOOK_ID): cv.string}
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "webhook",
|
||||
vol.Required(CONF_WEBHOOK_ID): cv.string,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ DEFAULT_EVENT = EVENT_ENTER
|
|||
|
||||
_EVENT_DESCRIPTION = {EVENT_ENTER: "entering", EVENT_LEAVE: "leaving"}
|
||||
|
||||
TRIGGER_SCHEMA = vol.Schema(
|
||||
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_PLATFORM): "zone",
|
||||
vol.Required(CONF_ENTITY_ID): cv.entity_ids,
|
||||
|
|
|
@ -1106,8 +1106,10 @@ CONDITION_SCHEMA: vol.Schema = vol.Schema(
|
|||
)
|
||||
)
|
||||
|
||||
TRIGGER_BASE_SCHEMA = vol.Schema({vol.Required(CONF_PLATFORM): str})
|
||||
|
||||
TRIGGER_SCHEMA = vol.All(
|
||||
ensure_list, [vol.Schema({vol.Required(CONF_PLATFORM): str}, extra=vol.ALLOW_EXTRA)]
|
||||
ensure_list, [TRIGGER_BASE_SCHEMA.extend({}, extra=vol.ALLOW_EXTRA)]
|
||||
)
|
||||
|
||||
_SCRIPT_DELAY_SCHEMA = vol.Schema(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue