Falsche Berechnung? - (Balkon-)Solaranlagen Ersparnis mit Home Assistant tracken & berechnen

Hallo Community,

ich beziehe mich auf dieses Video von Simon. @simon42

Zusammenfassung des Problems auf das ich gestoßen bin:

Die berechnete Ersparnis passt nicht zum berechneten Eigenverbrauch.

Beispiel: Mein Strompreis beträgt 0,2827 €/kWh. Zum Zeitpunkt des Verfassens hatte ich einen Eigenverbrauch von 1,02 kWh, was knapp 28 Cent entsprechen sollten. In HA werden mir jedoch für den gleichen Zeitraum durch eine Riemann Summenintegral 82 Cent (54 Cent zu viel?) berechnet.

Ich habe versucht die Berechnung meiner Zahlen so gut wie möglich zu gliedern. Die zugrundeliegende Sensorik sieht wie folgt aus:

1.) Messung des BKW Ertrags mit einem Shelly Plus 1pm und festlegen des Strompreises

a.) sensor.bkw_shelly_power = Sitzt zwischen Homilies Inverter und Steckdose und misst direkt am Kabel das einspeist.
b.) input_number.strompreis = 0,2827

2.) Berechnung des Stromverbrauchs auf allen 3 Phasen in W an einem Shelly 3em im Zählerkasten

# Shelly Watt Sensor
  - sensor:
      - name: "Shelly3EM Power Total"
        unique_id: shelly3em_power_total
        device_class: energy
        state_class: total
        unit_of_measurement: "W"
        state: >
          {{ 
          states('sensor.shelly_3em_channel_a_power')| float(0) + 
          states('sensor.shelly_3em_channel_b_power')| float(0) +
          states('sensor.shelly_3em_channel_c_power')| float(0) 
          }}
        availability: >
          {{ 
          states('sensor.shelly_3em_channel_a_power')| is_number and
          states('sensor.shelly_3em_channel_b_power')| is_number and
          states('sensor.shelly_3em_channel_c_power')| is_number
          }}

3.) Berechnung des Eigenverbrauchs anhand des Stromzählers und der Solarerzeugung in Watt

  - sensor:
      - name: "Solar Eigenverbrauch (Watt) v2"
        unique_id: "BalkonsolarEigenverbrauchWatts"
        state_class: measurement
        icon: mdi:transmission-tower
        unit_of_measurement: W
        device_class: power
        state: >
            {% if is_number(states('sensor.shelly3em_power_total')) and states('sensor.shelly3em_power_total') | float(0) < 0 %}
                {{ ( (states('sensor.shelly3em_power_total') | float(0) ) + (states('sensor.bkw_shelly_power') | float(0) ) ) | round (3) }}
            {% else %}
                {{ states('sensor.bkw_shelly_power') | round (3) }}
            {% endif %}

4.) Berechnung des finanziellen Vorteils in EUR/h

  - sensor:
      - name: "Balkonsolar Vorteil"
        unique_id: "BalkonsolarVorteil"
        unit_of_measurement: EUR/h
        state: >
         {{ states('sensor.solar_eigenverbrauch_watt_v2')|float(0) * states('input_number.strompreis')|float(0)/1000 }}  

5.) Tracking der Ersparnis durch einen Riemann Summenintegral Sensor

sensor.ersparnis_durch_solar

6.) Tracking der Tagesersparnis durch einen Verbrauchszähler der alle 24 zurückgesetzt wird

sensor.tagesersparnis_durch_solar
Source
sensor.ersparnis_durch_solar
Status
collecting
Last period
0.36
Meter period
daily
Cron pattern
0 0 * * *

Ich meine das es entweder in meiner Logik oder in der Verwendung des Riemann Summenintegrals einen Fehler geben muss.

Das Energydashboard scheint die Zahlen korrekt zu berechnen.

Screenshot 2023-03-28 at 18.50.13

5,7 kWh Gesamtbedarf - davon 4,7 kWh aus dem Netz und von den 4,1 kWh Solarstrom 1 kWh genutzt. 3,1kWh verschenkt :upside_down_face:

Die 1 kWh genutzer Solarstrom würde ich mit knapp 28 Cent Ersparnis gleichsetzen, jedoch nicht mit den berechneten 82 Cent.

