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.
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.
Automatisierung der WOche
Jeden Freitag 12:00 Uhr, pünktlich zur Mittagspause, wird eine neue Automatisierung veröffentlicht. Hast du auch eine Automatisierung die hier gut rein passt? Schick sie gerne als Inspiration für andere.
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ß
Hey Philipp,
kannst du mir sagen wo es genau hängt? Dann versuche ich dort noch etwas genauer auszuführen
Hallo, das geht mir genauso. Wollte es gerade nachbauen, aber scheiter schon am Anfang an den Helfern. Also was für ein Typ? Helfer, Zähler, Text…. weis nicht was bei Strompreis passt, weil da gibt man ja von bis ein. Habe das Energie Dashboard erstellt, du hast da eine Anmerkung, drin, habe ich dass richtig verstanden, dass ich anstatt den Fixenpreis im Energie Dashboard dann den Helfer angeben soll, wenn ich bsp ein neuen Vertrag habe, dann nur den Helfer ändern muss? Im Ertrag Gesamt beim Energie Panel rechnet er dann ab datum x mit den neuen Preis oder Sets alles auch die alten auf dem Preis bei Gesamt.
Moin David
leider ist das noch keine Anleitung zum Nachbauen, da wie die Anderen schon erwähnt habe, kleine wichtige Punkte bei den Helferlein fehlen.
Kannst du das bitte noch ergänzen.
Welche Helfer muss man wählen und konfigurieren?:
Strompreis
Einspeisevergütung
Amortisierung
Zudem bitte auch die Helfernamen noch ergänzen, damit man auch weiss, wo diese in den Scripten verdrahtet sind.
Die Rechnung stimmt so meiner Meinung nicht
Man darf ja nur den Eigenverbrauch * den aktuellen Strompreis nehmen und was ist wenn man einen variablen Strompreis hat wie z.B. bei Tibber oder ähnlichen Anbietern. Hier müsste man mit einem Integral über den Tag rechnen.
Die Überproduktion / Einspeisung muss separat berechnet werden. dies kann am Tagesende gemacht werden und dann der Amortisierung zugerechnet werden.
(Produktion heute in kWh * Strompreis in Euro) ist somit nicht richtig und würde das Ergebnis schön rechnen.
Danke für das Feedback, ich werde noch einmal drüber schauen.