thank you!
question… as something is not going as expected… as I understood your advice to avoid doubling the code I could create a macro, right? so as a first step I tried to just copy the code and it still just returns “unknown” - is this to be expected?
code I have copied to the attribute section that I am attempting to call “detail” is slightly different to output instead of count the list of entities - please see below:
- name: flag sensor status warning
state: >
{% set eT = states
| selectattr('domain', 'in', '(sensor|binary_sensor)')
| selectattr('object_id', 'search', '.*temperature.*(temperature$|d1_z)')
| selectattr('entity_id', 'has_value')
| list %}
{% set eH = states
| selectattr('domain', 'in', '(sensor|binary_sensor)')
| selectattr('object_id', 'search', '.*temperature.*(humidity$)')
| selectattr('entity_id', 'has_value')
| list %}
{% set lvls = [[eT, 'lt', 7, 6], [eH, 'gt', 60, 65]] %}
{% set count = namespace(value=0) %}
{% set results = namespace(items=[]) %}
{% for e in [eT, eH] %}
{% set eid = e | map(attribute='entity_id') | list %}
{% set val = e | map(attribute='state') | map('round', 2) | list %}
{% set result = zip(eid, val) | selectattr(1, lvls[count.value][1], lvls[count.value][2]) | list %}
{% set count.value = count.value + 1 %}
{% set results.items = results.items + result %}
{% endfor %}
{% if results.items | count == 0 %}
{{ 0 }}
{% else %}
{% set count = namespace(value=0) %}
{% set resultsfinal = namespace(items=[]) %}
{% for itm in results.items %}
{% set resultsfinal.items = resultsfinal.items + [itm[0].split('.')[1]] %}
{% set count.value = count.value + 1 %}
{% endfor %}
{{ resultsfinal.items | count }}
{% endif %}
attributes:
detail: >-
{% set eT = states
| selectattr('domain', 'in', '(sensor|binary_sensor)')
| selectattr('object_id', 'search', '.*temperature.*(temperature$|d1_z)')
| selectattr('entity_id', 'has_value')
| list %}
{% set eH = states
| selectattr('domain', 'in', '(sensor|binary_sensor)')
| selectattr('object_id', 'search', '.*temperature.*(humidity$)')
| selectattr('entity_id', 'has_value')
| list %}
{% set lvls = [[eT, 'lt', 7, 6], [eH, 'gt', 60, 65]] %}
{% set count = namespace(value=0) %}
{% set results = namespace(items=[]) %}
{% for e in [eT, eH] %}
{% set eid = e | map(attribute='entity_id') | list %}
{% set val = e | map(attribute='state') | map('round', 2) | list %}
{% set result = zip(eid, val) | selectattr(1, lvls[count.value][1], lvls[count.value][2]) | list %}
{% set count.value = count.value + 1 %}
{% set results.items = results.items + result %}
{% endfor %}
{% if results.items | count == 0 %}
{{ 'ok' }}
{% else %}
{% set count = namespace(value=0) %}
{% set resultsfinal = namespace(items=[]) %}
{% for itm in results.items %}
{% set resultsfinal.items = resultsfinal.items + [itm[0].split('.')[1]] %}
{% set count.value = count.value + 1 %}
{% endfor %}
{{ resultsfinal.items | list }}
{% endif %}
shouldn’t this work?