Amortisierung Balkonkraftwerk berechnen

Das wars! Ich hatte noch andere Sensoren und Templates in der configuration.yaml. Ich wusste nicht, dass ich dann alle in die anderen yamls rein packen muss.

Tausend Dank!

1679316042944.png
 
hallo,
Es ist bestimmt noch möglich den eigenverbrauch in khw und die Amortisierung pro tag anzeigen zu lassen?
Ich nutze auch einen shelly 3pm, die eingespeiste Phase wird richtig berechnet und geht bei überschuss ins minus.
Der Gesamtverbrauch zählt leider nur hoch anstatt den überschuss wieder abzuziehen, was ich gerne hätte.
YAML:
template:
- sensor:
      - name: "Eigenverbrauch"
        state_class: measurement
        unit_of_measurement: W
        device_class: power
        state: >-
          {% set x = states('sensor.gesamt_strom') | float(0) %}
          {{ (([0, x, - 9999999]|sort)[1]) + (states('sensor.hm_1500_p_ac') | float(0)) }}
        attributes:
          ersparnis: >-
            {{ (state_attr('sensor.eigenverbrauch', 'strompreis')|float(0) * states('sensor.eigenverbrauch_kwh')|float(0)) - 1000 }}€
          strompreis: "0.32"
- sensor:
    - name: "Total Energy"
      unique_id: energy_total
      state: >-
          {{
            [ states('sensor.l1_energy'),
              states('sensor.l2_energy'),
              states('sensor.l3_energy'),
            ] | map('float') | sum
          }}
      unit_of_measurement: kWh
      device_class: energy
      state_class: total_increasing
      attributes:
        last_reset: "2023-01-01T00:00:00+00:00"
      availability: >-
          {{
            [ states('sensor.l1_energy'),
              states('sensor.l2_energy'),
              states('sensor.l3_energy'),
            ] | map('is_number') | min
          }}
    - name: "Power Total"
      unique_id: power_total
      state: >-
          {{
            [ states('sensor.l1_power'),
              states('sensor.l2_power'),
              states('sensor.l3_power'),
            ] | map('float') | sum
          }}
      unit_of_measurement: W
      device_class: power
      state_class: measurement
      availability: >-
          {{
            [ states('sensor.l1_power'),
              states('sensor.l2_power'),
              states('sensor.l3_power'),
            ] | map('is_number') | min
          }}
    - name: "Current Total"
      unique_id: current_total
      state: >-
          {{
            [ states('sensor.l1_current'),
              states('sensor.l2_current'),
              states('sensor.l3_current'),
            ] | map('float') | sum
          }}
      unit_of_measurement: A
      device_class: current
      state_class: measurement
      availability: >-
          {{
            [ states('sensor.l1_current'),
              states('sensor.l2_current'),
              states('sensor.l3_current'),
            ] | map('is_number') | min
          }}
    - name: "Total Power Solar"
      device_class: power
      unit_of_measurement: "W"
      state: >
          {{
          states('sensor.hm_1500_p_ac')|float(0) if states('sensor.hm_1500_p_ac')| int > 5 else 0
          }}
 
Also ich habe mir eine zusätzliche Entität (Template) gebildet in der ich das berechne.
Wenn die Gesamtleistung des 3EM negativ wird (ich also einspeise) zähle ich die Leistung in eine Rieman Integration um die eingespeiste Energie zu berechnen.
Dann addiere ich die Energie der 3 Phasen des 3 EM addiere dazu einen Helfer Startwert des Zähler Energieversorger und subtrahiere dann die eingespeiste Leistung.
Da ich noch einen Zähler habe der sich rückwärts dreht passt das ziemlich gut.
 
Okay hast da ne kleine hilfestellung für mich?
Hab das so ähnlich mit nem Helfer Rieman summenintregral für die PV berechnung in kWh
 
Die Gesamleistung hab ich ja schonmal zur Verfügung.
Subthrahiere ich da jetzt die Leistung über nen helfer oder als template?

Was mich auch noch stört ist das der Gesamt zählerstand im HA nicht mit dem Hauptzähler vom Haus übereinstimmt.
Habe schon versucht diesen über Entwicklerwerkzeuge Statistik zu ändern, aber er resettet sich immer wieder auf den alten stand....
 
