Eine Art Netzdienliches Laden mit Victron Node Red Flow

Hallo,

Ich habe mithilfe von ChatGPT einen Flow erstellt der das Laden auf die Zeit verlegt mit hohem PV Ertrag. Also vorrangiges Laden zur Mittagszeit. Der Flow läuft bei mir zuverlässig und ich würde mich freuen wenn jemand mit testet.

in der Global Defaults muss die Site ID eingetragen werden und bei Solar_FC und Cons_FC muss der eigene Access Token für die VRM API eingetragen werden.

Hier eine kleine KI Zusammenfassung der Funktion

Was der Flow insgesamt macht

  • Alle 15 Min (06–21 Uhr) holt er vom Victron VRM:

    • die PV-Ertragsprognose (vrm_pv_inverter_yield_fc)

    • die Verbrauchsprognose (vrm_consumption_fc)

  • Speichert beide als strukturierte Arrays im global context (global.forecast.pv und global.forecast.consumption).

  • Liest Batteriewerte vom BMS (SoC, verfügbare Ah, Spannung) und hält sie in global.battery.

  • Analysiert die Prognosen (Summen/Fenster/Nettobilanz) in global.analysis.forecast.

  • Berechnet daraus einen Ladeplan (“Charge Planner”) und setzt laufend das DVCC-Ladestromlimit auf dem Venus OS:

    • Service/Path: com.victronenergy.settings /Settings/SystemSetup/MaxChargeCurrent.

Zentrale Idee des Ladeplans

  • Ziel: Ziel-SoC bis kurz vor Ende der PV-Zeit erreichen (konfigurierbarer Vorlauf targetLeadHours), dabei PV-Spitzen priorisieren und Netzbezug vermeiden.

  • Rechnet den Energiebedarf bis zum Ziel-SoC (unter Berücksichtigung von Wirkungsgrad, Spannung, Kapazität).

  • Drei Hauptfälle:

    1. Notfall/Reserve: SoC < reserveSocPercentsofort MaxA laden.

    2. PV reicht bis Deadline nichtsofort MaxA (um trotzdem rechtzeitig fertig zu werden).

    3. Normalfall: Verteilte Ladung über die prognostisch besten PV-Stunden bis zum Zieltermin.

      • Für die aktuelle Stunde wird ein Watt-Sollwert aus Stundenanteil + Restbedarf/Restzeit berechnet, dann in Ampere (Spannung) umgerechnet.

      • Außerhalb geplanter Stunden: je nach Option 0 A (Grid vor PV vermeiden) oder minA (oder wenn gleich PV kommt/da ist).

Wichtige Konfiguration (einmalig gesetzt)

global.chargeCfg:

  • targetSocPercent, reserveSocPercent, chargeEff

  • maxA, minA, headroomW

  • pvThresholdWh (ab wann eine Stunde als “PV-Stunde” zählt)

  • targetLeadHours (wie viel früher vor PV-Ende fertig)

  • allowGridBeforePV (ob außerhalb Plan minA erlaubt ist)

  • capacityAh (Batteriekapazität, falls BMS-“availableAh” fehlt)

global.vrm.idSite muss auf deine VRM-Site-ID gesetzt werden.

Laufende Aktualisierung & Hilfen

  • „Aktualisieren“-Inject: alle 5 Min berechnet Analyse + Plan neu.

  • Debug/Status-Meldungen** zeigen Summen, nächste Stunde, Modus und geplantes Finish-Zeitfenster.

  • Reset-Knoten zum gezielten Löschen von globalen Context-Schlüsseln (z. B. nur analysis oder hart alles).

Welche Daten landen wo?

  • global.forecast.pv / .consumption: Stundenwerte + Tages-Totals.

  • global.battery: socPercent, availableAh, voltageV.

  • global.analysis.forecast: zusammengeführte Stunden mit netWh, Fenster (next 1/3/6 h, Rest), Totals.

  • global.analysis.chargePlan: Plan, geplante Stunden, aktueller Stundenmodus, berechnete Ampere.

Version1.txt (24,7 KB)

2 „Gefällt mir“

starkes Projekt, nur verstehe ich den Sinn nicht. Warum willst du mit PV nur dann laden, wenn die PROGNOSE die Grundlage ist, anstatt jederzeit zu laden, sobald Überschuss über den momentanen Verbrauch vorhanden ist und dann, aber auch erst dann, wenn der Speicher voll ist, die Erzeugung netzdienlich abzuschalten?

fragende Grüße

mobilsolar

Ich möchte die Erzeugung nicht abschalten sondern möchte die Leistungsspitzen zum laden nutzen.

Grundüberlegung bei dieser Anlage und des Setups:

Anlage hat 25kwp und aktuell 15kwh Akku (2. Akku ist noch nicht angeschlossen)
PV Einspeisung ist auf 60% gedrosselt

Ich möchte die Erzeugung zu Beginn des Tages einspeisen und im Haushalt selbst verbrauchen.
Sobald die Spitzenzeiten erreicht sind möchte ich beginnen den Akku zu laden um zum einen den weniger einzuspeisen und zum anderen die Effizienz der Anlage zu erhöhen.
Die Prognose soll die Spitzen ausfiltern und quasi eine Kappung erzeugen.

Es gibt noch weitere Überlegung bei Konfiguration.

In naher Zukunft kommt noch ein Pufferspeicher mit Heizpatrone dazu sowie in ferner Zukunft ein E-Auto.
Im Nachgang der Akkuladung sollen dann diese Verbraucher bedient werden.

Ein weiteres Ziel war, dass der Akku nicht direkt früh voll ist und den gesamten Tag mit SOC100% “rumsteht”.

Vielleicht ist der Titel nicht ganz richtig gewählt :slight_smile:

Liebe Grüße

1 „Gefällt mir“

Ich habe den Flow und die Ladelogik nochmal geändert um eine geänderte Ladekurve zu erzeugen und im Dashboard abzubilden.

  1. Dashboard

  1. Dashboard
    mit Statistik über die letzten 12 Wochen

flows.txt (74,6 KB)

In dem Flow nur die Site ID und Akkukapazität in den Default Settings ändern und in den API Key in den Victron API Nodes anpassen. In den Victron Nodes das BMS anpassen.

Der Flow passt die Ladekurve über den Tag verteilt an, sodass der Akku bis zu einer definierten Zeit voll ist. Voreingestellt ist fertig geladen bis 2h vor prognostizierter PV Verfügbarkeit.

Hier nochmal eine ChatGPT Zusammenfassung als PDF

Charge_Plan_Technische_Dokumentation.pdf (4,6 KB)

flows 1Prozent Bug.txt (81,9 KB)

Kleiner Bugfix.
Wenn SOC 1% wurde es als 100% interpretiert.
Im Dashboard ist Plan Start und Plan Ende eingefügt
Es gibt jetzt noch einen Wert minA außerhalb Plan