ich nutze derzeit die SolarEdge-API zur Integration und Datenerfassung. Leider lässt sich diese nur im 15-Minuten-Takt abrufen und läuft zudem nicht besonders stabil.
Parallel habe ich auch die SolarEdge-Modbus-Integration eingerichtet. Darüber erhalte ich allerdings bisher lediglich die Temperatur des Wechselrichters – alle anderen Entitäten liefern entweder unverständliche Werte oder scheinen nicht mit den Echtzeitdaten aus dem Webportal bzw. der App übereinzustimmen.
Mir geht es genau so wie dir. Eine schöne Erklärung, wie man am besten mit den vom Modbus gelieferten werden umgeht, habe ich noch nicht gefunden. Daher habe ich aktuell auch noch die Werte über die WebAPI im Energieboard.
Die Werte sind wohl anders, weil die Anlage selber ja auch Energie verbraucht.
Mittlerweile habe ich mit den vorhandenen Einheiten etwas experimentiert und erhalte durch Berechnung exakte Ergebnisse, wenn kein Export von Energie erfolgt.
Hier mein Code, der bedauerlicherweise nur funktioniert, wenn keine Einspeisung ins Netz erfolgt. Vielleicht findet einer der Experten hier den Fehler und kann mir auf die Sprünge helfen.
#### SolarEdge
- name: "Netz Aktuell Export"
unique_id: export_aktuell
unit_of_measurement: "W"
device_class: power
state: >
{% set p = states('sensor.solaredge_lokal_m1_ac_power') | float(0) %}
{% if p > 0 %}
{{ p }}
{% else %}
0
{% endif %}
- name: "Netz Aktuell Import"
unique_id: import_aktuell
unit_of_measurement: "W"
device_class: power
state: >
{% set p = states('sensor.solaredge_lokal_m1_ac_power') | float(0) %}
{% if p < 0 %}
{{ p * -1 }}
{% else %}
0
{% endif %}
- name: "Batterie Aktuell Ladung"
unique_id: batterie_laden
unit_of_measurement: "W"
device_class: power
state: >-
{% if states('sensor.solaredge_lokal_battery1_power') | float > 0 %}
{{ states('sensor.solaredge_lokal_battery1_power') | float }}
{% else %}
0
{% endif %}
- name: "Batterie Aktuell Entladung"
unique_id: batterie_entladen
unit_of_measurement: "W"
device_class: power
state: >-
{% if states('sensor.solaredge_lokal_battery1_power') | float < 0 %}
{{ (states('sensor.solaredge_lokal_battery1_power') | float) * -1 }}
{% else %}
0
{% endif %}
- name: "Berechnung Import plus Batterieentladung"
unique_id: import_plus_batterieentladung
unit_of_measurement: "W"
device_class: power
state: >-
{% set import = states('sensor.import_aktuell') | float(0) %}
{% set entladung = states('sensor.batterie_entladung') | float(0) %}
{% set summe = import + entladung %}
{{ [summe, 0] | max }}
- name: "Berechnung AC Power minus Import und Batterieentladung"
unique_id: acpower_minus_import_und_batterieentladung
unit_of_measurement: "W"
device_class: power
state: >-
{% set ac_power = states('sensor.solaredge_lokal_ac_power') | float(0) %}
{% set import_bat = states('sensor.import_plus_batterieentladung') | float(0) %}
{% set result = ac_power - import_bat %}
{{ [result, 0] | max }}
- name: "Berechnung PV Produktion aktuell DC"
unique_id: pv_produktion_aktuell_dc
unit_of_measurement: "W"
device_class: power
state: >
{% set export_aktuell = states('sensor.export_aktuell') | float(0) %}
{% set batterie_ladung = states('sensor.solaredge_lokal_battery1_power') | float(0) %}
{% set solaredge_ac_power = states('sensor.solaredge_lokal_ac_power') | float(0) %}
{% set summe = export_aktuell + batterie_ladung + solaredge_ac_power %}
{% if is_state('sun.sun', 'below_horizon') %}
0
{% else %}
{{ [summe, 0] | max }}
{% endif %}
- name: "Berechnung Aktueller Hausverbrauch (sensor.import_aktuell + sensor.batterie_entladung + (sensor.pv_produktion_aktuell_dc - sensor.solaredge_lokal_battery1_power - sensor.export_aktuell))"
unique_id: verbrauch_haus_aktuell
unit_of_measurement: "W"
device_class: power
state: >
{% set import = states('sensor.import_aktuell') | float(0) %}
{% set entladung = states('sensor.batterie_entladung') | float(0) %}
{% set pv_produktion = states('sensor.pv_produktion_aktuell_dc') | float(0) %}
{% set battery_power = states('sensor.batterie_ladung') | float(0) %}
{% set export = states('sensor.export_aktuell') | float(0) %}
{{ (import + entladung + (pv_produktion - battery_power - export)) | round(2) }}
availability: >
{{ states('sensor.import_aktuell') not in ['unknown', 'unavailable']
and states('sensor.batterie_entladung') not in ['unknown', 'unavailable']
and states('sensor.pv_produktion_aktuell_dc') not in ['unknown', 'unavailable']
and states('sensor.batterie_ladung') not in ['unknown', 'unavailable']
and states('sensor.export_aktuell') not in ['unknown', 'unavailable'] }}
Bei einer Einspeisung ins Netz berechnet die Formel falsch.
Die Einspeisung wird dann zur realen Sonnenenergie und zum Hausverbrauch hinzuaddiert, obwohl ich das in der Formel unterbunden habe.