YAML:
- sensor:
    - name: "Rückgabe Netz"
      unit_of_measurement: "kW"
      state: >
        {% set x = (((states('sensor.shelly_em3_channel_b_power') | float(0) / 1000 )) * (-1)) %}
        {{ ([0, x, 9999999]|sort)[1] | float(0) }}
- sensor:
    - name: "Stromzähler"
      unit_of_measurement: "kWh"
      device_class: energy
      unique_id: "Stromzähler"
      state: >
        {% set L1_Energy = states('sensor.shelly_em3_channel_a_energy') | float(0) %}
        {% set L2_Energy = states('sensor.shelly_em3_channel_b_energy') | float(0) %}
        {% set L3_Energy = states('sensor.shelly_em3_channel_c_energy') | float(0) %}
        {% set Energy_Offset = states('input_number.startwert_stromzahler_netz') | float(0) %}
        {% set Rueckgabe_Energy = states('sensor.ruckgabe_solar_energie') | float(0) %}
        {{ (L1_Energy + L2_Energy + L3_Energy + Energy_Offset - Rueckgabe_Energy) | round(2) }}
Den Sensor Rückgabe Netz nehme ich als Input für eine Rieman Integration dessen Wert ich dann
Abziehe. Die Rieman Interation (Helfer) heißt dann Rückgabe Energie

Also ich denke die meisten Werte erklären sich anhand des Namens.
Bei mir ist das BKW auf der Phase L2 deshalb betrachte ich nur den Rückgabewert dieser Phase.
Die anderen gehen nicht ins Minus.

Der Startwert des Zählers ist in einem Helfer (Input_Number) gespeichert.
Das ist die Differenz beim Einbau des 3EM zum Stromzähler.

Sorry sehe grad das das nicht ganz stimmt.
Ich habe das mal geändert.
Als Input für die Integration muss nicht die eine Phase genommen werden sondern die aktuelle Summe der 3 Phasen, nur wenn die negativ ist dreht ja auch der Zähler rückwärts.
Komm aber grad nicht an den Code.
 
Zuletzt bearbeitet:
Okay habe deinen Code übernommen, bei Rückgabe Netz hab ich alle drei Phasen einbezogen. Stecke manchmal den stecker von dem BKW um😬
Den Sensor rückgabe Energie habe ich direkt vom WR bezogen, dieser gibt die gemessenen kWh Total und pro Tag aus.
So brauch ich ja den Helfer Integralsensor nicht wenn ich mich nicht irre.
Danke für deine hilfe.
 
Ja das ist soweit klar das der negative wert ins netz geht, der Zählerstand macht aber irgendiwe keinen sin der springt andauernd. mal 20kWh hoch oder runter inderhalb von paar sekunden. Zumal ich den aktuellen zählerwert als input number genommen habe, aber er weniger anzeigt also 68tausend statt 69tausend (aktueller zählerstand)

YAML:
template:
- sensor:
    - name: "Power Return"
      unit_of_measurement: "kW"
      state: >
        {% set x = (((states('sensor.gesamt_strom') | float(0) / 1000 )) * (-1)) %}
        {{ ([0, x, 9999999]|sort)[1] | float(0) }}

- sensor:
    - name: "Stromzähler"
      unit_of_measurement: "kWh"
      device_class: energy
      unique_id: "Stromzähler"
      state: >
        {% set Energy = states('sensor.gesamt_strom') | float(0) %}
        {% set Energy_Offset = states('input_number.startwert_zahler') | float(0) %}
        {% set Rueckgabe_Energy = states('sensor.ruckgabe_netz') | float(0) %}
        {{ (Energy + Energy_Offset - Rueckgabe_Energy) | round(2) }}
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    103 KB · Aufrufe: 8
Hallo,
ich habe hier mal mitgelesen...
Und auch schon fleißig in meiner Home Assistant Installation nachgebaut.

Zu meinem Setup:
E3DC Hauskraftwerk mit Speicher

Somit kommt ja in der Theorie der Verbrauch der Batterie ja noch zum Eigenverbrauch hinzu oder?
Ich habe das im Template schonmal so abgebildet:

Code:
{% set stromverbrauchwatt = states('sensor.tasmota_strom_power') | float(0) %}
{% set batterieverbrauch = states('sensor.e3dc_battery_power') | float(0) %}
{% set strompreis = 0.34 | float(2) %}
Stromverbrauch: {{ (([0, stromverbrauchwatt, - 9999999]|sort)[1])}} Watt
Batterieverbrauch: {{(([0, batterieverbrauch, - 9999999]|sort)[1]) }} Watt
Solarproduktion: {{(states('sensor.e3dc_solar_power') | float(0))}} Watt
Hausverbrauch: {{(states('sensor.e3dc_power_consumption') | float(0))}} Watt
Eigenverbrauch: {{ (([0, stromverbrauchwatt, - 9999999]|sort)[1]) + (states('sensor.e3dc_solar_power') | float(0)) + (([0, batterieverbrauch, - 9999999]|sort)[1]) }} Watt
Eigenverbrauch_kWh: {{(states('sensor.eigenverbrauch_kwh') | float(0))}} kWh
Ersparnis: {{ (((strompreis)|float(0) * states('sensor.eigenverbrauch_kwh')|float(0))|round(2)) }} €

Als Ergebnis kommt dann das hier raus

Code:
Stromverbrauch: -13.0 Watt
Batterieverbrauch: -1812.0 Watt
Solarproduktion: 255.0 Watt
Hausverbrauch: 2057.0 Watt
Eigenverbrauch: -1570.0 Watt
Eigenverbrauch_kWh: 20.69 kWh
Ersparnis: 7.03 €

Leider ist der Eigenverbrauch jetzt negativ, wodurch natürlich der Eigenverbrauch_KWH auch wieder sinkt...
Was mache ich falsch?

Mit freundlichen Grüßen
Chris
 
Hallo an Alle ich hofe hier kann mir geholfen werden.

Habe ein kleines Kraftwerk aus 3 Modulen und wollte nun in HA diese richtig abbilden. Leider schaffe ich das aber nicht.

Aktuell wenn ich alle Werte unter Energie eingebe zählt er alles falsch :/

Verbaut ist ein 800 Watt Wechselrichter mit einer Shelly S Steckdose weiters ist im Stromschrank ein Shelly Pro 3EM verbaut. Funktioniert auch soweit nur wird eben nicht "gegen" gerechnet.

Ich habe im Netz ein Script für die Yaml Datei gefunden und mir werden auch alle Werte unter den Geräten/Sensoren angezeigt aber ich kann keinen Wert zum "Energie" Dashboard hinzufügen.
Hier mein Code und die Seite von der ich diese Werte habe. Meine Sensoren habe ich anden namen meines Shelly angepasst. Aber wie gesagt der Tageswert wie auf der Seite beschrieben lässt sich auch nach Tagen nicht auswählen auch nach Einspeisung ins Netz nicht.
Bitte um Hilfe danke.


