Template Einstellung True / Flase

Hallo zusammen.
Ich möchte wenn mindestens eine Batterie unter 20% gefunden wird, das er “True” ausgibt.
Wenn keine gefunden wird, soll er auf “False” gehen.
Ich habe aber dauerhaft “False”.
Was ist falsch?

{% set battery_status = false %}
{% for i in states.sensor|sort(attribute="state")|map(attribute='entity_id') %}
  {%- if state_attr(i, "device_class") == "battery" and states(i) != 'unavailable' and states(i) != 'unknown' and (states(i)|int(0)) < 20 -%}
    {{ '100%' if states(i) == "full" else states(i)|int(0) }}{{ state_attr(i, "unit_of_measurement") if state_attr(i, "unit_of_measurement")|trim() != "None" }} {{ state_attr(i, "friendly_name") }}
    {% set battery_status = true %}
  {% endif -%}
{% endfor %}

{{ battery_status }}

Ergebnis

Ergebnistyp: string

9% Heizung Badezimmer Batterie
    
  

False

da ich jetzt auch nicht der HA-Profi vor dem Herrn bin, würde ich mir einen Texthelfer anlagen und per Automation in diesen “true bzw. false” schreiben lassen.

Eine Liste aller Sensor mit der der Device Class 'battery mit einem Wert < 20%

{% set low_battery = states.sensor
| selectattr('attributes.device_class','defined')
| selectattr('attributes.device_class','eq', 'battery')
| rejectattr('state', 'eq', '100')
| rejectattr('state', 'eq', '100.0')
| selectattr('state', 'lessthan', '20')
| map(attribute='name')
| list
%}
{{ low_battery  | join(', ') }}

Hier das Template das die Anzahl ermittelt.
Wenn Anzahl > 0 → Ist das Ergebnis Wahr, also True
Sonst Falsch, also False

{% set low_battery = states.sensor
| selectattr('attributes.device_class','defined')
| selectattr('attributes.device_class','eq', 'battery')
| rejectattr('state', 'eq', '100')
| rejectattr('state', 'eq', '100.0')
| selectattr('state', 'lessthan', '20')
| map(attribute='name')
| list
%}
{{ low_battery  | count > 0 }}

Gruß
Osorkon

1 „Gefällt mir“