Ein langer Post - was meint ihr?

Willkommen hier im HA-Forum. :slight_smile:

Super Post: Code im Code-Format, super strukturiert,…
Danke, wenn alle User so vorbildlich wären, hätten die Mod‘s hier gar nicht zu tun. :grinning:

Hallo @Ford,

was mir auffällt.

  1. Der Shelly 1 Plus PM zeigt 5-10 % zu viel Watt und kwh an. Das würde ich schon mal abziehen.
  2. Rieman Summen Integral würde ich nicht für das Tracken des Vorteils nutzen. Stattdessen lieber einen neuen Sensor der den Eigenverbrauch in kwh trackt. Davon dann Ertrag in Euro berechnen.
  3. Bin nicht sicher ob deine Berechnung zum Eigenverbrauch richtig ist. Müsste es nicht so aussehen? Wenn Power Total kleiner als 0 ist, musst du es doch mit *-1 multiplizieren (weil es ja negativ ist) sonst subtrahierst du power_total und bkw_shelly_power.
- sensor:
      - name: "Solar Eigenverbrauch (Watt) v2"
        unique_id: "BalkonsolarEigenverbrauchWatts"
        state_class: measurement
        icon: mdi:transmission-tower
        unit_of_measurement: W
        device_class: power
        state: >
            {% if is_number(states('sensor.shelly3em_power_total')) and states('sensor.shelly3em_power_total') | float(0) < 0 %}
                {{ ( (states('sensor.shelly3em_power_total') | float(0)*-1 ) + (states('sensor.bkw_shelly_power') | float(0) ) ) | round (3) }}
            {% else %}
                {{ states('sensor.bkw_shelly_power') | round (3) }}
            {% endif %}
  1. Ich selbst würde einen anderen Ansatz für den Eigenverbrauch wählen. Wenn Power Total kleiner als 0 dann würde ich einen Zähler für die Einspeisung erstellen. Der Eigenverbauch liese sich dann einfach durch BKW - Einspeisung berechnen.

VG

[EDIT] Ich glaube meine Berechnung in Punkt 3 ist falsch. Lieber Punkt 4 verfolgen!

Der Sensor in Punkt 3 ist 1:1 aus dem Video/Post von Simon. Er funktioniert soweit gut.

Ich werde meinen Code in den kommenden Tagen posten. Die Logik ist im Prinzip

  1. Berechnung des Eigenverbrauchs in kWh
  2. Multiplizierung des Eigenverbrauchs mit dem Strompreis (Bsp.: 1,0 * 0,2827 = 0,28 € Ersparnis)
  3. Speicherung des Werts für den heutigen Tag in einer input.number (= 0,28)
  4. Am Ende des Tages, wenn der Wechselrichter aus ist, addition der heutigen Ersparnis (0,28) und der Ersparnis bis gestern (13,00) (0,28 + 13,00 = 13,28 €)
  5. Schreiben des neuen Wertes (13,28 €) in eine input.number (genannt “Ersparnis bis gestern”)
  6. Reset des Eigenverbrauchszählers um 00:00
  7. Am kommenden Tag Durchlauf der gleichen Logik unter Verwendung der “13,28” als Grundlagen für die neue Berechnung.

Code & Details dann später.

Gut das du einen Plan hast :grinning:.
Vom Gefühl her würde ich aber sagen, dass dein Wert für Eigenverbrauch nicht stimmt. Von den 4,1 kwh Ertrag hast du bestimmt mehr Eigenverbrauch als nur 1 kwh. Es sei denn du hast einen sehr geringen aktuellen Hausverbrauch.
Du könntest mal einen Tag (oder kurzzeitig) das Balkonkraftwerk ausschalten und dann schauen wie hoch dein aktueller Verbrauch ist. (gegebenenfalls weist du das auch schon). Wenn da 200-300 Watt durchgehen, kann deine Berechnung nicht korrekt sein.
Falls du neue Infos hast, bin ich gespannt ob deine Berechnungen funktionieren.

