Ertrag von PV Anlage berechnen – Amortisierung im Dashboard tracken #adw7

Du hast eine PV Anlage oder ein Balkonkraftwerk und möchtest gern genau berechnen, wie viel Euro die Anlage bisher eingespart hat? Mit Homeassistant geht das einfach.

Aktuell ist es ja so, dass selbst verbrauchen des Stroms lohnender ist, als in das Netz einzuspeisen. Wir bauen uns einen Rechner, der tagesaktuell berechnet, wie viel Euro ihr mit eurer Solaranlage bisher einsparen konntet.

Dabei berücksichtigen wir die Netzeinspeisung, also auch der Teil, der selbst verbraucht wurde.

Automatisierung um Kosteneinsparung zu tracken

Der Aufbau wird am Ende so sein:

  • 3 numerische Helfer für Strompreis, Einspeisevergütung, gesparte Euro
  • Falls nicht vorhanden 2 Verbrauchszähler für produziert und eingespeist
  • eine Automatisierung läuft jeden Abend nach Sonnenuntergang (oder vor Tageswechsel) und berechnet anhand der Preishelfer die eingesparten Euros und addiert sie auf die entsprechende Entität

Mit diesem Schema hast du die Möglichkeit auch neue Strompreise / Einspeisevergütungen anzugeben, die dann bei der Amortisierungsrechnung benutzt werden.

Schritt 1

Helfer anlegen

Als Erstes benötigst du Helfer. Diese können unter Einstellungen >> Integrationen + Geräte >> Helfer über den Button + Helfer angelegt werden.

Folgende Helfer werden benötigt:

  • Strompreis
  • Einspeisevergütung
  • Amortisierung

Strompreis und Einspeisevergütung lassen sich übrigens auch gut im Energiedashboard nutzen, um immer die korrekten Preise zu haben. Also hier ggf. direkt umstellen.

Du benötigst einen Helfer für Einspeisevergütung (falls das eine Relevanz für dich hat) und für den Strompreis. Und einen weiteren Helfer für die gesparten Stromkosten.

Falls noch nicht vorhanden, brauchst du den Wert der Tagesproduktion und der eingespeisten Energie ins öffentliche Stromnetz. Wenn dein Balkonkraftwerk nur deine Grundlast deckt und du kaum einspeist, kannst du das ggf. ignorieren.

Die Helfer für die Tageswerte sind auch schnell angelegt. Dazu den Typ Verbrauchszähler wählen und als Intervall täglich wählen.

Schritt 2

Automatisierung für die Berechnung anlegen

Jetzt beginnt die eigentliche „Magie“. Die Automatisierung führt jeden Abend eine simple Berechnung aus, wie viel Euro heute eingespart werden konnten durch die Sonne. Das Ergebnis wird dann als neuer Wert in den Input Helfer geschrieben.

Die Automatisierung in Kurzform:

  • Auslöser: Zeit um 21 Uhr (eine Zeit nach Sonnenuntergang)
  • Bedingung: Keine
  • Aktion: : Berechnung ausführen und in Input Schreiben

Die Konfiguration kann bequem über die Oberfläche in Homeassistant gemacht werden. Lediglich bei der Berechnung musst du umstellen auf „Als YAML bearbeiten“ – das würde ich aber erst nach Auswählen meiner Entität machen, dann spart man sich das suchen und kopieren.

Folgende Rechnung müssen wir einfügen:

bisheriger Amortisierungswert + (Produktion heute in kWh * Strompreis in Euro)

Als fertiger Aktions-Block sieht, dass dann bei mir wie folgt aus:

service: input_number.set_value
data:
  value: >-
    {{ states('input_number.balkonkraftwerk_amortisierung') | float +
   (state_attr('sensor.electricity_price_meininger_strasse_17', 'avg_price') |
    float * states('sensor.balkonkraftwerk_heute') | float)}} 
target:
  entity_id: input_number.balkonkraftwerk_amortisierung

Falls du eine Einspeisevergütung bekommst, kann die Formel noch entsprechend angepasst werden. Hier ergänzt du die Berechnung mit den Entität-IDs für Einspeisevergütung und eingespeist heute. Zusätzlich muss von der täglichen Produktion zuerst der eingespeiste Betrag abgezogen werden.

