Amortisationszeit PV Anlage berechnen

Hallo Zusammen,

ich suche nach einem Weg um die Amortisationszeit meiner PV Anlage zu errechnen. Dazu würde ich die Formel: Gesamtkosten der Anlage, dividiert durch die Summe der jährlichen Einnahmen und Einsparungen rechnen.

Als Ergebnis erhalte ich die Zeit in Jahren. z.B.: 21000 € / 1564,82 € = 13,42 Jahre oder 13,42 Jahre * 365 = 4898,3 Tage.

Bis hier alles gut, aber ich würde es gerne schöner darstellen können, z.B.: Jahr - Monate- Tage

Das ganze als Template Sensor angelegt und dann aus dem Wert einen Timestamp machen, um dann weiter zu rechnen?

#strom_pv_amortisation_zeit_in_tagen
      - unique_id: strom_pv_amortisation_zeit_in_tagen
        name: "Strom PV Amortisation Zeit in Tagen"
        state: '{{ ((states["input_number.pv_anlage_anschaffungskosten"].state | float(default=0) / states["sensor.strom_pv_einnahmen"].state | float(default=0)) * 365) | round (2) }}'
        unit_of_measurement: d
        state_class: measurement
        device_class: duration 
1 „Gefällt mir“

hi, hast du schon eine Lösung?
Gruß Alex

Was müsste berechnet werden, wenn ein Panel ersetzt werden muss, oder die Anlage einen neuen WR benötigt. Dazu müsste der HA einen Template haben, der die Einzelkomponenten preislich erfasst. Die Amortisierung verändert sich ja, wenn Komponenten getauscht werden müssen, über 13,42 Jahre. Ich würde vorschlagen, diese Werte in der PV-Anlagen Dokumentation zu pflegen, da die Rechnungen eh gesammelt werden. Der Wert “input_number.pv_anlage_anschaffungskosten” ist nie konstant! Eine gute Aufgabe für die sonnenarmen Tage.
Gruß Bernhard

vielleicht hilfts, hab es so gelöst:

sensor:
  - name: "Amortisierung"
    unique_id: balkonkraftwerk.amortisierung
    unit_of_measurement: "€"
    state: >
        {{ (((((states('sensor.solar_gesamt_energie') | float(0) + states('input_number.strom_solar_offset') | float(0) ) / 1000 ) * states('input_number.strom_kosten_je_kw_h') | float(0)) * 1.19 ) - states('input_number.bk_anschaffungskosten') | float(0)) | round(2) }}
    attributes:
      days_from_start: >      
        {{ ((as_timestamp(now()) - as_timestamp("2024-01-07 00:00:00") ) | timestamp_custom("%j") | int) }}
      days_calc_end: >
        {{ ((((states('input_number.bk_anschaffungskosten') | float(0) -
        (((states('sensor.solar_gesamt_energie') | float(0) + states('input_number.strom_solar_offset') | float(0) ) / 1000) * states('input_number.strom_kosten_je_kw_h') | float(0))) | round(2)) /
        (((states('sensor.solar_gesamt_energie') | float(0) + states('input_number.strom_solar_offset') | float(0) ) / 1000) / ((as_timestamp(now()) - as_timestamp("2024-01-07 00:00:00") ) | timestamp_custom("%j") | int)))
        | round(0))    
        }}
      total_wh: >
        {{ (states('sensor.solar_gesamt_energie') | float(0) + states('input_number.strom_solar_offset') | float(0)) | round(0) }}
      total_kwh: >
        {{ ((states('sensor.solar_gesamt_energie') | float(0) + states('input_number.strom_solar_offset') | float(0)) / 1000) | round(4) }}

Hallo, für was steht der ‘input_number.strom_solar_offset’ Helfer?

Cool Idee, danke. Schreibe ich mir direkt mal auf meine Wunschliste für zukünftige Projekte.

Eventuell die Investkosten dann einfach um die Kosten der Ersatzteile erhöhen. Muss man halt auch in 8 Jahren noch dran denken.

Leider auch blöd zu sehen was für ein schlechtes Invest eine PV ist. Ich finde es ist dennoch eine gute Sache.
In MSCI investiert sind es nach 13 Jahren 88.000€. (natürlich aus der Vergangenheit geguckt inkl Corona und Ukraine).

input_number.strom_solar_offset hab ich mir nur eingebaut, um Abweichungen zu korrigieren …

für Netzeinspeisung ohne Vergütung oder mit Rücklaufsperre muss das Template natürlich angepasst werden. Da mein Zähler aber rückwärts läuft bei Einspeisung, hab ich mir da auch nichts eingebaut.

lg

ok, ich bin bei Tibber. Dann kann ich den Sensor einfach weg lassen?

lg

hi

ich nutze deinen Sensor und habe ihn angepasst. Kannst du mir einiges erläutern? warum die * 1.19? wofür hast du die total wh und total kWh? mein Hoymile wirft KWh fertig aus. Die berechnung funktoniert bei mir leider nicht wirklich

