Amortisierung Balkonkraftwerk berechnen

Vielen Dank für die Erläuterung!
Jetzt verstehe ich das - ich zu Beginn am überlegen wie ich das selber baue und habe dann zum Glück diesen Thread mit Deinen Skripten gefunden...

Ich muss mich unbedingt etwas in die Sache einarbeiten - da stecken ja ungeahnte Möglichkeiten drin.

Also auf jeden Fall noch mal vielen Dank!!!
 
Freut mich, dass du Nutzen daraus ziehen kannst.

Wenn du noch anderweitig Fragen hast oder bei was nicht weiter kommst, tu dir keinen Zwang an hier im Forum zu fragen 😉
 
Hallo zusammen! Erst einmal vielen Dank für Eure tolle Vorarbeit bis hierhin. Konnte da auch einiges umsetzen. Gerade die Sensoren, die @IvoryBalboa90 zu Beginn dieses Threads erklärt hat funktionieren prima.
Nun hatte ich versucht etwas Ordnung in die Configuration.yaml zu bringen (habe natürlich am Anfang nichts ausgelagert), das wollte ich nun nachholen und wie von euch empfohlen eine sensor.yaml / template.yaml anlegen. Leider funktioniert dann alles bisherige nicht mehr... Könnte ihr da mal einen Blick auf die (von mit zusammenkopierte ;)) configuration.yaml werfen?

YAML:
# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

# Powerfox integration
rest:
  - authentication: basic
    username: xxxxx
    password: xxxxx
    scan_interval: 30
    resource: https://backend.powerfox.energy/api/2.0/my/main/current?unit=kwh
    sensor:
      - name: "poweropti"
        json_attributes:
          - "Watt"
          - "Timestamp"
          - "A_Plus"
          - "A_Minus"
          - "Outdated"

