Template sensors not created – no errors in log, configuration OK

Hi everyone,
I need some advice — I’ve spent many hours testing this and still can’t figure out why my template sensors don’t get created. Everything looks fine, no errors, but the entities never appear.

I’d really appreciate any help or hints :pray:

  • Core2025.10.3
  • Supervisor2025.10.0
  • Operating System16.2
  • Frontend20251001.4

:small_blue_diamond: Problem description

  • Template sensors for average temperature and humidity are not created after restart
  • Even a very simple test.yaml file doesn’t produce an entity
  • Another template file in the same directory (which counts active lights) works perfectly
  • Helpers (input_text entities) are filled correctly and verified in the Template Editor
  • Configuration check (ha core check) passes with no errors
  • No errors or warnings in the logs
  • After restart → entities are missing

Eventually, I worked around it using a different method to calculate averages, but I’d really like to understand why the templates don’t load at all.

# configuration.yaml
template: !include_dir_merge_list templates
- sensor:
    - name: "Test sensor"
      unique_id: "test_sensor"
      state: "42"

Entity not created after restart

- sensor:
    - name: "Average Temperature"
      unique_id: "average_temperature_v2"
      icon: mdi:thermometer
      unit_of_measurement: "°C"
      state: >
        {% set helpers = [
          'input_text.average_temperature_1a',
          'input_text.average_temperature_1b',
          'input_text.average_temperature_2'
        ] %}
        {% set sensors = namespace(list=[]) %}
        {% for h in helpers %}
          {% set raw = states(h) %}
          {% if raw not in ['unknown', 'unavailable', ''] %}
            {% set sensors.list = sensors.list + raw.split(',') | map('trim') | list %}
          {% endif %}
        {% endfor %}
        {% set values = namespace(list=[]) %}
        {% for s in sensors.list %}
          {% if s in states and states(s) not in ['unknown', 'unavailable'] %}
            {% set v = states(s) | float(0) %}
            {% if v > 0 %}
              {% set values.list = values.list + [v] %}
            {% endif %}
          {% endif %}
        {% endfor %}
        {% if values.list | length > 0 %}
          {{ (values.list | sum) / (values.list | length) | round(1) }}
        {% else %}
          unknown
        {% endif %}

    - name: "Average Humidity"
      unique_id: "average_humidity_v2"
      icon: mdi:water-percent
      unit_of_measurement: "%"
      state: >
        {% set helpers = [
          'input_text.average_humidity_1a',
          'input_text.average_humidity_1b',
          'input_text.average_humidity_2'
        ] %}
        {% set sensors = namespace(list=[]) %}
        {% for h in helpers %}
          {% set raw = states(h) %}
          {% if raw not in ['unknown', 'unavailable', ''] %}
            {% set sensors.list = sensors.list + raw.split(',') | map('trim') | list %}
          {% endif %}
        {% endfor %}
        {% set values = namespace(list=[]) %}
        {% for s in sensors.list %}
          {% if s in states and states(s) not in ['unknown', 'unavailable'] %}
            {% set v = states(s) | float(0) %}
            {% if v > 0 %}
              {% set values.list = values.list + [v] %}
            {% endif %}
          {% endif %}
        {% endfor %}
        {% if values.list | length > 0 %}
          {{ (values.list | sum) / (values.list | length) | round(1) }}
        {% else %}
          unknown
        {% endif %}

Entity not created after restart