Kombiniert in der Formel sieht das dann so aus – leider ist die Lesbarkeit in den Templates nicht immer ideal:

  value: >-
    {{ states('input_number.balkonkraftwerk_amortisierung') | float +
    (states('sensor.einspeisevergütung') | float * states('sensor.balkonkraftwerk_einspeisung_heute') | float) + 
   (state_attr('sensor.electricity_price_meininger_strasse_17', 'avg_price') |
    float * (states('sensor.balkonkraftwerk_heute') | float - states('sensor.balkonkraftwerk_einspeisung_heute') | float)}} 

Jetzt hast du alles zusammen, das du benötigst und kannst dir den Status der Amortisierung auf dem Dashboard anzeigen. Eine Erweiterung wäre: die Anzeige der Amortisierung in Prozent auf dem Dashboard.

So kann die Ausgabe im Dashboard dann aussehen. In meinem Beispiel handelt es sich um ein Balkonkraftwerk mit lediglich 400 Watt (je 200 Watt in Ost-West Ausrichtung).

Ausbaustufe 2: Verhindern von doppelter Ausführung an einem Tag

Bei Statistiken etc. ist es wichtig, dass die Ausführung auch sicher erfolgt. Würde man um 20.00 gerade ein Update installieren und der Raspberry rebootet neu, dann wäre der Wert verloren gegangen.

Um das zu verhindern habe ich noch eine Bedingung eingefügt, die prüft, ob die letzte Ausführung vor 22 Stunden stattfand. Damit kann ich die Automatisierung abends um 20:00 und 22:00 triggern, ohne dass doppelt der Wert geschrieben wird.

condition: template
value_template: "{{ ( as_timestamp(now()) - as_timestamp(state_attr('automation.balkonkraftwerk_amortisierung', 'last_triggered')) |int(0) ) > 79199 }}"

Ausbaustufe 3: Helfer vor überschreiben in der Oberfläche schützen

Bei Statistik-Werten ist es unschön, wenn diese ausersehen im Frontend überschrieben werden. Das geht bei den Input Feldern leider recht schnell mit einem falschen Klick.

Um dies zu verhindern kannst du dir einen Sensor anlegen, der den Wert des Input Field kopiert. Diesen neuen Sensor kannst du dann auf der Oberfläche problemlos verwenden.

Bei mir sieht das so in der configuration.yaml aus:

sensor: 
 - platform: template
   name: balkonkraftwerk_amortisierung_readonly:
   friendly_name: "Balkonkraftwerk Amortisierung Readonly"
   value_template: '{{ states("input_number.balkonkraftwerk_amortisierung") | float }}'
   unit_of_measurement: '€'

Vollständige Automatisierung

Alles zusammen sieht es dann wie folgt aus bei mir – dank der neuen Ansicht in Homeassistant 2022.9.0 auch richtig übersichtlich.

Automatisierung um Ertrag im Blick zu halten

Die Vollständige YAML:

description: ""
trigger:
  - platform: time
    at: "20:00:00"
  - platform: time
    at: "22:00:00"
condition:
  - condition: template
    value_template: >
      {{ now().strftime('%Y-%m-%d') !=
      state_attr('automation.balkonkraftwerk_amortisierung',
      'last_triggered').strftime('%Y-%m-%d') }}
action:
  - service: input_number.set_value
    data:
      value: >-
        {{ states('input_number.balkonkraftwerk_amortisierung') | float +
        (states('input_number.strompreis_aktuell') | float *
        states('sensor.balkonkraftwerk_heute') | float)}} 
    target:
      entity_id: input_number.balkonkraftwerk_amortisierung
mode: single

Gar nicht so viel, den größten Teil machen die Vorarbeiten mit den Helfern aus.


Schau auch nächste Woche wieder rein, wenn es eine neue Automatisierung der Woche gibt.

NICHTS VERPASSEN
Neue Beiträge direkt per Mail!

2 Idee über “Ertrag von PV Anlage berechnen – Amortisierung im Dashboard tracken #adw7

  1. Philipp sagt:

    Hallo David,

    eine super Idee. Leider setzt deine Erklärung extrem viel Vorwissen voraus und ich bekomme es nicht ans laufen.

    Könntest du nicht ein paar Zwischenschritte detaillierter erklären?

    Gruß

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.