Firmware-Update - 4.8 - Insider Preview 7 - jetzt verfügbar

• Nachkommastellen einstellbar für VISU Wetter-Widget.
• Logik-Editor: Umrechnungen (×/÷ 10, 100, 1.000, 1.000.000) per Klick.
• KNX: Unterstützung für neue Geräte‑Applikation.
• VISU: Wochentage im Wetter‑Widget aktualisieren nun automatisch über Nacht.
• MQTT/REST: Zusätzliche Zeichen in Selektoren für JSON
• Logik: Datentyp‑Konvertierungen, Anpassungen für Trigger-Datentypen, Hinweis bei externen Änderungen an Verknüpfungen und weitere Logiken zur Farbumwandlung

Mehr Infos im Wiki https://elabnet.atlassian.net/wiki/x/PIAD4

[TIPP] [V4.8 IP7] Photovoltaik ROI-Prognose (Return on Investment)

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
ho5enth1en
Beiträge: 24
Registriert: So Jul 02, 2023 10:23 pm
Wohnort: Göllheim
Hat sich bedankt: 21 Mal
Danksagung erhalten: 33 Mal

[V4.8 IP7] Photovoltaik ROI-Prognose (Return on Investment)

#1

Beitrag von ho5enth1en »

Hi,
heute Nacht ist mir gerade mal so eine Idee gekommen, welche ich mittels Kanon in einer halben Stunde umgesetzt habe.

Die Logik errechnet in der Version 2.0 auf folgenden Daten: (Version 1.5 zieht den Eigenverbrauch aus dem WR oder anderer Logik, wenn ihr den braucht mich bitte kontaktieren, wird aber nicht weiterentwickelt)
- Datum der Inbetriebnahme (im Format dd.mm.jjjj)
- Erzeugte AC-Energiemenge in kWh (lese ich bei mir aus dem Wechselrichter aus)
- Netzeinspeisung in kWh (am Haus-Einspeisezähler ausgelesen)
- Einspeisevergütung (€/kWh)
- Strombezugspreis (€/kWh)
- Anschaffungskosten (Gesamtpreis der Anschaffung inkl. allem in €)

den aktuellen Grad der Amortisierung, Das voraussichtliche Datum der Aktualisierung und der errechnete Eigenverbrauch.


der Kanon hat mir noch einen weiteren Tip gegeben, welchen ich eventuell in der nächsten Version einbauen werde.
Berücksichtigen Sie bei dieser linearen Prognose bereits die Degradation der PV-Module (ca. 0,5% p.a.) und 
die potenziellen Wartungskosten (Regel 1.126 Kontext), oder ist für die Steuerung Ihres 
virtuellen Kraftwerks (VPP) die rein ertragsbasierte Momentan-Prognose 
als Orientierungswert ausreichend?
keiner Nachtrag:
Die ROI-Formel nutzt nun die physikalisch gemittelte Jahreslänge (
31.556.952  Sekunden), um Schalttage über lange Zeiträume (ROI > 10 Jahre) besser abzubilden.
Bild

Code: Alles auswählen

// ==========================================================================
// TITEL: Photovoltaik ROI Prognose Version 2.0
// VERSION: 2.00 (2026-03-30)
// AUTOR: AI-Chirurg (Kanon V8.01.01)
// BESCHREIBUNG: ROI-Prognose (Return on Investment / Datum der Amortisierung, 
//               aktueller Eigenverbrauch, Amortisierungsgrad)
// HÄRTUNG: Interne Bilanzierung (Gen-Feed), 11-Feld Localtime, Regel 1.101.
// TRIGGERSYSTEM: Senden alle 6h (21600s) oder bei Wertänderung.
// ==========================================================================

