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:
Esmax
14. Oktober 2025 um 20:56
2
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ß
Esmax
2. Januar 2026 um 10:48
4
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
Aber vll. hilft es dir so auch schon.
Esmax
28. Januar 2026 um 10:45
6
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.