Sensor-Wert ohne Nachkommastellen anzeigen

Dieter G

New member
Hallo,
ich habe einen Sensor über Template-Sensor in 2 Sensoren aufgeteilt. Soweit funktioniert das zumindest von den Werten auch:

Code:
- platform: template
  sensors:
    leistung_aus_netz:
      friendly_name: "Leistung aus Netz"
      unit_of_measurement: "W"
      icon_template: mdi:transmission-tower-export
      value_template: >-
          {% set val = states('sensor.scb_grid_power') %}
          {% if is_number(val) and val | float >= 0 %}
            {{ val | float | round(0) }}
          {% else %}
            {{ 0 | float | round(0) }}
          {% endif %}

- platform: template
  sensors:
    einspeisung_ins_netz:
      friendly_name: "Einspeisung ins Netz"
      unit_of_measurement: "W"
      icon_template: mdi:transmission-tower-import
      value_template: >-
        {% set val = states('sensor.scb_grid_power') %}
        {% if is_number(val) and val | float <= 0 %}
          {{ val | float * -1.0 | round(0) }}
        {% else %}
          {{ 0 | float | round(0) }}
        {% endif %}


Obwohl ich bei allen Rückgabewerten das "round(0)" angegeben habe, wird mir das Ergebnis aber dennoch mit einer Nachkommastelle dargestellt.

Einspeisung ins Netz.JPG

Hat irgendjemand eine Idee was hier noch falsch sein könnte? Für Rückmeldungen vorher schon tausend Dank.

Gruß Dieter
 

Nival

-
Moderator
Ich kann das Problem so auf Anhieb nicht nachvollziehen, bei mir arbeitet round(0) wie vorgesehen bei einem kurzen Test.

Wie sieht denn die Ausgabe aus, wenn Du den Code von value_template direkt in den Entwicklerwerkzeugen im Reiter Template einfügst?
 

Dieter G

New member
Wie sieht denn die Ausgabe aus, wenn Du den Code von value_template direkt in den Entwicklerwerkzeugen im Reiter Template einfügst?
Auch dort wird die eine Nachkommastelle angezeigt. Es ist sogar egal was ich als Nachkommastellen angebe, der Wert wird immer mit einer Nachkommastelle ausgegeben. Ansonsten hatte ich mit dem "round()" auch nie Probleme. Sonst wäre ich ja nie auf die Idee gekommen es so umzusetzen.
 

Nival

-
Moderator
Hast Du mal eben die direkte Ausgabe von sensor.scb_grid_power ohne das weiter zu verarbeiten? Also aus den Entwicklerwerkzeugen, einfach ausgeben - inklusive dem Ergebnistyp bitte (steht oben rechts über der Ausgabe).
 

Dieter G

New member
Das Original sieht so aus, also 0 Nachkommastellen:

Leistungsbezug.JPG

Und eigentlich wollte ich nur den Wert, falls negativ (bedeutet Einspeisung ins Netz), als positiven Wert ausgeben. Vielleicht kan man ja bei negativen Werten auch nur das erste Zeichen, muss ja das Vorzeichen sein, entfernen. Bin aber leider bin ich nicht so fit mit templates um das hinzubekommen.
 

Dieter G

New member
Sorry, den Teil mit dem Ergebnistyp hatte ich verpeilt. Da steht tatsächlich Ergebnistyp: string. Dann scheint ja das ja total quer zu sein. Wieso lässt sich dann der "val | float" mit -1.0 multiplizieren?
 

Nival

-
Moderator
Nein, String ist okay, das wird mittels | float ja konvertiert.

Aber Dein Original-Screen ist ja was eingebundenes, nicht aus den Entwicklerwerkzeugen. Magst da nochmal schauen inkl. Screen?

Alternativ, schau vielleicht einfach nochmal ob Du nach dem round nochmal zu int konvertieren kannst, also vermutlich was im Sinne von | int dahinter (ich habe mit HA nichts zu tun, ich rate grade auch nur, aber aus Programmierersicht halt).
 

Nival

-
Moderator
Wenn das hier auch schon... okay, got it, Klammern.

Ändere {{ val | float * -1.0 | round(0) }} mal in {{ (val | float * -1.0) | round(0) }}.
 

Dieter G

New member
Ich werde das Morgen testen. Jetzt im Dunkeln kommt eh nur die 0 durch. Trotzdem schon jetzt Danke für die Mühe.
 

Nival

-
Moderator
Sehr schön! :)
Ob ich diese Syntax jemals verstehen werde?
In diesem Fall ja eigentlich recht simpel, ein wenig wie Punkt- und Strichrechnung. Wenn man nicht durch Klammern explizit angibt dass etwas zuerst bearbeitet werden soll wird es halt so berechnet wie es da steht, in diesem Fall wurde round(0) auf -1.0 angewendet, und das Ergebnis davon dann auf das mittels float konvertierte val. Aber wie man sieht, auch Programmierern fällt es bei schon fertigem Code nicht immer auf Anhieb auf :D
 

Zurzeit aktive Besucher

Neueste Beiträge

Letzte Anleitungen

Statistik des Forums

Themen
750
Beiträge
11.131
Mitglieder
310
Neuestes Mitglied
DirkHH
Oben