Code:
sensor:
  - platform: template
    sensors:
      # Template sensor for current power comsumption
      power_current:
        friendly_name: "Power Current"
        unit_of_measurement: 'W'
        value_template: >-
            {{ states('sensor.shelly_pro_3em_phase_a_active_power')|float + states('sensor.shelly_pro_3em_phase_b_active_power')|float + states('sensor.shelly_pro_3em_phase_c_active_power')|float }}
        availability_template: "{{
            [ states('sensor.shelly_pro_3em_phase_a_active_power'),
              states('sensor.shelly_pro_3em_phase_b_active_power'),
              states('sensor.shelly_pro_3em_phase_c_active_power')
            ] | map('is_number') | min
          }}"
   
      # Template sensor for values of power import (active_power > 0)
      power_import:
        friendly_name: "Power Import"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shelly_pro_3em_phase_a_active_power')|float + states('sensor.shelly_pro_3em_phase_b_active_power')|float + states('sensor.shelly_pro_3em_phase_c_active_power')|float) > 0 %}
            {{ states('sensor.shelly_pro_3em_phase_a_active_power')|float + states('sensor.shelly_pro_3em_phase_b_active_power')|float + states('sensor.shelly_pro_3em_phase_c_active_power')|float }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shelly_pro_3em_phase_a_active_power'),
              states('sensor.shelly_pro_3em_phase_b_active_power'),
              states('sensor.shelly_pro_3em_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power export (active_power < 0)
      power_export:
        friendly_name: "Power Export"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shelly_pro_3em_phase_a_active_power')|float + states('sensor.shelly_pro_3em_phase_b_active_power')|float + states('sensor.shelly_pro_3em_phase_c_active_power')|float) < 0 %}
            {{ (states('sensor.shelly_pro_3em_phase_a_active_power')|float + states('sensor.shelly_pro_3em_phase_b_active_power')|float + states('sensor.shelly_pro_3em_phase_c_active_power')|float) * -1 }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shelly_pro_3em_phase_a_active_power'),
              states('sensor.shelly_pro_3em_phase_b_active_power'),
              states('sensor.shelly_pro_3em_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power consumption
      power_consumption:
        friendly_name: "Power Consumption"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.power_export')|float(0)) > 0 and (states('sensor.power_solargen')|float(0) - states('sensor.power_export')|float(0)) < 0 %}
            {{ 0 }}  
          {% elif (states('sensor.power_export')|float(0)) > 0 and (states('sensor.power_solargen')|float(0) - states('sensor.power_export')|float(0)) > 0 %}
            {{ (states('sensor.power_solargen')|float(0)) - states('sensor.power_export')|float(0) }}  
          {% else %}
            {{ states('sensor.power_import')|float(0) + states('sensor.power_solargen')|float(0) }}
          {% endif %}

      # Template sensor for values of energy Solar generation (solar_power > 0)
      power_solargen:
        friendly_name: "Power Solar Generation"
        unit_of_measurement: 'W'
        value_template: >-
          {% if ( 0 ) > 0 %}
            {{ ( 0 ) }}
          {% else %}
            {{ 0 }}
          {% endif %}


  # Sensor for Riemann sum of energy import (W -> Wh)
  - platform: integration
    source: sensor.power_import
    name: energy_import_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
  - platform: integration
    source: sensor.power_export
    name: energy_export_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy consumption (W -> Wh)
  - platform: integration
    source: sensor.power_consumption
    name: energy_consumption_sum
    unit_prefix: k
    round: 2
    method: left

utility_meter:
  energy_import_daily:
    source: sensor.energy_import_sum
    name: Energy Import Daily
    cycle: daily
  energy_import_monthly:
    source: sensor.energy_import_sum
    name: Energy Import Monthly
    cycle: monthly
  energy_export_daily:
    source: sensor.energy_export_sum
    name: Energy Export Daily
    cycle: daily
  energy_export_monthly:
    source: sensor.energy_export_sum
    name: Energy Export Monthly
    cycle: monthly
  energy_consumption_daily:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Daily
    cycle: daily
  energy_consumption_monthly:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Monthly
    cycle: monthly
 
Ufff, sorry, aber das erschlägt einen. Was um Himmels willen willst Du da alles berechnen ?
Deine Shelly S Steckdose liefert Dir also den Wert, den deine kleine PV an Strom liefert. Die trägst Du ja auch gleich unter "Sonnenkollektoren" ein und sollte dann auch angezeigt werden.
Dein Shelly Pro scheint ja nach 3 Phasen aufzulösen und liefert keinen Wert für den Gesamtverbrauch ?
Hmmm, Du könntest mal versuchen, wenn Du die 3 Phasen einfach bei "Stromnetz" einträgst, was er dann macht. Eventuell summiert er die von selbst.

Der Rest deiner Routinen und Berechnungen erfordert eine nähere Erklärung. Was denkst Du, was welche Routine tun soll ?
Sorry, aber ich mag mich nicht hier hin setzen, und die Logik, die da hinter stecken soll, heraus zu tüfteln.
Welche Werte willst Du überhaupt alles haben ?
 
Nehme alles zurück :)

Habe das Script nochmals neu erstellt und alle meine Daten 100x überprüft. Habe nun festgestellt das meine "Werte" als "kwh" angenommen wurden statt nur "W". Nachdem ich die Werte resetet habe also "Daily". Hat das Script so funktioniert wie es soll.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.520
Beiträge
46.373
Mitglieder
4.156
Neuestes Mitglied
Wuppi
Zurück
Oben