Add warning when entity used in template doesn't exist (#57316)

This commit is contained in:
avee87 2021-10-22 19:09:54 +01:00 committed by GitHub
parent 9c1bee9c16
commit d9b87ee5c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 1 deletions

View File

@ -831,7 +831,12 @@ def _get_state_if_valid(hass: HomeAssistant, entity_id: str) -> TemplateState |
def _get_state(hass: HomeAssistant, entity_id: str) -> TemplateState | None:
return _get_template_state_from_state(hass, entity_id, hass.states.get(entity_id))
state_obj = _get_template_state_from_state(
hass, entity_id, hass.states.get(entity_id)
)
if state_obj is None:
_LOGGER.warning("Template warning: entity '%s' doesn't exist", entity_id)
return state_obj
def _get_template_state_from_state(

View File

@ -3206,3 +3206,21 @@ async def test_undefined_variable(hass, caplog):
"Template variable warning: 'no_such_variable' is undefined when rendering '{{ no_such_variable }}'"
in caplog.text
)
async def test_missing_entity(hass, caplog):
"""Test a warning is logged on missing entity."""
hass.states.async_set("binary_sensor.active", "on")
valid_template = template.Template(
"{{ is_state('binary_sensor.active', 'on') }}", hass
)
invalid_template = template.Template(
"{{ is_state('binary_sensor.abcde', 'on') }}", hass
)
assert valid_template.async_render() is True
assert invalid_template.async_render() is False
assert (
"Template warning: entity 'binary_sensor.active' doesn't exist"
not in caplog.text
)
assert "Template warning: entity 'binary_sensor.abcde' doesn't exist" in caplog.text