Add device automation condition (#26313)

* Add support for device conditions

* Lint

* Update test case

* Make and+or conditions async, adjust tests

* Cleanup tests

* Remove non callback versions of conditions, correct typing

* Correct typing

* Update light/strings.json

* Address review comments

* Make device automation lists simple lists, not dicts

* Add device_automation/const.py

* Use IS_ON/IS_OFF everywhere for conditions
This commit is contained in:
Erik Montnemery 2019-09-05 16:49:32 +02:00 committed by GitHub
parent c50faaef3c
commit f7dc537275
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 480 additions and 263 deletions

View file

@ -24,10 +24,13 @@ from homeassistant.const import (
CONF_ALIAS,
CONF_BELOW,
CONF_CONDITION,
CONF_DOMAIN,
CONF_ENTITY_ID,
CONF_ENTITY_NAMESPACE,
CONF_FOR,
CONF_PLATFORM,
CONF_SCAN_INTERVAL,
CONF_STATE,
CONF_UNIT_SYSTEM_IMPERIAL,
CONF_UNIT_SYSTEM_METRIC,
CONF_VALUE_TEMPLATE,
@ -746,8 +749,8 @@ STATE_CONDITION_SCHEMA = vol.All(
{
vol.Required(CONF_CONDITION): "state",
vol.Required(CONF_ENTITY_ID): entity_id,
vol.Required("state"): str,
vol.Optional("for"): vol.All(time_period, positive_timedelta),
vol.Required(CONF_STATE): str,
vol.Optional(CONF_FOR): vol.All(time_period, positive_timedelta),
# To support use_trigger_value in automation
# Deprecated 2016/04/25
vol.Optional("from"): str,
@ -823,6 +826,11 @@ OR_CONDITION_SCHEMA = vol.Schema(
}
)
DEVICE_CONDITION_SCHEMA = vol.Schema(
{vol.Required(CONF_CONDITION): "device", vol.Required(CONF_DOMAIN): str},
extra=vol.ALLOW_EXTRA,
)
CONDITION_SCHEMA: vol.Schema = vol.Any(
NUMERIC_STATE_CONDITION_SCHEMA,
STATE_CONDITION_SCHEMA,
@ -832,6 +840,7 @@ CONDITION_SCHEMA: vol.Schema = vol.Any(
ZONE_CONDITION_SCHEMA,
AND_CONDITION_SCHEMA,
OR_CONDITION_SCHEMA,
DEVICE_CONDITION_SCHEMA,
)
_SCRIPT_DELAY_SCHEMA = vol.Schema(