Hallo, habe ein paar Punkte die gut hierher passen sollten.
Vorab, alle deine Videos sind Mega, hat mir sehr geholfen, insbesondere da ich nicht wirklich programmieren kann.
1.) Berechnung der Ersparnisse
das Problem ist anscheinend noch nicht gelöst. Bei mir ergibt sich der gleiche Fehler bei der Berechnung. In 8 tagen habe ich 29,6 KWh selber genutzt, das ergibt bei 0,32€ eine Ersparnis von 9,47€. Mein Gesamtersparnis-sensor kommt aber auf 28,90, was mehr als 3x mehr ist. Gibt es einen weg der “richtig” berechnet? Sonst macht das ja wenig sinn um die Berechnung zur kommenden Amortisierung wenig Sinn.
2.) Invertierung
Meine Ersparnis wird mit einem negativen Vorzeichen angezeigt, was an sich schon komisch ist und ich nicht weiß wo der Fehler ist.

Vielen dank schon im Vorraus

Neko

Moin,

willkommen im Forum.
Es wäre hilfreich wenn du ein paar mehr Infos zu deinem Setup teilst.
Welche Sensoren an welcher Stelle zum Bsp.
Das Vorzeichen zu ändern ist sehr leicht gemacht. Man kann das auch in den Entwicklerwerkzeugen ausprobieren.

{{ states('sensor.dein_cooler_sensor')|float * -1 }}

Diesen Sensor fügst du dann in deine configuration.yml ein. Es gibt aber sicher viele verschiedene Wege das Vorzeichen wegzubekommen…

Mein Setup:

Shelly 3EM Pro
( Alle 3 Phasen werden von Shelly automatsch summiert ausgegeben )
sensor.shelly_3em_einspeisung_total_active_power

Shelly PM Mini
sensor.shelly_balkonkraftwerk_power

Mein Config:

#Berechnet anhand des Stromzählers die Rückgabe ins Netz, wenn negative Werte ausgegben werden:
-sensor
    - name: Zurück zum Netz (Watt)
      unique_id: "BalkonsolarBackToGridSensorWatts"
      state_class: measurement
      icon: mdi:transmission-tower
      unit_of_measurement: W
      device_class: power
      state: >
        {% if is_number(states('sensor.shelly_3em_einspeisung_total_active_power')) and states('sensor.shelly_3em_einspeisung_total_active_power') | float(0) < 0 %}
            {{(states('sensor.shelly_3em_einspeisung_total_active_power') | float(0))*-1 | round (3) }}
        {% else %}
            {{(states ('0.0') | float(0)) |round(3) }}
        {% endif %}
  
# Berechnet anhand des Stromzählers und der Solarerzeugung in Watt den Eigenverbrauch:
    - name: Solar Eigenverbrauch (Watt)
      unique_id: "BalkonsolarEigenverbrauchWatts"
      state_class: measurement
      icon: mdi:transmission-tower
      unit_of_measurement: W
      device_class: power
      state: >
        {% if is_number(states('sensor.shelly_3em_einspeisung_total_active_power')) and states('sensor.shelly_3em_einspeisung_total_active_power') | float(0) < 0 %}
            {{ ( (states('sensor.shelly_3em_einspeisung_total_active_power') | float(0) ) + (states('sensor.shelly_balkonkraftwerk_power') | float(0) ) ) | round (3) }}
        {% else %}
            {{ states('sensor.shelly_balkonkraftwerk_power') | round (3) }}
        {% endif %}

# Zweiter Sensor für Ersparnis in Euro pro Stunde, basiert auf dem obigen Sensor (Solar Eigenverbrauch (Watt) und dem aktuellen Strompreis in EUR/kWh
    - name: Balkonsolar Vorteil
      unique_id: "MeinBalkonsolarVorteil"
      unit_of_measurement: EUR/h
      state: >
        {{ states('sensor.solar_eigenverbrauch_watt')|float(0) * states('input_number.aktueller_strompreis')|float(0)/1000 *-1 }}

Anschließend wie Simon die Integral Sensor Helfer erstellt.

OK, habe den Vorteil Sensor negiert, warum auch immer der bei mir anders war als bei SImon, hat das mit dem Shelly 3EM Normal und Pro zu tun?

Hallo nochmal,

anscheinend hat wohl keiner eine Idee wie man diesem Problem beikommt.

Funktioniert bei euch die Umrechnung? Bei mir zeigt er mittlerweile über 90€, und das nach nicht mal 2 Monaten, was sowas von unmöglich ist.

Grüße

Marco