Fehler in der Formel - Template

Hallo,

was mache ich an diesem template falsch:

{{ states('sensor.zitrone_feuchtigkeitsmesser_erde_soil_moisture') - {{ states("input_number.zitronenbaum_zielwert_bodenfeuchtigkeit") }}

Du hast einmal {{ zuviel drin.

{{ (states('sensor.zitrone_feuchtigkeitsmesser_erde_soil_moisture')|float(0)) - ( states('input_number.zitronenbaum_zielwert_bodenfeuchtigkeit')|float(0)) }}

Ich hatte schon soooo viel rumprobiert.Auch das. Dies ergibt das:

Also entweder liefern deine Sensoren die Werte jeweils als String, oder einer/beide Sensoren liefern keine Werte.
Habe es oben etwas abgeändert, schau mal was jetzt.

1 „Gefällt mir“

Hat geklappt. Ist zwar ein Minuswert, aber es klappt.

Woran hat es jetzt genau gelegen?

Und wie kann ich diesen negativen Wert (aktuell -5) als Zahl abfragen ohne das Minuszeichen? Würde das gern als x Tage gießen überschritten nutzen.
Zum Beispiel hier:

{{ (states('sensor.zitrone_feuchtigkeitsmesser_erde_soil_moisture')|float(0)) - ( states('input_number.zitronenbaum_zielwert_bodenfeuchtigkeit')|float(0)) }}

{% set state = (states('sensor.zitrone_feuchtigkeitsmesser_erde_soil_moisture')|float(0)) - ( states('input_number.zitronenbaum_zielwert_bodenfeuchtigkeit') | float(0)) %}
{% if is_number(state) and state | float < 0 %}
  Du hast {{state}} Tage überschritten
{% endif %}

Ergibt:
Screenshot 2024-12-28 120008

Wie bekomme ich da nun statt “state” die 5 ohne Minus hin? Einfach *(-1)?

OK. Hat geklappt mit *-1. Aber wie bekomme ich nun das Komma weg und volle Zahlen?

PS: Das | float(0) fehlt und so wird versucht von einem String zu subtrahieren.

1 „Gefällt mir“

OK. Danke.

Warum geht diese Abfrage mit 0 nicht. Hier bekomme ich einen Fehler. Ich wollte bei 0 eben auch eine Nachricht erstellen:

{% if state | float = 0 %}
  Heute ist der {{ state | replace(',','.') | round(0) }} % Feuchtigkeit erreicht.
{% endif %}

= → Variablenzuweisung
== → Vergleich

1 „Gefällt mir“

Super vielen Dank.

Jetzt versuche ich das mal irgendwie alles in eine Karte zu bekommen.