- sensor:
      - name: "Amortisierung"
        unique_id: balkonkraftwerk.amortisierung
        unit_of_measurement: "€"
        state: >
            {{ (((((states('sensor.hoymile1500pv1_yieldtotal') | float(0) + states('input_number.strom_solar_offset') | float(0) ) / 1000 ) * states('input_number.stromkosten_kwh') | float(0)) * 1.19 ) - states('input_number.bk_anschaffungskosten') | float(0)) | round(2) }}
        attributes:
          days_from_start: >      
            {{ ((as_timestamp(now()) - as_timestamp("2024-05-19 09:00:00") ) | timestamp_custom("%j") | int) }}
          days_calc_end: >
            {{ ((((states('input_number.bk_anschaffungskosten') | float(0) -
            (((states('sensor.hoymile1500pv1_yieldtotal') | float(0) + states('input_number.strom_solar_offset') | float(0) ) / 1000) * states('input_number.stromkosten_kwh') | float(0))) | round(2)) /
            (((states('sensor.hoymile1500pv1_yieldtotal') | float(0) + states('input_number.strom_solar_offset') | float(0) ) / 1000) / ((as_timestamp(now()) - as_timestamp("2024-05-19 09:00:00") ) | timestamp_custom("%j") | int)))
            | round(0))    
            }}
          total_wh: >
            {{ (states('sensor.hoymile1500pv1_yieldtotal') | float(0) + states('input_number.strom_solar_offset') | float(0)) | round(0) }}
          total_kwh: >
            {{ ((states('sensor.hoymile1500pv1_yieldtotal') | float(0) + states('input_number.strom_solar_offset') | float(0)) /1000) | round(4) }}

meine input Helfer verlieren auch immer wieder den Mode : box und springen auf slider zurück.
Über jegliche Hilfe wäre ich sehr dankbar.

lg

:crayon:by HarryP: Codezeilen formatiert (bitte immer in </> einbinden)

Das wird wohl die MwSt. sein, die dazu addiert wird.

Habe es übernommen so und angepasst und hatte den Ersteller gefragt zur Erläuterung aber nichts erfahren bis jetzt

sensor.solar_gesamt_energie = erzeugte Energie von PV in Wh
input_number.strom_solar_offset = Offset z.b. beim tauschen des Zählers (alter Zählerstand) in Wh
input_number.strom_kosten_je_kw_h = kW/h Preis Netto in EUR mit 4 Nachkommastellen
1.19 = MwSt. (also die 19%)
input_number.bk_anschaffungskosten = Anschaffungskosten Brutto in EUR mit 2 Nachommastellen

days_from_start = Berechnung der Tage nach Inbetriebnahme
days_calc_end = Berechnung der Tage bis ±0 der Anschaffungskosten

Warum kWh und Wh? Hat den Hintergrund, daß ich die in anderen Templates weiter nutze und dort die Umrechnung nicht noch einmal einbauen wollte. In der Visu lass ich aber z.B. nur kWh darstellen.

1 „Gefällt mir“

und wie stellst du die tage dar?

Kannst du machen wie du willst…

Hab es so gelöst:

1 „Gefällt mir“

Könstest du mir dazu mal den code senden bitte?

Bei mir sieht das so aus:

Bildschirmfoto 2024-06-05 um 14.49.06

Aber das sind 21 Sensoren. Kommt auch ein wenig darauf an was dein WR für Sensoren bietet.

Ich berücksichtige auch wenn sich der Netzbezug ändert (was bei mir jährlich passiert). Es werden dann die alten Daten gespeichert, keiner komplette history nur der letzte Stand.

Aktuell muss ich das leider immer am Jahresende selber eintragen, ich habe noch keine Möglichkeit gefunden, wie man ein sensor per Automation schreiben kann das er auch permanent gespeichert wird. Ich kann zwar mit set_state das Attribute ändern aber nach’m Neustart wird das zurückgesetzt.

Wenn der WR mal ausgetauscht werden muss, wird es eh interessant mit den Zahlen :wink:

1 „Gefällt mir“

Kannst du mir den Code trotzdem mal als pn senden ich bastel es mir zurecht habe einen hoymile hs 1500

Sensoren Deutsch/Englisch/Denglisch war bisher zu faul das zu korrigieren. Historisch gewachsen :wink:

Da wo die Input Number stehen sind die 2 Zahlen wenn sich der Netzbezug Preis ändert um den letzten Stand zu speichern. Da kannst auch einfach deine Zahlen reinschreiben. Ich mach’s über eine Automatisierung

