Setting a variable in a loop doesn't work?

Use the namespace object.

https://jinja.palletsprojects.com/en/master/templates/#assignments

Here’s a working example from my config.

        {% set devices = state_attr('group.devices_connected', 'entity_id') %}
        {% set dev = namespace(value=0) %}
        {% for entity_id in devices -%}
          {% if states(entity_id) == 'unknown' %}{% set dev.value = dev.value + 1 %}
          {% elif states(entity_id) == 'unavailable' %}{% set dev.value = dev.value + 1 %}
          {% endif %}
        {%- endfor %}
        {% if dev.value | int > 0 %}
          {{ unavail }}
        {% else %}
          None
        {% endif %}
11 Likes