You can make it much more compact and efficient if you use the built-in filters instead of a long series of if statements.
- The test
has_value
can be used in aselect
filter so sensors that are “unavailable” or “unknown” will be ignored. - The filter
map
can be used to iterate other filter functions likestates
andfloat
across items in a list.
{% set sensor_list = ['sensor.wifi_temperature_humidity_sensor_temperature',
'sensor.hue_keuken_sensor_temperature', 'sensor.hue_tv_sensor_temperature',
'sensor.daikin_airco_leefruimte_climatecontrol_room_temperature'] %}
{{ sensor_list | select('has_value') | map('states') | map('float')
| average | default(states('sensor.average_living_temp'), 1) | round(2) }}