Average temperature based on multiple temperature sensors

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 a select filter so sensors that are “unavailable” or “unknown” will be ignored.
  • The filter map can be used to iterate other filter functions like states and float 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) }}