sensor:
  - name: PV Eigenverbrauch Wh
    state: >
      {{ states('sensor.solarnet_energy_total') | float(default=0) 
      - states('sensor.smart_meter_63a_energy_real_produced') | float(default=0)  }}
    unit_of_measurement: "Wh"
    device_class: energy

  - name: PV Eigenverbrauch kWH
    state: >
      {{ states('sensor.pv_eigenverbrauch_wh') | float(default=1000) / 1000 }}
    unit_of_measurement: "kWH"
    device_class: energy

  - name: PV Eigenverbrauch kWH Last
    state: >
      {{states('input_number.pv_eigenverbrauch_kwh_last')}}
    state_class: total
    unit_of_measurement: "kWH"
    device_class: energy

  - name: PV Eigenverbrauch kWH Current
    state: >
      {{ states('sensor.pv_eigenverbrauch_kwh') | float - states('sensor.pv_eigenverbrauch_kwh_last') | float }}
    unit_of_measurement: "kWH"
    device_class: energy

  - name: PV Eigenverbrauch Compensation Last
    state: >
      {{states('input_number.pv_eigenverbrauch_compensation_last')}}
    unit_of_measurement: "€"
    state_class: total

  - name: PV Eigenverbrauch Compensation
    state: >
      {{ (states('sensor.pv_eigenverbrauch_kwh_current') | float(default=0)*(states('sensor.solarnet_grid_import_tariff') | float(default=0) - states('sensor.solarnet_grid_export_tariff') | float(default=0)) + states('sensor.pv_eigenverbrauch_compensation_last')| float(default=0))|round(2)}}
    unit_of_measurement: "€"
    state_class: total

  - name: PV Einspeisung Compensation
    state: >
      {{ ((states('sensor.smart_meter_63a_energy_real_produced') | float(default=1000) / 1000) * states('sensor.solarnet_grid_export_tariff') | float(default=0)) | round(2) }}
    unit_of_measurement: "€"
    state_class: total
  - name: PV Ertrag
    state: >
      {{ (states('sensor.pv_einspeisung_compensation') |float(default=0)+ states('sensor.pv_eigenverbrauch_compensation') |float(default=0))| round(2) }}
    unit_of_measurement: "€"
    state_class: total

  - name: "PV Betriebsdatum"
    unit_of_measurement: "timestamp"
    state: >
      {{ as_timestamp("2020-06-23 10:00:00") }}

  - name: "PV Betriebsdatum Date"
    state: >
      {{ as_datetime(states('sensor.pv_betriebsdatum')) }}

  - name: "PV Laufzeit Tage"
    unit_of_measurement: "d"
    state: >
      {{ (((as_timestamp(now()) - states('sensor.pv_betriebsdatum') | int ) ) / 86400) | round }}

  - name: "PV Laufzeit Jahre"
    unit_of_measurement: "y"
    state: >
      {{ (states('sensor.pv_laufzeit_tage') | int / 365 )| round }}

  - name: PV Anschaffungskosten
    unit_of_measurement: "€"
    state_class: total
    state: 10500

  - name: PV Reperatur
    unit_of_measurement: "€"
    state_class: total
    state: 0

  - name: PV Versicherung
    unit_of_measurement: "€"
    state_class: total
    state: >
      {{ (4.80 * states('sensor.pv_laufzeit_jahre') | int )  | round(2) }}

  - name: PV Kosten
    unit_of_measurement: "€"
    state_class: total
    state: >
      {{ (states('sensor.pv_anschaffungskosten') | float + states('sensor.pv_reperatur') | float + states('sensor.pv_versicherung') | float )  | round(2) }}

  - name: "PV Amortisierung Tage"
    unit_of_measurement: "d"
    state: >
      {{ (states('sensor.pv_kosten') | float(default=0) / (states('sensor.pv_ertrag') | float(default=1) / states('sensor.pv_laufzeit_tage') | int)) | round }}
  - name: "PV Amortisierung Jahre"
    unit_of_measurement: "y"
    state: >
      {{ (states('sensor.pv_amortisierung_tage') | int / 365) | round(2)}}
  - name: "PV Amortisierung Verbleibend Tage"
    unit_of_measurement: "d"
    state: >
      {{ states('sensor.pv_amortisierung_tage')| int - states('sensor.pv_laufzeit_tage') | int}}
  - name: "PV Amortisierung Timestamp"
    unit_of_measurement: "timestamp"
    state: >
      {{ as_timestamp(now()) + (states('sensor.pv_amortisierung_verbleibend_tage') | int * 24 * 3600) }}
  - name: "PV Amortisierung Enddatum"
    state: >
      {{ as_datetime(states('sensor.pv_amortisierung_timestamp')) }}

EDIT: Gestaltung steht die Welt offen. Ich habe einfach jeden Sensor den ich will in eine Expander Card mit dieser Karte genommen
https://github.com/benct/lovelace-multiple-entity-row
Da kannst einfach jeden sensor oben anzeigen wie du willst

1 „Gefällt mir“

danke kann ich mal testen. die ganzen entitäten wie pv laufzeit etc wie hats du diese realisiert?

Ich verstehe die Frage nicht. Sind doch Sensoren für alles da Datum, Tage usw.
Jeder Eintrag in der Karte ist ein Sensor.

Fang mal und poste dann dein vorhanden Code ist vielleicht einfacher zu helfen als ins Blaue rein zu raten :wink: