Berechnung Verlustleistung Wechselrichter: Probleme mit Sensorerstellung (if, elif, else)

Hallo zusammen,

ich verzweifel gerade an der Erstellung eines neuen Template Sensors.

Ich möchte die Verlustleistung meines Wechselrichters berechnen, jedoch muss ich hierfür ein paar Einschränkungen machen:

  1. die AC-Leistung (growatt_output_power) springt beim Starten morgens kurzzeitig auf über 400MW, was in ein paar Sekunden 1200kWh generiert was jede Statistik zerstört. Hier soll die Verlustleistung einfach 0 sein
  2. beim Starten und Beenden ist die DC-Leistung (leistung_pv_anlage_watt) bereits bei 0 und die AC Leistung noch >0 (bis maximal 200W). Hierfür soll die AC Leistung der Verlustleistung entsprechen (Standby)

Ansonsten soll die Verlustleistung berechnet werden aus DC minus AC-Leistung solange DC > AC. Manchmal kommt es zu ungenauigkeiten und die AC Leistung ist kurzzeitig > der DC Leistung.

Ich habe folgenden Sensor erstellt aber ich bekomme keine Werte für die Verlustleistung. Beide Werte (AC und DC) existieren und DC minus AC aktuell ca. 25W

  - sensor:
      - name: "Wechselrichter Verlustleistung"
        unique_id: wechselrichter_verlustleistung
        unit_of_measurement: W
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.leistung_pv_anlage_watt') | float(0) == 0 and states('sensor.growatt_output_power') | float(0) < 200 %}
              {{
              states('sensor.growatt_output_power') | float(0) | round(1)
              }}
          {% elif states('sensor.leistung_pv_anlage_watt') | float(0) > 0 and ( (states('sensor.growatt_output_power') | float(0)) / (states('sensor.leistung_pv_anlage_watt') | float(0)) ) < 1 %}
              {{
              (states('sensor.leistung_pv_anlage_watt') | float(0) - states('sensor.growatt_output_power') | float(0)) | max(0) | round(1)
              }}
          {% else %}
              0
          {% endif %}
        availability: >
          {{ states('sensor.leistung_pv_anlage_watt') | is_number and 
             states('sensor.growatt_output_power') | is_number }}

Was habe ich falsch programmiert?

Danke euch für eure Hilfe!

Grüße
Steffen

Alles laut KI:

- sensor:
    - name: "Wechselrichter Verlustleistung"
      unique_id: wechselrichter_verlustleistung
      unit_of_measurement: W
      device_class: power
      state_class: measurement
      state: >
        {% set dc = states('sensor.leistung_pv_anlage_watt') | float(0) %}
        {% set ac = states('sensor.growatt_output_power') | float(0) %}

        {% if dc == 0 and 0 < ac <= 200 %}
          {{ ac | round(1) }}
        {% elif dc > 0 and dc > ac and ac < 50000 %}
          {{ (dc - ac) | round(1) }}
        {% else %}
          0
        {% endif %}
      availability: >
        {{ is_number(states('sensor.leistung_pv_anlage_watt')) and
           is_number(states('sensor.growatt_output_power')) }}

Damit wären deine Fälle abgedeckt:

  • DC = 0 und AC bis 200 W → AC wird als Standby-Verlust übernommen

  • DC > AC → Verlust = DC - AC

  • AC > DC durch Messungenauigkeit → 0

  • absurde AC-Spikes → 0

Falls dein Sensor danach immer noch keine Werte liefert, würde ich testweise availability einmal komplett entfernen. Sehr oft liegt es genau daran.

P.S. Ich überwache das auch…aber habe auch noch einige Spikes, aber so genau brauche ich das nicht…:

Hallo,

danke dir für den Tip. Werde ich mal so ausprobieren. KI hatte ich auch schon befragt aber einen anderen Vorschlag bekommen. Ich probier deinen mal aus. Ich finde das “set dc und set ac” spannend weil es das deutlich übersichtlicher macht und man später auch leichter einzelne Sensoren austauschen kann weil dies nur an einer Stelle passieren muss.

Hast du noch eine Idee wie ich den dazugehörigen Integral-Helfer wieder auf 0 reseten kann? Der existiert erst seit gestern und hat durch 2 Megawatt Ausschläge bereits über 3000kWh.

Ebenfalls laut KI soll ich den löschen, den auftretenden Fehler in der Statistik beheben und neu anlegen. Hilft leider nichts, weil der Wert nach dem neu anlegen trotzdem noch bei 3000kWh liegt. Scheinbar löscht er die Statistik nicht aus der Datenbank.

Danke und Grüße
Steffen