50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
"""Template config validator."""
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.config import async_log_exception, config_without_domain
|
|
from homeassistant.const import CONF_SENSORS, CONF_UNIQUE_ID
|
|
from homeassistant.helpers import config_validation as cv
|
|
from homeassistant.helpers.trigger import async_validate_trigger_config
|
|
|
|
from .const import CONF_TRIGGER, DOMAIN
|
|
from .sensor import SENSOR_SCHEMA
|
|
|
|
CONF_STATE = "state"
|
|
|
|
|
|
TRIGGER_ENTITY_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
|
vol.Required(CONF_TRIGGER): cv.TRIGGER_SCHEMA,
|
|
vol.Required(CONF_SENSORS): cv.schema_with_slug_keys(SENSOR_SCHEMA),
|
|
}
|
|
)
|
|
|
|
|
|
async def async_validate_config(hass, config):
|
|
"""Validate config."""
|
|
if DOMAIN not in config:
|
|
return config
|
|
|
|
trigger_entity_configs = []
|
|
|
|
for cfg in cv.ensure_list(config[DOMAIN]):
|
|
try:
|
|
cfg = TRIGGER_ENTITY_SCHEMA(cfg)
|
|
cfg[CONF_TRIGGER] = await async_validate_trigger_config(
|
|
hass, cfg[CONF_TRIGGER]
|
|
)
|
|
except vol.Invalid as err:
|
|
async_log_exception(err, DOMAIN, cfg, hass)
|
|
|
|
else:
|
|
trigger_entity_configs.append(cfg)
|
|
|
|
# Create a copy of the configuration with all config for current
|
|
# component removed and add validated config back in.
|
|
config = config_without_domain(config, DOMAIN)
|
|
config[DOMAIN] = trigger_entity_configs
|
|
|
|
return config
|