Hallo Zusammen,
kann mir jemand bei der Erstellung meines Eigenverbrauch Sensors helfen. Ich stehe gerade echt auf dem Schlauch. Der Sensor soll ausgeben:
Wenn: “stromvebrauch” > “stromerzeugung” = “stromerzeugung”
ansonsten: “stromverbrauch”
Leider wird der Sensor als nicht verfügbar angezeigt.
- sensor:
- name: eigenverbrauch_neu
unique_id: "eigenverbrauch_neu"
state_class: measurement
icon: mdi:transmission-tower
unit_of_measurement: "W"
device_class: power
state: >
{% if states('sensor.stromverbrauch_berechnen') | float(0) > states('sensor.stromerzeugung_gesamt_2') %}
{{ ( (states('sensor.stromerzeugung_gesamt_2') | float(0) ) ) | round (3) }}
{% else %}
{{ states('sensor.stromverbrauch_berechnen') | round (3) }}
{% endif %}
Hast du das mal unter Entwicklerwerkzeuge - Vorlagen getestet?
{% if states('sensor.stromverbrauch_berechnen') | float(0) > states('sensor.stromerzeugung_gesamt_2') %}
{{ ( (states('sensor.stromerzeugung_gesamt_2') | float(0) ) ) | round (3) }}
{% else %}
{{ states('sensor.stromverbrauch_berechnen') | round (3) }}
{% endif %}
Sonst versuche es mal so
{% if (states('sensor.stromverbrauch_berechnen') | float(0)) > states('sensor.stromerzeugung_gesamt_2') %}
gicko
28. Oktober 2023 um 11:57
3
Was soll das „float(0)“ bewirken?
Und probiere das mal bitte:
float(states.sensor.stromverbrauch_berechnen.state)
Ohne irgendwelche Anführungszeichen oder oder oder
Danke euch!
So hat es jetzt funktioniert.
- sensor:
- name: eigenverbrauch_neu2
unique_id: "eigenverbrauch_neu2"
state_class: measurement
icon: mdi:transmission-tower
unit_of_measurement: "W"
device_class: power
state: >
{% if states('sensor.stromverbrauch_berechnen') | float > states('sensor.stromerzeugung_gesamt_2') | float %}
{{ states('sensor.stromerzeugung_gesamt_2') }}
{% else %}
{{ states('sensor.stromverbrauch_berechnen') }}
{% endif %}
1 „Gefällt mir“
BOP
29. Oktober 2023 um 12:04
5
Das ist der Standardwert, für den Fall, dass der String nicht nach float gewandelt werden kann. Würde ich bei Sensoren, die auch mal etwas anderes als eine Zahl liefern können, immer mit angeben.
Bei der von dir angegebenen Schreibweise geht das ebenfalls:
float('diesIstEinString', 0)
oder
float('diesIstEinString', default=0)
1 „Gefällt mir“
gicko
29. Oktober 2023 um 12:24
6
Ich muss unbedingt aufhören Jinja Templates mit Python zu vergleichen …