- sensor:
    - name: "Priemerná teplota s fallbackom"
      unique_id: "average_temperature_v2"
      icon: mdi:thermometer
      unit_of_measurement: "°C"
      state: >
        {% set helpers = [
          'input_text.average_temperature_1a',
          'input_text.average_temperature_1b',
          'input_text.average_temperature_2'
        ] %}
        {% set sensors = namespace(list=[]) %}
        {% for h in helpers %}
          {% set raw = states(h) %}
          {% if raw not in ['unknown', 'unavailable', ''] %}
            {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
            {% set sensors.list = sensors.list + parsed %}
          {% endif %}
        {% endfor %}
        {% set values = namespace(list=[]) %}
        {% for s in sensors.list %}
          {% if states(s) is not none and states(s) not in ['unknown', 'unavailable', ''] %}
            {% set val = states(s) | float(0) %}
            {% set values.list = values.list + [ val ] %}
          {% endif %}
        {% endfor %}
        {% if values.list | length > 0 %}
          {{ (values.list | sum / values.list | length) | round(1) }}
        {% else %}
          21.0
        {% endif %}
      attributes:
        used_fallback: >
          {% set helpers = [
            'input_text.average_temperature_1a',
            'input_text.average_temperature_1b',
            'input_text.average_temperature_2'
          ] %}
          {% set sensors = namespace(list=[]) %}
          {% for h in helpers %}
            {% set raw = states(h) %}
            {% if raw not in ['unknown', 'unavailable', ''] %}
              {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
              {% set sensors.list = sensors.list + parsed %}
            {% endif %}
          {% endfor %}
          {% set fallback = true %}
          {% for s in sensors.list %}
            {% if states(s) is not none and states(s) not in ['unknown', 'unavailable', ''] %}
              {% set fallback = false %}
            {% endif %}
          {% endfor %}
          {{ fallback }}
        valid_entities: >
          {% set helpers = [
            'input_text.average_temperature_1a',
            'input_text.average_temperature_1b',
            'input_text.average_temperature_2'
          ] %}
          {% set sensors = namespace(list=[]) %}
          {% for h in helpers %}
            {% set raw = states(h) %}
            {% if raw not in ['unknown', 'unavailable', ''] %}
              {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
              {% set sensors.list = sensors.list + parsed %}
            {% endif %}
          {% endfor %}
          {% set valid = namespace(list=[]) %}
          {% for s in sensors.list %}
            {% if states(s) is not none and states(s) not in ['unknown', 'unavailable', ''] %}
              {% set valid.list = valid.list + [s] %}
            {% endif %}
          {% endfor %}
          {{ valid.list }}
        skipped_entities: >
          {% set helpers = [
            'input_text.average_temperature_1a',
            'input_text.average_temperature_1b',
            'input_text.average_temperature_2'
          ] %}
          {% set sensors = namespace(list=[]) %}
          {% for h in helpers %}
            {% set raw = states(h) %}
            {% if raw not in ['unknown', 'unavailable', ''] %}
              {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
              {% set sensors.list = sensors.list + parsed %}
            {% endif %}
          {% endfor %}
          {% set skipped = namespace(list=[]) %}
          {% for s in sensors.list %}
            {% if states(s) is none or states(s) in ['unknown', 'unavailable', ''] %}
              {% set skipped.list = skipped.list + [s] %}
            {% endif %}
          {% endfor %}
          {{ skipped.list }}

Entity not created either

Additional info

  • Template file with lights count (Aktívne svetlá) works fine in the same directory
  • Helpers (input_text.*) are valid and contain correct data
  • No errors in home-assistant.log
  • Test templates work perfectly in Developer Tools → Templates

Did AI write these for you? The templates themselves look fine as well as the yaml, however the approach is very odd.

As for why they aren’t working, where are you looking for the entities? What names are you looking for? the entity_id will be created based off a slugified version of the name.

Hi.
the translation was done by AI in the post, … I’m not good enough in English and the code was also checked by AI.
The template does not create the entity that I want to display.
Developer Tools States
test_sensor entity does not exist
it is similar in other templates.
In the mentioned templates directory I also have another template that counts the number of lights on and it works ok.
I have already solved the problem without using templates in the templates directory

What entity_id are you looking for?

  • sensor:
    • name: “Testovacia entita”
      unique_id: “test_sensor”
      state: “42”

sensor.testovacia_entita
in states it should be 42, entity unavailable

can you please post your entire configuration.yaml file?

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

homeassistant:
  packages: !include_dir_named packages
  allowlist_external_dirs:
    - "/media"

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

# klasické senzory
sensor: !include_dir_merge_list sensors
binary_sensor: !include_dir_merge_list binary_sensors
template: !include_dir_merge_list templates

input_text: !include_dir_merge_named helpers
input_number: !include_dir_merge_named input_numbers


http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - ::1

browser_mod:

can you now post a screenshot of your config\templates directory?

And then post the contents of the very first file as yaml

image
this template works reliably

- sensor:
    - name: "Aktívne svetlá"
      unique_id: "aktivne_svetla_pocet"
      icon: mdi:lightbulb-on
      state: >
        {% set raw = states('input_text.list_of_lights') %}
        {% if raw %}
          {% set entity_list = raw.split(',') | map('trim') | reject('eq', '') | list %}
          {% set active_ids = states.light
              | selectattr('state', 'eq', 'on')
              | map(attribute='entity_id')
              | list %}
          {{ entity_list | select('in', active_ids) | list | length }}
        {% else %}
          0
        {% endif %}
      attributes:
        lights_on: >
          {% set raw = states('input_text.list_of_lights') %}
          {% if raw %}
            {% set entity_list = raw.split(',') | map('trim') | reject('eq', '') | list %}
            {% set active_entities = expand(entity_list)
                                      | selectattr('state', 'eq', 'on')
                                      | map(attribute='name')
                                      | list %}
            {{ active_entities }}
          {% else %}
            []
          {% endif %}

alright, and I need to see the filename and contents of any other file you put in that templates folder.

I uploaded the files one by one. I am sending the last file I had there.
I always leave only functional files in the directories

- sensor:
    - name: "Priemerná teplota s fallbackom"
      unique_id: "average_temperature_v2"
      icon: mdi:thermometer
      unit_of_measurement: "°C"
      state: >
        {% set helpers = [
          'input_text.average_temperature_1a',
          'input_text.average_temperature_1b',
          'input_text.average_temperature_2'
        ] %}
        {% set sensors = namespace(list=[]) %}
        {% for h in helpers %}
          {% set raw = states(h) %}
          {% if raw not in ['unknown', 'unavailable', ''] %}
            {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
            {% set sensors.list = sensors.list + parsed %}
          {% endif %}
        {% endfor %}
        {% set values = namespace(list=[]) %}
        {% for s in sensors.list %}
          {% if states(s) is not none and states(s) not in ['unknown', 'unavailable', ''] %}
            {% set val = states(s) | float(0) %}
            {% set values.list = values.list + [ val ] %}
          {% endif %}
        {% endfor %}
        {% if values.list | length > 0 %}
          {{ (values.list | sum / values.list | length) | round(1) }}
        {% else %}
          21.0
        {% endif %}
      attributes:
        used_fallback: >
          {% set helpers = [
            'input_text.average_temperature_1a',
            'input_text.average_temperature_1b',
            'input_text.average_temperature_2'
          ] %}
          {% set sensors = namespace(list=[]) %}
          {% for h in helpers %}
            {% set raw = states(h) %}
            {% if raw not in ['unknown', 'unavailable', ''] %}
              {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
              {% set sensors.list = sensors.list + parsed %}
            {% endif %}
          {% endfor %}
          {% set fallback = true %}
          {% for s in sensors.list %}
            {% if states(s) is not none and states(s) not in ['unknown', 'unavailable', ''] %}
              {% set fallback = false %}
            {% endif %}
          {% endfor %}
          {{ fallback }}
        valid_entities: >
          {% set helpers = [
            'input_text.average_temperature_1a',
            'input_text.average_temperature_1b',
            'input_text.average_temperature_2'
          ] %}
          {% set sensors = namespace(list=[]) %}
          {% for h in helpers %}
            {% set raw = states(h) %}
            {% if raw not in ['unknown', 'unavailable', ''] %}
              {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
              {% set sensors.list = sensors.list + parsed %}
            {% endif %}
          {% endfor %}
          {% set valid = namespace(list=[]) %}
          {% for s in sensors.list %}
            {% if states(s) is not none and states(s) not in ['unknown', 'unavailable', ''] %}
              {% set valid.list = valid.list + [s] %}
            {% endif %}
          {% endfor %}
          {{ valid.list }}
        skipped_entities: >
          {% set helpers = [
            'input_text.average_temperature_1a',
            'input_text.average_temperature_1b',
            'input_text.average_temperature_2'
          ] %}
          {% set sensors = namespace(list=[]) %}
          {% for h in helpers %}
            {% set raw = states(h) %}
            {% if raw not in ['unknown', 'unavailable', ''] %}
              {% set parsed = raw.split(',') | map('trim') | reject('eq', '') | list %}
              {% set sensors.list = sensors.list + parsed %}
            {% endif %}
          {% endfor %}
          {% set skipped = namespace(list=[]) %}
          {% for s in sensors.list %}
            {% if states(s) is none or states(s) in ['unknown', 'unavailable', ''] %}
              {% set skipped.list = skipped.list + [s] %}
            {% endif %}
          {% endfor %}
          {{ skipped.list }}

But those files are not present in the template folder picture you took above…

1 file:

image

no, because they weren’t functional, I copied them to my NB.

I always leave only functional files in the directories§

Well everything is set up correctly based on what you’re saying. So it’s anybodies guess why it’s not working for you.

You can look at my configuration and see how I have things configured. It’s basically identical to your setup.

Thank you for your time. There is another way to do it.