Mushroom Template Card - Icon Farbe abhängig von Temperatur - Fehler im Code?

Hallo,

ich nutze folgenden Code, um abhängig von der Temperatur das Icon entsprechend
farbig darzustellen. Ich habe schon einige Beispiele gefunden und probiert, aber nur folgendem funktioniert es, leider mit einem kleinen Fehler:

{%set temp= states('sensor.t_wohnzimmer_temperature') |float %}
{%if temp<15%}  pink
{%elif 15<temp<17%} cyan
{%elif 17<temp<20%} blue
{%elif 20<temp<22%} green
{%elif 22<temp<24%} yellow
{%elif 24<temp<27%} orange
{%else%}  red 
{%endif%}

Wenn z.B. die Temperatur genau 20,00 Grad ist, wird statt grün rot angezeigt, da
vermutlich keine der Bedingungen zutrifft.

Warum ist das so und wie kann das korrigiert werden?

Ich hatte es auch schon wie folgt probiert, geht aber auch nicht.

{%elif 17<temp<19,99%} blue
{%elif 20<temp<21,99%} green

Screenshot 2024-03-26 172316

Ich würde es dann so versuchen
{%elif 20<=temp<=22%} green
Also kleiner gleich. Ansonsten hast du genau 20 nicht abgefragt und der Else greift.

Du hast ja auch nur Farbe für Werte > oder < 20
Definiert = 20 ist nicht beschrieben. Und laut Deinem Code greift dann Else mit der Farbe rot

Gruß
Osorkon

Danke für die Erklärung!.
Ich teste es mal wie von @sirector vorgeschlagen.

Ach … wenn du schon mit float arbeitest, gib float einen Default-Wert. Wenn der Sensor mal nicht erreichbar ist, greift der Default-Wert und es wird kein Fehler ausgegeben. Also so ungefähr
{%set temp= states('sensor.t_wohnzimmer_temperature') | float(0) %}

Danke für den Tipp!

Dann hätte ich gleich noch eine Frage mit folgendem Code:

{% set pv2 = states('sensor.zuruck_zum_netz_taglich') | float(0) %}
{% set pv4 = states('sensor.solar_erzeugung_taglich') | float(0) %}
{{ (100 / pv4 * (pv4 - pv2)) | round(0) }}

Hier hatte ich heute Morgen im Dashboard einen Fehler, da noch keine Solarenergie erzeugt wurde. Ich glaube es war “Entität nicht verfügbar”

Wo kann ich hier einen Standardwert setzen?

Du hast ja bereits den default wert 0 definiert.
Und die 0 führt hier zum Problem - Division durch 0!!
Mögliche Lösung des Problems.


{% set pv2 = states('sensor.zuruck_zum_netz_taglich') | float(0) %}
{% set pv4 = states('sensor.solar_erzeugung_taglich') | float(0) %}
{% if pv4 > 0 %}
{{ (100 / pv4 * (pv4 - pv2)) | round(0) }}
{% else %}
0
{% endif %}

Oder den default wert != 0 setzen.

Gruß
Osorkon

Kann man division durch 0 auch irgendwie “abfangen”?

Siehe mein Template oben. :wink:

Gruß
Osorkon