{
  "_Meta": {
    "Name": "Photovoltaik ROI Prognose Version 2.0",
    "Description": "ROI-Prognose (Return on Investment / Datum der Amortisierung, aktueller Eigenverbrauch, Amortisierungsgrad)",
    "Version": "2.00",
    "Author": "AI-Chirurg",
    "Kanon_Version": "V8.01.01"
  },
  "Input": [
    [ "Inbetriebnahme [TT.MM.JJJJ]", "Startdatum der Anlage", "$I_Start_Date", "c" ],
    [ "Erzeugte PV Menge [kWh]", "Kumulierter Zählerstand Erzeugung", "$I_Gen_kWh", "c" ],
    [ "Einspeisung [kWh]", "Kumulierter Zählerstand Einspeisung", "$I_Feed_kWh", "c" ],
    [ "Vergütung [€/kWh]", "Einspeisevergütung", "$I_Feed_Tariff", "u" ],
    [ "Bezugspreis [€/kWh]", "Strompreis Bezug", "$I_Grid_Price", "u" ],
    [ "Anschaffungskosten [€]", "Gesamtinvestition", "$I_Cost_EUR", "u" ]
  ],
  "Output": [
    [ "Amortisationsdatum", "Prognostiziertes Datum", "$O_ROI_Date", "t" ],
    [ "Eigenverbrauch [kWh]", "Berechneter Eigenverbrauch", "$O_Self_kWh", "c" ],
    [ "Amortisation [%]", "Finanzieller Deckungsgrad", "$O_ROI_Percent", "t" ],
    [ "Status-Code", "Diagnose (10=OK, 110=HB)", "$O_Status", "c" ]
  ],
  "Level": [
    // --- I/O Variablen ---
    [ "$I_Start_Date", "string,16", "01.01.2024" ],
    [ "$I_Gen_kWh", "float", 0.0 ], [ "$I_Feed_kWh", "float", 0.0 ],
    [ "$I_Feed_Tariff", "float", 0.082 ], [ "$I_Grid_Price", "float", 0.30 ],
    [ "$I_Cost_EUR", "float", 15000.0 ],
    [ "$O_ROI_Date", "string,16", "" ], [ "$O_Self_kWh", "float", 0.0 ],
    [ "$O_ROI_Percent", "float", 0.0 ], [ "$O_Status", "int", 0 ],

    // --- Logik Variablen ---
    [ "$Lgc_Day_S", "string,4", "" ], [ "$Lgc_Month_S", "string,4", "" ], [ "$Lgc_Year_S", "string,8", "" ],
    [ "$Lgc_Day_F", "float", 0.0 ], [ "$Lgc_Month_F", "float", 0.0 ], [ "$Lgc_Year_F", "float", 0.0 ],
    [ "$Lgc_Now_Unix", "int", 0 ], [ "$Lgc_Start_Unix_F", "float", 0.0 ],
    [ "$Lgc_ROI_Ts_F", "float", 0.0 ], [ "$Lgc_ROI_Ts_I", "int", 0 ],
    [ "$Lgc_Earnings_EUR", "float", 0.0 ], [ "$Lgc_Heartbeat", "bool", false ],
    [ "$Lgc_ROI_D", "int", 0 ], [ "$Lgc_ROI_M", "int", 0 ], [ "$Lgc_ROI_Y", "int", 0 ],
    [ "$S_ROI_D", "string,4", "" ], [ "$S_ROI_M", "string,4", "" ], [ "$S_ROI_Y", "string,8", "" ],

    // --- Formeln (Regel 1.101) ---
    [ "$F_Regex", "string", "^([0-3][0-9])\\.([0-1][0-9])\\.([0-2][0-9][0-9][0-9])$" ],
    [ "$F_Self_kWh", "string", "X1 - X2" ], // Erzeugung - Einspeisung
    [ "$F_Earnings", "string", "(X1 * X2) + (X3 * X4)" ], // (Self * Price) + (Feed * Tariff)
    [ "$F_ROI_Perc", "string", "(X1 / (X2 > 0 ? X2 : 1)) * 100.0" ],
    [ "$F_Start_Unix", "string", "((X3-1970)*31556952) + ((X2-1)*2629746) + ((X1-1)*86400)" ],
    [ "$F_ROI_Ts", "string", "X4 > 0.01 ? (X1 + (X2 / X4 - 1.0) * (X1 - X3)) : 0" ],

    // --- Konstanten ---
    [ "$K_0", "int", 0 ], [ "$K_10", "int", 10 ], [ "$K_100", "int", 100 ],
    [ "$K_1_F", "float", 1.0 ], [ "$K_6h_S", "float", 21600.0 ],
    [ "$S_Dot", "string", "." ], [ "$F_Fmt_2d", "string", "%02d" ], [ "$F_Fmt_4d", "string", "%04d" ],
    [ "$Konst_True", "bool", true ], [ "$Konst_False", "bool", false ]
  ],
  "Module": [
    // 1. Herzschlag (6h)
    [ "Clocksignal", "$Konst_True", "$Lgc_Heartbeat", "$K_6h_S" ],

    // 2. Datumsparsing
    [ "Regex", "$I_Start_Date", "$F_Regex", "$Konst_False", 0, "$Lgc_Day_S", "$Lgc_Month_S", "$Lgc_Year_S", 0, 0 ],
    [ "STR->FLOAT", "$Lgc_Day_S", "$Lgc_Day_F" ],
    [ "STR->FLOAT", "$Lgc_Month_S", "$Lgc_Month_F" ],
    [ "STR->FLOAT", "$Lgc_Year_S", "$Lgc_Year_F" ],

    // 3. Zeitbasis (11 Parameter)
    [ "Localtime", 0, "$Lgc_Now_Unix", 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
    [ "CalcFormula", ["$Lgc_Day_F", "$Lgc_Month_F", "$Lgc_Year_F"], "$Lgc_Start_Unix_F", "$F_Start_Unix" ],

    // 4. Bilanzierung (Eigenverbrauch berechnen)
    [ "CalcFormula", ["$I_Gen_kWh", "$I_Feed_kWh"], "$O_Self_kWh", "$F_Self_kWh" ],

    // 5. Wirtschaftliche Berechnung
    [ "CalcFormula", ["$O_Self_kWh", "$I_Grid_Price", "$I_Feed_kWh", "$I_Feed_Tariff"], "$Lgc_Earnings_EUR", "$F_Earnings" ],
    [ "CalcFormula", ["$Lgc_Earnings_EUR", "$I_Cost_EUR"], "$O_ROI_Percent", "$F_ROI_Perc" ],

    // 6. ROI-Timestamp Prognose
    [ "CalcFormula", ["$Lgc_Now_Unix", "$I_Cost_EUR", "$Lgc_Start_Unix_F", "$Lgc_Earnings_EUR"], "$Lgc_ROI_Ts_F", "$F_ROI_Ts" ],
    [ "Polynomial", "$Lgc_ROI_Ts_F", "$Lgc_ROI_Ts_I", ["$K_0", "$K_1_F"] ],

    // 7. Rückwandlung ROI-Unix (11 Parameter)
    [ "Localtime", "$Lgc_ROI_Ts_I", 0, 0, 0, 0, "$Lgc_ROI_D", "$Lgc_ROI_M", "$Lgc_ROI_Y", 0, 0, 0 ],

    // 8. String-Generierung
    [ "Printf", "$Lgc_ROI_D", "$F_Fmt_2d", "$S_ROI_D" ],
    [ "Printf", "$Lgc_ROI_M", "$F_Fmt_2d", "$S_ROI_M" ],
    [ "Printf", "$Lgc_ROI_Y", "$F_Fmt_4d", "$S_ROI_Y" ],
    [ "Concat", ["$S_ROI_D", "$S_Dot", "$S_ROI_M", "$S_Dot", "$S_ROI_Y"], "$O_ROI_Date" ],

    // 9. Status-Codierung
    [ "Polynomial", "$Lgc_Heartbeat", "$O_Status", ["$K_10", "$K_100"] ]
  ]
}

/**Der Schöpfer dieser Custom Logik hat diese mittels KI (Kanon) erstellt und überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.*/

Zuletzt geändert von ho5enth1en am Mo Mär 30, 2026 11:16 pm, insgesamt 6-mal geändert.
TimberWolf #1192 3500XL VPN auf Anfrage, Reboot nach Rücksprache

Ein Leben ohne Timberwolf ist grundsätzlich möglich,
... aber sinnlos!

gbglace
Beiträge: 4327
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1528 Mal
Danksagung erhalten: 2075 Mal

#2

Beitrag von gbglace »

Sehr guter Ansatz.
Ein paar Fragen zum Design bevor ich mir das genauer durchlese im Code.

Werden die bisher erreichten Erträge vor jedem Durchlauf fixiert, so dass man die €/kWh dynamisch erfassen lassen könnte? Oder wird immer der Gesamtbestand erzeugter kWh mit dem gerade anliegenden Betrag multipliziert? Da man ja zukünftig eher dynamische Preise beim Einkauf und Verkauf hat wäre das noch eine spannende Erweiterung

Wie werden die PV-Erträge basierend auf der Historie in die Zukunft geschrieben? Ist das dann kumulierter Ertrag bisher geteilt durch Laufzeit = erwarteter durchschnittlicher Ertrag je Tag für die Zukunft? Und dann gerechnet wie viele Tage braucht es noch bis +/-0.
Oder eher so ein rollender Durchschnitt der letzten x Monate auf die Zukunft projiziert? das würde dann auch eine gewisse Degradation / Verunreinigung usw. auch berücksichtigen. Und Ebenso ggf. Anlagenerweiterungen könnten sich so sukzessiv von allein mit einrechnen.
Grüße Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU

blaubaerli
Beiträge: 2774
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 1065 Mal
Danksagung erhalten: 845 Mal

#3

Beitrag von blaubaerli »

Hallo zusammen,

bitte auch hier die Versionangaben hinzufügen.

Danke :handgestures-salute:

Beste Grüße
Jens
timberwolf168(2600er)VPN offenReboot nach Vereinbarung
timberwolf1699(3500XL)VPN offenReboot jederzeit
wiregate1250
Bitte WIKI lesen.

blaubaerli
Beiträge: 2774
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 1065 Mal
Danksagung erhalten: 845 Mal

#4

Beitrag von blaubaerli »

Hi Torsten (@ho5enth1en ),

kürze bitte den Betreff ein wenig ein. Dann kannst du die Versionangabe auch einfügen. Das dürfte aktuell "nur" an der Längenbeschränkung liegen.

Danke. :handgestures-salute:

Beste Grüße
Jens
timberwolf168(2600er)VPN offenReboot nach Vereinbarung
timberwolf1699(3500XL)VPN offenReboot jederzeit
wiregate1250
Bitte WIKI lesen.

Ersteller
ho5enth1en
Beiträge: 24
Registriert: So Jul 02, 2023 10:23 pm
Wohnort: Göllheim
Hat sich bedankt: 21 Mal
Danksagung erhalten: 33 Mal

#5

Beitrag von ho5enth1en »

Hi, ich schreibe mal dazwischen

Werden die bisher erreichten Erträge vor jedem Durchlauf fixiert, so dass man die €/kWh dynamisch erfassen lassen könnte? Oder wird immer der Gesamtbestand erzeugter kWh mit dem gerade anliegenden Betrag multipliziert? -

Ja, eine Überlegung wäre noch maximal 3 Preisänderungen im Bezugspreis einzubeziehen mit Datum und einem Korrekturwert welcher bei Änderung vom Bezugspreis aber auch manuell einzutagen ist. (Stromvertragänderung)


Da man ja zukünftig eher dynamische Preise beim Einkauf und Verkauf hat wäre das noch eine spannende Erweiterung
Da gebe ich dir recht, aber ich denke hier maximal eine Logik welche den aktuellen Tarif erfasst alles an eine TS gesendet wird. Die Auswertung erfolgt dann über Grafana. Ein aufsummieren aller dynamischen Werte in einer Logik wird zu viel des Guten. Eine Datensicherheit ist nicht gegeben und die Stabilität wird sicher gefährdet sein.


Wie werden die PV-Erträge basierend auf der Historie in die Zukunft geschrieben? Ist das dann kumulierter Ertrag bisher geteilt durch Laufzeit = erwarteter durchschnittlicher Ertrag je Tag für die Zukunft? Und dann gerechnet wie viele Tage braucht es noch bis +/-0.
Oder eher so ein rollender Durchschnitt der letzten x Monate auf die Zukunft projiziert? das würde dann auch eine gewisse Degradation / Verunreinigung usw. auch berücksichtigen. Und Ebenso ggf. Anlagenerweiterungen könnten sich so sukzessiv von allein mit einrechnen.


Lineare Projektion: Basierend auf den kumulierten Erträgen (Eigenverbrauch & Einspeisung) ermittelt sie die „Earnings per Second“ seit Inbetriebnahme und projiziert diese auf die Restkosten, um den exakten Amortisations-Zeitpunkt in der Zukunft zu bestimmen.


[/quote]
TimberWolf #1192 3500XL VPN auf Anfrage, Reboot nach Rücksprache

Ein Leben ohne Timberwolf ist grundsätzlich möglich,
... aber sinnlos!

Ersteller
ho5enth1en
Beiträge: 24
Registriert: So Jul 02, 2023 10:23 pm
Wohnort: Göllheim
Hat sich bedankt: 21 Mal
Danksagung erhalten: 33 Mal

#6

Beitrag von ho5enth1en »

Vorschau

es ging schneller wie gedacht, ein Abendessen und 3 Bier nach der V2 habe ich die V3.3 "Kanon"enkugelschnell am Start :dance:
Aktuell im Testlauf, Beschreibung und Code folgen.

@blaubaerli habe es geändert - danke

Bild

:handgestures-salute: Torsten
Zuletzt geändert von ho5enth1en am Mo Mär 30, 2026 11:29 pm, insgesamt 2-mal geändert.
TimberWolf #1192 3500XL VPN auf Anfrage, Reboot nach Rücksprache

Ein Leben ohne Timberwolf ist grundsätzlich möglich,
... aber sinnlos!

Ersteller
ho5enth1en
Beiträge: 24
Registriert: So Jul 02, 2023 10:23 pm
Wohnort: Göllheim
Hat sich bedankt: 21 Mal
Danksagung erhalten: 33 Mal

#7

Beitrag von ho5enth1en »

BEDIENUNGSANLEITUNG: Photovoltaik ROI Prognose V3.3 (erstellt durch KI)

1. Was macht diese Logik? (Funktionsbeschreibung)
Die Version 3.3 ist das wirtschaftliche Gehirn deiner PV-Anlage im Timberwolf Server. Sie berechnet nicht nur, wann sich deine Anlage bezahlt macht (Return on Investment), sondern führt eine vollständige energetische Forensik durch.

Die Highlights:
  • Ehrliche ROI-Prognose: Berücksichtigt die Degradation (Leistungsverlust der Module), damit das Zieldatum realistisch bleibt.
  • Netto-Speicher-Vorteil: Berechnet, wie viel Geld der Akku wirklich spart (unter Abzug der entgangenen Einspeisevergütung).
  • Autarkie-Analyse: Trennung zwischen deinem Langzeit-Trend und der Leistung am heutigen Tag.
2. Vorbereitung der Daten
Damit die Logik präzise arbeiten kann, benötigt sie deine Zählerstände als kumulierte Werte (immer fortlaufend steigende Zähler) in der Einheit kWh.

3. Die Eingänge (Inputs) – Was du anschließen musst
Verknüpfe im Logik-Editor die folgenden 13 Werte:
Grunddaten & Kosten:
  • Inbetriebnahme: Startdatum im Format TT.MM.JJJJ (z. B. 15.05.2023).
  • Anschaffungskosten: Was hat die Anlage inklusive Speicher in Euro (€) gekostet?
  • Degradation: Der jährliche Leistungsverlust in % (Daten bitte dem Herstellerdatenblatt entnehmen, Standardwert meist 0.5).
Zählerstände (kumuliert seit Start in kWh):
  • Erzeugte PV Gesamt: Alles, was deine Wechselrichter produziert haben.
  • Einspeisung Gesamt: Alles, was du ins Netz eingespeist hast.
  • Netzbezug Gesamt: Alles, was du vom Versorger gekauft hast.
  • Speicher Laden: Energie, die in den Akku floss.
  • Speicher Entladen: Energie, die aus dem Akku entnommen wurde.
Aktuelle Tageswerte (in kWh):
  • Erzeugung Heute / Einspeisung Heute / Netzbezug Heute: Diese Werte liefern dir die heutige Performance.
Wirtschaftliche Parameter:
  • Vergütung: Dein Einspeisetarif in €/kWh (z. B. 0.082).
  • Bezugspreis: Dein aktueller Strompreis in €/kWh (z. B. 0.30).
4. Die Ausgänge (Outputs) – Deine Ergebnisse
  • Amortisationsdatum: Das berechnete Datum der Kostendeckung.
  • Amortisation [%]: Dein finanzieller Fortschrittsbalken.
  • Eigenverbrauch Gesamt: Wie viele kWh du seit Start selbst verbraucht hast.
  • Gesamtautarkie [%]: Deine Unabhängigkeit über die gesamte Laufzeit.
  • Tagesautarkie [%]: Wie autark du am heutigen Kalendertag bist.
  • Speicher Wirkungsgrad [%]: Die technische Effizienz deines Akkus.
  • Speicher Ersparnis [€]: Der reine Euro-Vorteil durch den Akku.
    Status-Code: Ein Diagnosewert (siehe Punkt 6).
5. Das Rechenmodell (Speicher-Vorteil & Degradation)
  • Ehrliche Bilanz: Wenn du Strom in den Akku lädst, „verlierst“ du die Einspeisevergütung. Die Logik zieht diese Kosten vom Vorteil des Eigenverbrauchs ab. Nur der Rest ist dein echter Gewinn durch den Speicher.
  • Alterung: Die Logik rechnet damit, dass die Erträge in der Zukunft minimal sinken (Degradation). Je länger die Amortisation dauert, desto stärker wird dieser Effekt eingepreist.
6. Fehlersuche (Status-Codes)
  • 10: Alles okay. Die Logik arbeitet fehlerfrei.
    110: Heartbeat. Alle 6 Stunden sendet die Logik ein Update.
  • 910: Physik-Alarm! Einspeisung > Erzeugung. Zählerstände prüfen!
7. Tipps für die Visualisierung
  • Das Amortisationsdatum zeigst du am besten in einem Text-Widget an.
  • Die Amortisation [%] und Autarkie sehen als Tacho-Anzeige (Gauge) super aus.
  • Den Status-Code solltest du in Grafana aufzeichnen (Einstellung: Step-After).

Code: Alles auswählen

// ==========================================================================
// TITEL: Photovoltaik ROI Prognose Version 3.3
// VERSION: 3.30 (2026-03-30)
// AUTOR: AI-Chirurg (Kanon V8.01.02)
// BESCHREIBUNG: ROI-Prognose inkl. Degradation (%), Tagesautarkie, 
//               Speicher-Netto-Ersparnis und volumetrischer Forensik.
// HÄRTUNG: Degradations-Korrektur, Localtime-Signatur (1.218), AKP-Check.
// TRIGGERSYSTEM: Senden alle 6h (21600s) oder bei Wertänderung.
// ==========================================================================

{
  "_Meta": {
    "Name": "Photovoltaik ROI Prognose Version 3.3",
    "Description": "ROI-Prognose mit Degradations-Korrektur und High-End Bilanzierung.",
    "Version": "3.30",
    "Author": "AI-Chirurg",
    "Kanon_Version": "V8.01.02"
  },
  "Input": [
    [ "Inbetriebnahme [TT.MM.JJJJ]", "Startdatum der Anlage", "$I_Start_Date", "c" ],
    [ "Erzeugte PV Gesamt [kWh]", "Zählerstand PV AC-Erzeugung", "$I_Gen_Total", "c" ],
    [ "Einspeisung Gesamt [kWh]", "Zählerstand Einspeisung", "$I_Feed_Total", "c" ],
    [ "Netzbezug Gesamt [kWh]", "Zählerstand Bezug", "$I_Grid_Total", "c" ],
    [ "Speicher Laden [kWh]", "Zählerstand Batterie Laden", "$I_Bat_In", "c" ],
    [ "Speicher Entladen [kWh]", "Zählerstand Batterie Entladen", "$I_Bat_Out", "c" ],
    [ "Erzeugung Heute [kWh]", "PV-Ertrag heute", "$I_Gen_Today", "c" ],
    [ "Einspeisung Heute [kWh]", "Einspeisung heute", "$I_Feed_Today", "c" ],
    [ "Netzbezug Heute [kWh]", "Bezug heute", "$I_Grid_Today", "c" ],
    [ "Vergütung [€/kWh]", "Einspeisetarif", "$I_Tariff_Feed", "u" ],
    [ "Bezugspreis [€/kWh]", "Strompreis", "$I_Tariff_Grid", "u" ],
    [ "Anschaffungskosten [€]", "Investitionssumme", "$I_Cost_EUR", "u" ],
    [ "Degradation [% p.a.]", "Leistungsverlust pro Jahr (z.B. 0.5)", "$I_Degr_pA", "u" ]
  ],
  "Output": [
    [ "Amortisationsdatum", "Datum inkl. Degradation", "$O_ROI_Date", "t" ],
    [ "Amortisation [%]", "Finanzieller Deckungsgrad", "$O_ROI_Percent", "t" ],
    [ "Gesamtautarkie [%]", "Autarkie seit Inbetriebnahme", "$O_Aut_Total_Pct", "t" ],
    [ "Tagesautarkie [%]", "Autarkie des heutigen Tages", "$O_Aut_Today_Pct", "t" ],
    [ "Speicher Wirkungsgrad [%]", "Batterie Round-Trip-Efficiency", "$O_Bat_Eff_Pct", "t" ],
    [ "Speicher Ersparnis [€]", "Netto-Vorteil durch Akku", "$O_Bat_Savings_EUR", "c" ],
    [ "Status-Code", "Diagnose (10=OK, 910=Physik-Fehler)", "$O_Status", "c" ]
  ],
  "Level": [
    // --- I/O Variablen ---
    [ "$I_Start_Date", "string,16", "01.01.2024" ], [ "$I_Gen_Total", "float", 0.0 ], [ "$I_Feed_Total", "float", 0.0 ],
    [ "$I_Grid_Total", "float", 0.0 ], [ "$I_Bat_In", "float", 0.0 ], [ "$I_Bat_Out", "float", 0.0 ],
    [ "$I_Gen_Today", "float", 0.0 ], [ "$I_Feed_Today", "float", 0.0 ], [ "$I_Grid_Today", "float", 0.0 ],
    [ "$I_Tariff_Feed", "float", 0.082 ], [ "$I_Tariff_Grid", "float", 0.30 ], [ "$I_Cost_EUR", "float", 15000.0 ],
    [ "$I_Degr_pA", "float", 0.5 ], [ "$O_ROI_Date", "string,16", "" ], [ "$O_ROI_Percent", "float", 0.0 ],
    [ "$O_Aut_Total_Pct", "float", 0.0 ], [ "$O_Aut_Today_Pct", "float", 0.0 ], [ "$O_Bat_Eff_Pct", "float", 0.0 ],
    [ "$O_Bat_Savings_EUR", "float", 0.0 ], [ "$O_Status", "int", 0 ],

    // --- Logik Variablen ---
    [ "$Lgc_Now_Unix", "int", 0 ], [ "$Lgc_Start_Unix", "float", 0.0 ], [ "$Lgc_ROI_Ts_F", "float", 0.0 ], 
    [ "$Lgc_ROI_Ts_I", "int", 0 ], [ "$Lgc_Earnings_Total", "float", 0.0 ], [ "$Lgc_Heartbeat", "bool", false ],
    [ "$Lgc_Physik_Alarm", "bool", false ], [ "$Lgc_Self_Total", "float", 0.0 ], [ "$Lgc_Status_F", "float", 0.0 ],
    [ "$Lgc_ROI_D", "int", 0 ], [ "$Lgc_ROI_M", "int", 0 ], [ "$Lgc_ROI_Y", "int", 0 ], [ "$Lgc_Dummy", "int", 0 ],
    [ "$S_ROI_D", "string,4", "" ], [ "$S_ROI_M", "string,4", "" ], [ "$S_ROI_Y", "string,8", "" ],
    [ "$Lgc_Day_S", "string,4", "" ], [ "$Lgc_Month_S", "string,4", "" ], [ "$Lgc_Year_S", "string,8", "" ],
    [ "$Lgc_Day_F", "float", 0.0 ], [ "$Lgc_Month_F", "float", 0.0 ], [ "$Lgc_Year_F", "float", 0.0 ],

    // --- Formeln (Regel 1.101 & 1.147 Substitution) ---
    [ "$F_Regex", "string", "^([0-3][0-9])\\.([0-1][0-9])\\.([0-2][0-9][0-9][0-9])$" ],
    [ "$F_Start_Unix", "string", "((X3-1970)*31556952) + ((X2-1)*2629746) + ((X1-1)*86400)" ],
    [ "$F_Self_Total", "string", "X1 >= X2 ? X1 - X2 : 0" ],
    [ "$F_Aut_Pct", "string", "(1.0 - (X1 / (X2 - X3 + X1 > 0.1 ? X2 - X3 + X1 : 1))) * 100.0" ],
    [ "$F_Bat_Eff", "string", "(X1 / (X2 > 0.1 ? X2 : 1)) * 100.0" ],
    [ "$F_Bat_Savings", "string", "(X1 * X2) - (X3 * X4)" ],
    [ "$F_Earnings_Total", "string", "(X1 * X2) + (X3 * X4)" ],
    [ "$F_ROI_Perc", "string", "(X1 / (X2 > 0 ? X2 : 1)) * 100.0" ],
    // ROI-Formel mit Degradations-Korrektur (X1:Now, X2:Cost, X3:Start, X4:Earnings, X5:Degr)
    [ "$F_ROI_Ts_Degr", "string", "X4 > 0.1 ? (X1 + ((X2 - X4) / (X4 / (X1 - X3))) * (1 + (((X2 - X4) / (X4 / (X1 - X3))) / 31556952 * X5 / 200))) : 0" ],
    [ "$F_Status", "string", "10 + (X1*100) + (X2*900)" ],

    // --- Konstanten ---
    [ "$K_0", "int", 0 ], [ "$K_10", "int", 10 ], [ "$K_1_F", "float", 1.0 ], [ "$K_6h_S", "float", 21600.0 ],
    [ "$S_Dot", "string", "." ], [ "$F_Fmt_2d", "string", "%02d" ], [ "$F_Fmt_4d", "string", "%04d" ],
    [ "$Konst_True", "bool", true ], [ "$Konst_False", "bool", false ]
  ],
  "Module": [
    // 1. Herzschlag (6h)
    [ "Clocksignal", "$Konst_True", "$Lgc_Heartbeat", "$K_6h_S" ],

    // 2. Datumsparsing (Inbetriebnahme)
    [ "Regex", "$I_Start_Date", "$F_Regex", "$Konst_False", 0, "$Lgc_Day_S", "$Lgc_Month_S", "$Lgc_Year_S", 0, 0 ],
    [ "STR->FLOAT", "$Lgc_Day_S", "$Lgc_Day_F" ],
    [ "STR->FLOAT", "$Lgc_Month_S", "$Lgc_Month_F" ],
    [ "STR->FLOAT", "$Lgc_Year_S", "$Lgc_Year_F" ],
    [ "CalcFormula", ["$Lgc_Day_F", "$Lgc_Month_F", "$Lgc_Year_F"], "$Lgc_Start_Unix", "$F_Start_Unix" ],

    // 3. Bilanzierung & Wirkungsgrade
    [ "CalcFormula", ["$I_Gen_Total", "$I_Feed_Total"], "$Lgc_Self_Total", "$F_Self_Total" ],
    [ "CalcFormula", ["$I_Grid_Total", "$I_Gen_Total", "$I_Feed_Total"], "$O_Aut_Total_Pct", "$F_Aut_Pct" ],
    [ "CalcFormula", ["$I_Grid_Today", "$I_Gen_Today", "$I_Feed_Today"], "$O_Aut_Today_Pct", "$F_Aut_Pct" ],
    [ "CalcFormula", ["$I_Bat_Out", "$I_Bat_In"], "$O_Bat_Eff_Pct", "$F_Bat_Eff" ],
    [ "CalcFormula", ["$I_Bat_Out", "$I_Tariff_Grid", "$I_Bat_In", "$I_Tariff_Feed"], "$O_Bat_Savings_EUR", "$F_Bat_Savings" ],

    // 4. ROI-Prognose inkl. Degradation
    [ "Localtime", 0, "$Lgc_Now_Unix", 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
    [ "CalcFormula", ["$Lgc_Self_Total", "$I_Tariff_Grid", "$I_Feed_Total", "$I_Tariff_Feed"], "$Lgc_Earnings_Total", "$F_Earnings_Total" ],
    [ "CalcFormula", ["$Lgc_Earnings_Total", "$I_Cost_EUR"], "$O_ROI_Percent", "$F_ROI_Perc" ],
    [ "CalcFormula", ["$Lgc_Now_Unix", "$I_Cost_EUR", "$Lgc_Start_Unix", "$Lgc_Earnings_Total", "$I_Degr_pA"], "$Lgc_ROI_Ts_F", "$F_ROI_Ts_Degr" ],
    [ "Polynomial", "$Lgc_ROI_Ts_F", "$Lgc_ROI_Ts_I", ["$K_0", "$K_1_F"] ],

    // 5. Rückwandlung ROI-Datum (11-Feld Signatur, Regel 1.218)
    [ "Localtime", "$Lgc_ROI_Ts_I", "$Lgc_Dummy", 0, 0, 0, "$Lgc_ROI_D", "$Lgc_ROI_M", "$Lgc_ROI_Y", 0, 0, 0 ],
    [ "Printf", "$Lgc_ROI_D", "$F_Fmt_2d", "$S_ROI_D" ],
    [ "Printf", "$Lgc_ROI_M", "$F_Fmt_2d", "$S_ROI_M" ],
    [ "Printf", "$Lgc_ROI_Y", "$F_Fmt_4d", "$S_ROI_Y" ],
    [ "Concat", ["$S_ROI_D", "$S_Dot", "$S_ROI_M", "$S_Dot", "$S_ROI_Y"], "$O_ROI_Date" ],

    // 6. Status & Forensik
    [ "Comparator", "$I_Feed_Total", "$Lgc_Physik_Alarm", "$I_Gen_Total" ], 
    [ "CalcFormula", ["$Lgc_Heartbeat", "$Lgc_Physik_Alarm"], "$Lgc_Status_F", "$F_Status" ],
    [ "Polynomial", "$Lgc_Status_F", "$O_Status", ["$K_0", "$K_1_F"] ]
  ]
}

/**Der Schöpfer dieser Custom Logik hat diese mittels KI (Kanon) erstellt und überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.*/

Bild
Zuletzt geändert von ho5enth1en am Mi Apr 01, 2026 9:26 pm, insgesamt 1-mal geändert.
TimberWolf #1192 3500XL VPN auf Anfrage, Reboot nach Rücksprache

Ein Leben ohne Timberwolf ist grundsätzlich möglich,
... aber sinnlos!

sfrit
Beiträge: 60
Registriert: Di Okt 31, 2023 8:29 pm
Hat sich bedankt: 12 Mal
Danksagung erhalten: 17 Mal

#8

Beitrag von sfrit »

Coole Sache, aber für eine ehrliche Betrachtung solltest du noch Verzinsung und Inflation der Investitionskosten mit betrachten.:)
timberwolf3500 XL #1509

Ersteller
ho5enth1en
Beiträge: 24
Registriert: So Jul 02, 2023 10:23 pm
Wohnort: Göllheim
Hat sich bedankt: 21 Mal
Danksagung erhalten: 33 Mal

#9

Beitrag von ho5enth1en »

sfrit hat geschrieben: Do Apr 02, 2026 11:28 am Coole Sache, aber für eine ehrliche Betrachtung solltest du noch Verzinsung und Inflation der Investitionskosten mit betrachten.:)
Könnte man, trifft bei mir aber nicht zu und war deshalb uninteressant. Wenn ich jetzt rechne was hätte ich woanders für die Investitionssumme bekommen..... Wo fängt man an und wo hört man auf?

