Template Enphase Entität - falsche Berechnung

Hallo zusammen,

ich habe eine Enphase-PV Anlage und habe mich schon sehr viel und sehr lange mit der Integration beschäftigt. Diese ist leider nicht ganz so einfach wie viele anderen:

Bis auf meinen Netz-Wert (Bezug, Export) bin ich da auch schon recht Happy mit. Hier soll ich einen Verbrauch von 4000 kwH pro Tag haben…

Mein Template in der configuration.yaml sieht wie folgt aus:

template:

# Enphase PV-Anlage

# Laden | Entladen der Batterieenergie in kWh
- trigger:
    - platform: state
      entity_id: sensor.envoy_122342043020_verfugbare_batterieenergie

  sensor:
    - name: "Battery charge"
      unique_id: calculated_envoy_battery_charge
      unit_of_measurement: "Wh"
      state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max) }}"
      device_class: energy
      state_class: total_increasing
    - name: "Battery discharge"
      unique_id: calculated_envoy_battery_discharge
      unit_of_measurement: "Wh"
      state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min) }}"
      device_class: energy
      state_class: total_increasing
      
# Laden | Entladen der Batterieleitung in Watt
- trigger:
    - platform: state
      entity_id: sensor.leistung_pv_batterie_in_watt

  sensor:
    - name: "Battery charge power"
      unique_id: calculated_envoy_battery_charge_power
      unit_of_measurement: "W"
      state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max) }}"
      device_class: power
      state_class: measurement
    - name: "Battery discharge power"
      unique_id: calculated_envoy_battery_discharge_power
      unit_of_measurement: "W"
      state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min) }}"
      device_class: power
      state_class: measurement
      
# Import | Export ins Netz
- trigger:
    - platform: state
      entity_id: sensor.envoy_122342043020_ausgeglichener_nettoenergieverbrauch_uber_die_gesamte_lebensdauer

  sensor:
    - name: "Grid import_2"
      unique_id: calculated_envoy_grid_import_2
      unit_of_measurement: "kWh"
      state: "{{ this.state | float(0) + ([0.0, (trigger.to_state.state | float(0) - trigger.from_state.state | float(0))] | max) }}"
      device_class: energy
      state_class: total_increasing
    - name: "Grid export_2"
      unique_id: calculated_envoy_grid_export_2
      unit_of_measurement: "kWh"
      state: "{{ this.state | float(0.0) - ([0.0, (trigger.to_state.state | float(0.0) - trigger.from_state.state | float(0.0))] | min) }}"
      device_class: energy
      state_class: total_increasing

Könnt ihr mir sagen so hier mein Fehler liegt?

Danke!!!

Nachtrag: Im Energiedashboard ist die Tagesansicht ok.:

Der Tag zurück allerdings nicht:

und die EnergyFlowCard Plus vom heutigen Tag sieht auch krum aus:

hi, hast die Probleme gelöst?

Hi, nein.

Hier rund da nen Stück weiter, aber dann geht’s auch wieder zurück.

Wenn du was hast, freu ich mich über eine Nachricht.

Gruß

Hi @s1mpl316 **
**
Ich glaube bis schaft keiner die Enphase Werte zu bekommen (das die wirklich 100% Richtig sind ) …

Hi,

ich bin recht nah dran mit dem Was ich mir hier zusammengebastelt habe. Vll. hilft es dir ja auch weiter.


# Enphase PV-Anlage

# Laden | Entladen der Batterieenergie in kWh
- trigger:
    - platform: state
      entity_id: sensor.envoy_XXX_verfugbare_batterieenergie

  sensor:
    - name: "Battery charge"
      unique_id: calculated_envoy_battery_charge
      unit_of_measurement: "Wh"
      state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max) }}"
      device_class: energy
      state_class: total_increasing
    - name: "Battery discharge"
      unique_id: calculated_envoy_battery_discharge
      unit_of_measurement: "Wh"
      state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min) }}"
      device_class: energy
      state_class: total_increasing
      
