Hallo. Ich möchte ein Template Sensor erstellen, der nach allen Sensoren sucht, die ‚Sensor data calculated by Anniversaries Integration‘ in den Attributen stehen haben und der Zustand größer als 2. Das hat soweit funktioniert. Jedoch möchte ich die Liste auf oder absteigend sortieren bezogen auf den Zustand. Das macht er nicht. Ich vermute, dass der Zustand nicht als Zahlenwert (int oder float) interpretiert wird sondern als string. Wie kann ich dem Zustand als int oder float defineren?
{% set output = namespace(sensors=) %}
{% for temp4 in states.sensor | selectattr(‚attributes.attribution‘, ‚eq‘, ‚Sensor data calculated by Anniversaries Integration‘) | sort(attribute=‚state‘) %}
{% if temp4.state | int > 2 | int %}
{% endif %}
{% set output.sensors = output.sensors + [temp4.attributes.friendly_name~ ’ ’ ~temp4.state ~ ’ '] %}
{%endfor%}
{{ output.sensors }}
Hi, du kannst es ja mal so versuchen, bin nicht sicher, aber mit is_number wird geprüft ob es ein Zahl ist. Sollte der Wert nicht als Zahl vorliegen, könnte man mit float versuchen diesen vorab umzuwandeln. Aber wüsste ich jetzt auch dem Kopf nicht so schnell wie das geht.
| selectattr('state', 'is_number')
{% set output = namespace(sensors=[]) %}
{% for temp4 in states.sensor | selectattr('attributes.attribution', 'eq', 'Sensor data calculated by Anniversaries Integration') | selectattr('state', 'is_number') | sort(attribute='state') %}
{% if temp4.state | int > 2 | int %}
{% endif %}
{% set output.sensors = output.sensors + [temp4.attributes.friendly_name~ ' ' ~temp4.state ~ ' '] %}
{%endfor%}
{{ output.sensors }}
Der Zustand liegt schon als Zahl vor (s.Bild) aber der „sort“ Befehl greift nicht. Ich habe mir das nur so erklärt, dass die Zahl im Zustand nicht als Zahl interpretiert sondern als string und deswegen die Sortierung nicht funktioniert.
Jetzt ist mir das klarer, was ein, zwei Bilder immer ausmachen können. Der Sensor liegt als Zahl vor. Dann sollte eigentlich nur das reverse=true oder false im "sort" Teil fehlen. Somit sollte die Sortierung von großer Zahl zu kleiner erfolgen.
{% set output = namespace(sensors=[]) %}
{% for temp4 in states.sensor | selectattr('attributes.attribution', 'eq', 'Sensor data calculated by Anniversaries Integration') | sort(attribute='state', reverse=true) %}
{% if temp4.state | int > 2 | int %}
{% endif %}
{% set output.sensors = output.sensors + [temp4.attributes.friendly_name~ ' ' ~temp4.state ~ ' '] %}
{%endfor%}
{{ output.sensors }}