template:
  - sensor:
      - name: "Strom-EG-Bezug"
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
            {{ state_attr('sensor.poweropti', 'A_Plus') }}
      - name: "Strom-EG-aktuell"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
            {{ state_attr('sensor.poweropti', 'Watt') }}

    # Berechnet anhand des Stromzählers die Rückgabe ins Netz, wenn negative Werte ausgegben werden
      - 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.strom_eg_aktuell')) and states('sensor.strom_eg_aktuell') | float(0) < 0 %}
                {{(states('sensor.strom_eg_aktuell') | 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.strom_eg_aktuell')) and states('sensor.strom_eg_aktuell') | float(0) < 0 %}
                {{ ( (states('sensor.strom_eg_aktuell') | float(0) ) + (states('sensor.balkonsolar_power') | float(0) ) ) | round (3) }}
            {% else %}
                {{ states('sensor.solarman_output_active_power') | round (3) }}
            {% endif %}

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


#PV Ertrag Sensor Energiedashboard

      - name: "PV Leistung gesamt"
        unique_id: pvpower_total
        state_class: measurement
        state: >-
          {{ (states('sensor.tuya_leistung')|float(0) +
              states('sensor.solarman_output_active_power')|float(0)) }}
        unit_of_measurement: W
        device_class: power

      - name: "Eigenverbrauch"
        state_class: measurement
        unit_of_measurement: W
        device_class: power
        state: >-
          {% set x = states('sensor.strom_eg_aktuell') | float(0) %}
          {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.pv_leistung_gesamt') | float(0)) }}
        attributes:
          ersparnis: >-
            {{ (state_attr('sensor.eigenverbrauch', 'strompreis')|float(0) * states('sensor.eigenverbrauch_kwh')|float(0)) - 1000 }}€
          strompreis: „0.43“
 
Zuletzt bearbeitet:
Erstmal ergänzt du um die entsprechenden Zeilen an der richtigen Stelle:

YAML:
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensor.yaml
template: !include template.yaml

In der template.yaml und sensor.yaml lässt du die "Überschrift" (- template) dann weg, fügst aber noch den "Typ" (sensor, binary_sensor, etc) des sensors hinzu. Sieht dann anhand deines Beispiels in der template.yaml so aus:

YAML:
  - sensor:
      - name: "Strom-EG-Bezug"
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
            {{ state_attr('sensor.poweropti', 'A_Plus') }}
  - sensor:
      - name: "Strom-EG-aktuell"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
            {{ state_attr('sensor.poweropti', 'Watt') }}

So sollte es funktionieren
 
Erstmal ergänzt du um die entsprechenden Zeilen an der richtigen Stelle:

YAML:
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensor.yaml
template: !include template.yaml

In der template.yaml und sensor.yaml lässt du die "Überschrift" (- template) dann weg, fügst aber noch den "Typ" (sensor, binary_sensor, etc) des sensors hinzu. Sieht dann anhand deines Beispiels in der template.yaml so aus:

YAML:
  - sensor:
      - name: "Strom-EG-Bezug"
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
            {{ state_attr('sensor.poweropti', 'A_Plus') }}
  - sensor:
      - name: "Strom-EG-aktuell"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
            {{ state_attr('sensor.poweropti', 'Watt') }}

So sollte es funktionieren
Hatte ich mal versucht, leider werden folgende Fehler gefunden:

Invalid config for [rest]: [state] is an invalid option for [rest]. Check: rest->rest->0->sensor->1->state. (See /config/configuration.yaml, line 20).
 
Scheinbar habe ich irgendwas nicht korrekt eingerückt, jetzt scheint es zu funktionieren. Muss allerdings erst wieder bis zum Tageslicht warten, da einer der Wechselrichter "offline" ist und daher wahrscheinlich die Meldung "Die Entität ist nicht numerisch" kommt, müsste ja wahrscheinlich statt dem Wert in Watt der Zustand "unknown" sein, wenn ich das richtig verstanden habe.
Aber so schaut die YAML schon deutlich aufgeräumter auf. Danke

PS:
Eine Frage habe ich noch zu dem Ganzen. Für den "aktuellen Strompreis" habe ich einen Helfer angelegt input_number.aktueller_strompreis, um bei den häufigen Änderungen im Tarif den aktuellen Preis einfach anpassen zu können, ohne dass es auf die bisherigen Berechnungen Einfluss nimmt. Kann ich in deinem Code auch den Preis von diesem "Helfer" einsetzen? Das wäre traumhaft.

YAML:
- name: "Eigenverbrauch"
        state_class: measurement
        unit_of_measurement: W
        device_class: power
        state: >-
          {% set x = states('sensor.strom_eg_aktuell') | float(0) %}
          {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.pv_leistung_gesamt') | float(0)) }}
        attributes:
          ersparnis: >-
            {{ (state_attr('sensor.eigenverbrauch', 'strompreis')|float(0) * states('sensor.eigenverbrauch_kwh')|float(0)) - 1000 }}€
          strompreis: „0.43“
 
Zuletzt bearbeitet:
Na klar kannste den Helfer einsetzen, nämlich so:

YAML:
- name: "Eigenverbrauch"
        state_class: measurement
        unit_of_measurement: W
        device_class: power
        state: >-
          {% set x = states('sensor.strom_eg_aktuell') | float(0) %}
          {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.pv_leistung_gesamt') | float(0)) }}
        attributes:
          ersparnis: >-
            {{ (state_attr('sensor.eigenverbrauch', 'strompreis')|float(0) * states('sensor.eigenverbrauch_kwh')|float(0)) - 1000 }}€
          strompreis: >-
            {{ states('input_number.aktueller_strompreis') }}

Danach einmal in die Entwicklerwerkzeuge, Code prüfen und ganz unten auf Template-Entitäten klicken.
 
Na klar kannste den Helfer einsetzen, nämlich so:

YAML:
- name: "Eigenverbrauch"
        state_class: measurement
        unit_of_measurement: W
        device_class: power
        state: >-
          {% set x = states('sensor.strom_eg_aktuell') | float(0) %}
          {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.pv_leistung_gesamt') | float(0)) }}
        attributes:
          ersparnis: >-
            {{ (state_attr('sensor.eigenverbrauch', 'strompreis')|float(0) * states('sensor.eigenverbrauch_kwh')|float(0)) - 1000 }}€
          strompreis: >-
            {{ states('input_number.aktueller_strompreis') }}

Danach einmal in die Entwicklerwerkzeuge, Code prüfen und ganz unten auf Template-Entitäten klicken.
Super! Auch das funktioniert einwandfrei und mit jeder solcher kleinen Anpassung lerne ich den Umgang mit der YAML ein kleines Stück weit besser kennen! Hatte bis zum Einstieg in Home Assistant noch nie "aktiven" Kontakt zu Code. Jetzt warten wir mal auf die Sonne, die hat sich ja für morgen angekündigt. Vielen Dank!
 
Hallo zusammen! Erst einmal vielen Dank für Eure tolle Vorarbeit bis hierhin. Konnte da auch einiges umsetzen. Gerade die Sensoren, die @IvoryBalboa90 zu Beginn dieses Threads erklärt hat funktionieren prima.
Nun hatte ich versucht etwas Ordnung in die Configuration.yaml zu bringen (habe natürlich am Anfang nichts ausgelagert), das wollte ich nun nachholen und wie von euch empfohlen eine sensor.yaml / template.yaml anlegen. Leider funktioniert dann alles bisherige nicht mehr... Könnte ihr da mal einen Blick auf die (von mit zusammenkopierte ;)) configuration.yaml werfen?

YAML:
# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

# Powerfox integration
rest:
  - authentication: basic
    username: xxxxx
    password: xxxxx
    scan_interval: 30
    resource: https://backend.powerfox.energy/api/2.0/my/main/current?unit=kwh
    sensor:
      - name: "poweropti"
        json_attributes:
          - "Watt"
          - "Timestamp"
          - "A_Plus"
          - "A_Minus"
          - "Outdated"

template:
  - sensor:
      - name: "Strom-EG-Bezug"
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
            {{ state_attr('sensor.poweropti', 'A_Plus') }}
      - name: "Strom-EG-aktuell"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
            {{ state_attr('sensor.poweropti', 'Watt') }}

    # Berechnet anhand des Stromzählers die Rückgabe ins Netz, wenn negative Werte ausgegben werden
      - 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.strom_eg_aktuell')) and states('sensor.strom_eg_aktuell') | float(0) < 0 %}
                {{(states('sensor.strom_eg_aktuell') | 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.strom_eg_aktuell')) and states('sensor.strom_eg_aktuell') | float(0) < 0 %}
                {{ ( (states('sensor.strom_eg_aktuell') | float(0) ) + (states('sensor.balkonsolar_power') | float(0) ) ) | round (3) }}
            {% else %}
                {{ states('sensor.solarman_output_active_power') | round (3) }}
            {% endif %}

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


#PV Ertrag Sensor Energiedashboard

      - name: "PV Leistung gesamt"
        unique_id: pvpower_total
        state_class: measurement
        state: >-
          {{ (states('sensor.tuya_leistung')|float(0) +
              states('sensor.solarman_output_active_power')|float(0)) }}
        unit_of_measurement: W
        device_class: power

      - name: "Eigenverbrauch"
        state_class: measurement
        unit_of_measurement: W
        device_class: power
        state: >-
          {% set x = states('sensor.strom_eg_aktuell') | float(0) %}
          {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.pv_leistung_gesamt') | float(0)) }}
        attributes:
          ersparnis: >-
            {{ (state_attr('sensor.eigenverbrauch', 'strompreis')|float(0) * states('sensor.eigenverbrauch_kwh')|float(0)) - 1000 }}€
          strompreis: „0.43“
Bei aktuellem Sonnenschein stellt sich mir eine erneute Frage:
Wenn der "Eigenverbrauch" aufgrund der Mehrproduktion nun einen negativen Wert annimmt, läuft mein Zähler der bisherigen Ersparnis wieder rückwärts, das sollt doch eigentlich nicht der Fall sein, sondern dann einfach "stehen bleiben"? Wo habe ich da einen Denkfehler? Oder einen Fehler bei den Sensoren in der YAML? Ich stehe gerade auf dem Schlauch...

Es geht dabei um diesen:
YAML:
#Eigenverbrauch
    - name: "Eigenverbrauch"
      state_class: measurement
      unit_of_measurement: W
      device_class: power
      state: >-
        {% set x = states('sensor.strom_eg_aktuell') | float(0) %}
        {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.gesamte_leistung_mini_pv_3') | float(0)) }}
      attributes:
        ersparnis: >-
          {{ (state_attr('BalkonsolarEigenverbrauchWatts', 'strompreis')|float(0) * states('sensor.eigenverbrauch_kwh')|float(0)) - 783 }}€
        strompreis: >-
          {{ states('input_number.aktueller_strompreis') }}
 
Zuletzt bearbeitet:
Servus miteinander,

Ihr habt mir ja letztens super weitergeholfen - es läuft soweit alles perfekt.

Ich habe noch etwas weiter geschrieben und mir einen Sensor generiert, der die die Einspeisung ins Netz berechnet, damit ich ein Gefühl dafür bekomme wieviel ich derzeit z.B. in eine Batterie abzweigen könnte:

YAML:
- sensor:
    name: "Einspeisung"
    state_class: measurement
    unit_of_measurement: W
    device_class: power
    state: >-
        {{ (states('sensor.solar_power') | float(0)) - (states('sensor.eigenverbrauch') | float(0)) }}
       
und in der sensors datei:
       
- platform: integration
  source: sensor.einspeisung
  name: Einspeisung_kwh
  unit_prefix: k
  round: 2


Zur besseren Übersicht habe ich noch drei Helfer angelegt, die den Eigenverbrauch per Tag, Monat und Jahr in Form eines Verbrauchszählers sammeln.
Bildschirmfoto 2023-02-25 um 17.22.48.png

Irgendwo ist aber noch ein Fehler drin, da ich immer wieder morgens einen Wert abgelegt bekomme der viel zu hoch ist.
Hier auf dem Foto z.B. 0,31kwh statt einem sanften Anstieg...
Bildschirmfoto 2023-02-25 um 17.32.46.png
Der 'Sprungwert' entspricht aber auch nicht dem letzten des Vortags, der wie zu sehen ist 0,38kwh war.
Auf dem Einspeisesensor in W sieht alles gut aus:
Bildschirmfoto 2023-02-25 um 17.34.58.png

Aber bei dem Einspeisesensor in kWh ist auch der Sprung mit 0,31 zu sehen:
Bildschirmfoto 2023-02-25 um 17.39.17.png

Irgendwo beim anlegen des Sensors 'Einspeisung_kwh' muss also der Fehler liegen, ich komme aber nicht so richtig drauf...

Vielleicht weiss ja jemand von Euch wie ich mein Problem lösen kann...

Grüsse
Ferdinand
 
Warum soll der Wert falsch sein?
Wie die Einheit ja schon sagt ist das Energie pro Std. Dh der erste Wert kommt nach einer Stunde Einspeisung.
 
wäre super, erscheint mir aber unwahrscheinlich.
ich habe gerade noch mal geschaut - heute habe ich z.B. einen Wert von 70Wh zwischen 8 und 9 Uhr.
Wenn ich den Verlauf der eingespeisten W ansehe habe ich vielleicht 15 Minuten lang 2-5W eingespeist und einmal für 10 Minuten 50W.
Da komme ich niemals auf 70Wh...
 
Ich benötige leider auch einmal Hilfe:

Ich versuche ebenfalls mein BKW in Home Assistent einzubinden und habe dazu die Codes aus Post #21 von @IvoryBalboa90 eingefügt:

configuration.yaml

1679301622041.png


sensors.yaml

1679301652597.png


template.yaml

1679301676389.png



Allerdings kann ich nicht Neu starten da die Konfiguration einen Fehler enthält:

1679301719348.png

Ich kann auf Anhieb jedoch keinen Fehler entdecken?!
 
Oh man... Das hat geklappt. Danke!

Nun aber das nächste "Problem":

Ich müsste doch jetzt eigentlich einen Sensor Eigenverbrauch haben oder? Home Assistant habe ich neu gestartet. Allerdings wird mir keiner angezeigt.

In Entwicklerwerkzeuge habe ich noch folgendes eingegeben (oder ist das gar nicht notwendig)?:

Code:
{% set x = states('sensor.q3d_strom_leistung') | float(0) %}
Eigenverbrauch: {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.brotbackautomat_power') | float(0)) }} Watt

Da wird mir ein der richtige Wert unter Templates angezeigt:

1679302848398.png
 
Was in den Entwicklerwerkzeugen getan wird hat erstmal nichts mit (nicht) vorhandenen Sensoren zu tun, das ist quasi nur "zum anschauen".

Versuch mal, in der configuration.yaml die obersten zwei (dann drei) Zeilen so zu schreiben:
YAML:
template:
  - sensor:
      - name: "Eigenverbrauch"
- auch hier wieder auf die korrekten Einrückungen achten.
 
Leider schaffe ich es nicht... Ich muss mir das nochmal in Ruhe angucken und am besten von vorne anfangen...

Aber grundsätzlich muss ich keine weiteren Einstellungen vornehmen außer die drei in Post #113?
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.917
Beiträge
57.777
Mitglieder
5.878
Neuestes Mitglied
Otto-2
Zurück
Oben