New function/test/filter has_value for templating (#24360)

Co-authored-by: Thomas Dietrich <Thomas@Nurzen.de>
This commit is contained in:
ehendrix23 2023-03-28 09:05:03 -06:00 committed by GitHub
parent 3e5c5daa6b
commit a47f6894f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -119,6 +119,7 @@ Not supported in [limited templates](#limited-templates).
- `is_state` compares an entity's state with a specified state or list of states and returns `True` or `False`. `is_state('device_tracker.paulus', 'home')` will test if the given entity is the specified state. `is_state('device_tracker.paulus', ['home', 'work'])` will test if the given entity is any of the states in the list.
- `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist.
- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') is none` or `state_attr('sensor.my_sensor', 'attr') == None` (note the difference in the capitalization of none in both versions).
- `has_value('sensor.my_sensor')` will test if the given entity is not unknown or unavailable. Can be used as a filter or a test.
<div class='note warning'>
@ -175,6 +176,10 @@ Other state examples:
{% if states('sensor.train_departure_time') in ("unavailable", "unknown") %}
{{ ... }}
{% if has_value('sensor.train_departure_time') %}
{{ ... }}
{% set state = states('sensor.temperature') %}{{ state | float + 1 if is_number(state) else "invalid temperature" }}
{% set state = states('sensor.temperature') %}{{ (state | float * 10) | round(2) if is_number(state)}}