SolarEdge Modbus-Integration – Wie ist sinnvolle Nutzung möglich?

Hallo zusammen,

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.

Meine Frage:
Gibt es eine Möglichkeit, die Modbus-Integration sinnvoll zu nutzen, um aussagekräftige Echtzeitdaten zu erhalten?

Idealerweise hätte ich gern Zugriff auf folgende Werte:

  • Aktuelle PV-Produktion in W

  • Aktueller Hausverbrauch in W

  • Batteriestand in %

  • Aktuelle Batterieladung in W

  • Aktuelle Batterieentladung in W

  • Netzeinspeisung in W

  • Netzentnahme in W

Hat jemand von euch das bereits erfolgreich umgesetzt oder kann Hinweise geben, wie man an die gewünschten Daten kommt?

1 „Gefällt mir“

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. :smiley:

#### 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.


1 „Gefällt mir“