# Laden | Entladen der Batterieleitung in Watt
- trigger:
    - platform: state
      entity_id: sensor.leistung_pv_batterie_in_watt

  sensor:
    - name: Battery charge power
      unique_id: calculated_envoy_battery_charge_power
      unit_of_measurement: W
      state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max) }}"
      device_class: power
      state_class: measurement
      
    - name: Battery discharge power
      unique_id: calculated_envoy_battery_discharge_power
      unit_of_measurement: W
      state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min) }}"
      device_class: power
      state_class: measurement
      

# Laden | Entladen der Batterieenergie in kWh
- trigger:
    - platform: state
      entity_id: sensor.envoy_XXX_verfugbare_batterieenergie

  sensor:
    - name: "Battery charge_2025_10_07"
      unique_id: calculated_envoy_battery_charge_2025_10_07
      unit_of_measurement: "Wh"
      state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max) }}"
      device_class: energy
      state_class: total_increasing
    - name: "Battery discharge_2025_10_07"
      unique_id: calculated_envoy_battery_discharge_2025_10_07
      unit_of_measurement: "Wh"
      state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min) }}"
      device_class: energy
      state_class: total_increasing
      
# Laden | Entladen der Batterieleitung in Watt
- trigger:
    - platform: state
      entity_id: sensor.leistung_pv_batterie_in_watt

  sensor:
    - name: Battery charge power_2025_10_07
      unique_id: calculated_envoy_battery_charge_power_2025_10_07
      unit_of_measurement: W
      state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max) }}"
      device_class: power
      state_class: measurement
      
    - name: Battery discharge power_2025_10_07
      unique_id: calculated_envoy_battery_discharge_power_2025_10_07
      unit_of_measurement: W
      state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min) }}"
      device_class: power
      state_class: measurement
      
- trigger:
    - platform: state
      entity_id: sensor.envoy_XXX_ausgeglichener_nettoenergieverbrauch_uber_die_gesamte_lebensdauer

  sensor:
    - name: "Grid import_2_2025_11_15_2"
      unique_id: calculated_envoy_grid_import_2_2025_11_15_2
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
      availability: "{{ trigger.to_state is not none and trigger.to_state.state | is_number }}"
      state: >
        {# Quellsensor liefert MWh. Umrechnung in kWh #}
        {% set new_value_kwh = trigger.to_state.state | float(0) / 1 %}
        {% set old_value_kwh = trigger.from_state.state | float(0) / 1 %}
        {% set delta = new_value_kwh - old_value_kwh %}
        {{ this.state | float(0) + ([0.0, delta] | max) }}

    - name: "Grid export_2_2025_11_15_2"
      unique_id: calculated_envoy_grid_export_2_2025_11_15_2
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
      availability: >
        {% set hour = now().hour %}
        {{ hour >= 1 and hour < 23 and trigger.to_state is not none and trigger.to_state.state | is_number }}
      state: >
        {% set hour = now().hour %}
        {% if hour >= 1 and hour < 23 %}
          {# Quellsensor liefert MWh. Umrechnung in kWh #}
          {% set new_value_kwh = trigger.to_state.state | float(0) / 1 %}
          {% set old_value_kwh = trigger.from_state.state | float(0) / 1 %}
          {% set delta = new_value_kwh - old_value_kwh %}
          {{ this.state | float(0.0) - ([0.0, delta] | min) }}
        {% else %}
          {# Behält den aktuellen Zustand bei, wenn außerhalb des Zeitfensters #}
          {{ this.state }}
        {% endif %}

manches ist noch doppelt und müsste aufgeröumt werden, hatte ich bisher keine Zeit zu :slight_smile:

Aber vll. hilft es dir so auch schon.

Hi @s1mpl316

Ich habe mir gerade die über die lokale API und das Messgerät erfassten Import-/Export‑Werte der Batterie angesehen … und man kann feststellen, dass Enphase immer ein paar Sekunden braucht, um zwischen Laden und Entladen der Batterie umzuschalten. In dieser Zwischenzeit wird Energie exportiert, obwohl die Batterie eigentlich leer ist …

Das erklärt den Unterschied zwischen den Werten der lokalen API und der Cloud‑API. Die Cloud‑API passt diese Tageswerte nach einigen Stunden absichtlich an, um genau nicht zu zeigen, dass das System innerhalb derselben Stunde erst importiert und dann exportiert, obwohl die Batterie eigentlich durchgehend hätte laden sollen.