Unter
Anschaffungskosten: Was hat die Anlage inklusive Speicher in Euro (€) gekostet?
trägst du einfach den Gesamtpreis inkl. Finanzierungskosten ein. Die Kosten inkl. Zinsen bis zum Finanzierungende sollten ja bekannt sein. Wenn keine Finanzierung dann lässt du es weg,
Eventuell sollte ich diese Parameterbeschreibung klarer definieren (lassen).
Was man machen könnte wäre ein "Zins-Ertrag auf EEG Laufzeit".


In der Logik habe ich absichtlich eventuelle Reparaturkosten und Wartungskosten NICHT berücksichtigt. Diese Kosten sind ein Blick in die Glaskugel. Wenn Kosten dieser Art anfallen, diese bitte immer manuell zu den Anschaffungskosten aufrechnen und in der Logik den Parameter entsprechend anpassen.

Was die Logik auch nicht kann: :liar: - Tarifmodelle wie zB von Enpal :roll:

Eine Strompreisänderung einzubauen habe ich für die nächste Version im Hinterkopf.
Zuletzt geändert von ho5enth1en am Do Apr 02, 2026 3:00 pm, insgesamt 3-mal geändert.
TimberWolf #1192 3500XL VPN auf Anfrage, Reboot nach Rücksprache

Ein Leben ohne Timberwolf ist grundsätzlich möglich,
... aber sinnlos!
Antworten

Zurück zu „Zusätzliche Logikbausteine“