Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI: battery boost (experimental) #16641

Merged
merged 9 commits into from
Oct 16, 2024
Merged

UI: battery boost (experimental) #16641

merged 9 commits into from
Oct 16, 2024

Conversation

naltatis
Copy link
Member

@naltatis naltatis commented Oct 13, 2024

follow up to #16599

First shot to show battery boost option in the UI. We'll start with an option in loadpoint settings and later move the boost option (if available) to main UI. (see also #3530)

  • enable/disable per loadpoint
  • boost active indicator
  • added per loadpoint limit (instead buffersoc) removed for simplicity @premultiply @andig @VolkerK62
  • fix tests
  • add e2e tests

active in lp settings
active

status
status

disabled in fast and off
disabled in fast or off

@naltatis naltatis added enhancement New feature or request ux User experience/ interface experimental Experimental feature labels Oct 13, 2024
@naltatis naltatis marked this pull request as draft October 14, 2024 12:40
@naltatis
Copy link
Member Author

@andig i noticed during my testing that "kickstart" does not work. I've tested with demo.yaml. Any ideas?

@naltatis naltatis marked this pull request as ready for review October 14, 2024 19:15
@naltatis naltatis requested review from andig and premultiply October 14, 2024 19:15
@andig
Copy link
Member

andig commented Oct 14, 2024

does not work. Any ideas?

Does not work in which way? I guess demo battery just doesn't work as expected.

Können wir es erstmal beim BufferSoc lassen? Solange wir nicht wissen wo das Setting endgültig hin soll würde ich die Tür ungern aufmachen. Gibt das API aktuell auch nicht her.

@naltatis
Copy link
Member Author

Können wir es erstmal beim BufferSoc lassen?

Ungern, ich find das schwer zu erklären, dass man erst in den Ladepunkteinstellunge den Boost aktivieren muss. Dann in Batterieeinstellungen geht, um das Limit zu setzen und es dann nach dem Ladevorgang wieder zurücksetzen muss, damit andere Ladepunkte (bspw. der Heizstab) keinen Quatsch machen. Ich würde Buffer und Boost als zwei getrennte Dinge sehen.

Gibt das API aktuell auch nicht her.

Was meinst du damit? Hier im PR gibts die API für Per-Ladepunkt Boost Limit.

@VolkerK62
Copy link
Contributor

VolkerK62 commented Oct 15, 2024

Ich würde Buffer und Boost als zwei getrennte Dinge sehen.

ich hatte anfangs nicht auf dem Schirm, dass das nur für den Loadpoint gelten soll.
Insofern macht die Trennung Sinn.

In dem Zusammenhang (unabhängig vom Limit), mal ne (blöde?) Frage:
Wie vertragen sich "boost" und "priority" miteinander?
Was passiert, wenn der geboosterte Loadpoint eine niedriger Priorität hat?

@premultiply
Copy link
Member

Ich würde mal sagen, das Gleiche wie bei Schnell.

@andig
Copy link
Member

andig commented Oct 15, 2024

Was meinst du damit? Hier im PR gibts die API für Per-Ladepunkt Boost Limit.

Ah, das hab ich übersehen.

Ungern, ich find das schwer zu erklären, dass man erst in den Ladepunkteinstellunge den Boost aktivieren muss.
Dann in Batterieeinstellungen geht, um das Limit zu setzen und es dann nach dem Ladevorgang wieder zurücksetzen muss, damit andere Ladepunkte (bspw. der Heizstab) keinen Quatsch machen. Ich würde Buffer und Boost als zwei getrennte Dinge sehen.

Muss man ja nicht. Erstmal gibts Boost bis zur für Fahrzeuge definierten Grenze. Das war der Stand der Diskussion.
Ich möchte ungern ein weiteres artifizielles Limit für Einmalaktionen einführen. Lieber "bis Standardgrenze" und ggf. "bis Leer" (oder nur eins von Beidem). Aber nach Möglichkeit nicht noch eine Auswahl die es dem Anwender schwer macht sich einen Wert zwischen 0% und 50% auszudenken. Wer das unbedingt braucht kann es auch extern realisieren.

@premultiply
Copy link
Member

premultiply commented Oct 15, 2024

Boost => bis "leer"
Kein Limit erforderlich.

Wozu sollte man in diesem Fall etwas anderes tun? Ziel ist ja alles an Eigenerzeugung rauszuholen was geht.

Idee: Man könnte noch als Abschaltkriterium PV+Bat=0W hinzufügen.

Für alles andere gibt es den bestehenden PV-Modus.

@naltatis
Copy link
Member Author

Ok, Limit ist erstmal raus. Heißt, wir starten mit Boost, der die Batterie so lange entlädt, wie es geht.

core/loadpoint.go Outdated Show resolved Hide resolved
core/loadpoint.go Outdated Show resolved Hide resolved
core/loadpoint.go Outdated Show resolved Hide resolved
@andig andig merged commit 742d1e9 into master Oct 16, 2024
5 of 6 checks passed
@andig andig deleted the feature/battery_boost_ui branch October 16, 2024 12:24
@creatronics-de
Copy link

Hallo, über die Diskussion bin ich auf dieses Feature aufmerksam gemacht worden. Nur so eine Idee:

  • Parameter boost_max der die maximale Boost Leistung enthält (mein WR macht z.B. 4,5KW, ich würde den Boost dann auf 4KW festlegen)
  • Boost berechnen aus pv_aktuell + boost_max - hausverbrauch
  • Boost umrechnen in Ampere für die Wallbox (um Netzbezug zu vermeiden kann man einfach den Boost wert um 500W unter der maximalen WR Leistung angeben).
  • Boost ist solange aktiv wie die Batterie über dem Limit für die Entladung durch das Fahrzeug liegt, dann fällt der Boost weg.
    Den boost würde ich einerseits in der Batterieübersicht aktivieren (globales ein / aus und den boost_max wert) und für die Ladesäulen parametrierbar machen (anfangs ein/aus, später z.B. eine Gewichtung um den boost auf die aktiven Ladesäulen entsprechend zu verteilen).

Ich fände das Feature klasse und würde gerne beim testen unterstützen.

@andig
Copy link
Member

andig commented Oct 18, 2024

Ich fände das Feature klasse und würde gerne beim testen unterstützen.

Es ist ja schon da. Also gerne testen.

@creatronics-de
Copy link

ist schon installiert, bin gespannt.

@creatronics-de
Copy link

Schräge Idee: PV+Boost bis Buffer Soc, MinPV+Boost bis leer. Nicht ganz offensichtlich, aber irgendwie (ein bisschen) logisch :)

Die Idee finde ich gut. PV schont ja die Batterie und der Boost würde die Batterie dann nur bis zum festgelegten Limit entladen, aber eben mit maximal möglicher Leistung / kürzester Zeit.

MinPV ignoriert auch die Limits, nur dass hier dann mit maximaler WR Leistung geladen würde, aber mit minimalem Netzbezug.

@lmfgpeace
Copy link

Ganz blöd mal gefragt:
Aber wie bekomme ich diesen "Build" zum laufen?

Im Docker gibts kein Update zum evcc. Neuste Version: 0.130.13

Experimentelle Features sind im UI aktiv.

@naltatis
Copy link
Member Author

Die Funktion ist bislang nur im Nightly (Docker evcc/evcc:nightly) verfügbar.

@creatronics-de
Copy link

Hallo zusammen,
Installiert und getestet.
Und für halb gut befunden.
Zwei Gründe:

  1. Die Ladung hat bei erreichen der eingestellten Grenze für die reservierte Kapazität fürs Haus nicht gestoppt, Batterie war dann leer :(
  2. Dauerhafter Bettbezug von ca. 600W

Wenn ich mein Auto schnell laden möchte nehme ich den Schnell Modus. Zumindest im PV Modus würde ich mir wünschen dass die Batterieeinstellungen geachtet werden und kein übermäßiger Netzbezug stattfindet.

Ich will die Entwicklung nicht schlecht reden, die Idee für den Boost ist klasse 😉

Was denkt ihr?
Viele Grüsse,
Michael

@andig
Copy link
Member

andig commented Oct 19, 2024

Es geht nur mit Bezug- anders bekommst du die Batterie nicht ans Limit. Was die Grenze angeht überlegen wir nich. Leer vs. Defaultlimit vs. Einstellbar.

@creatronics-de
Copy link

Ich ziehe mir mal den Code und spiele etwas.
Das Limit vom WR Muss ja nicht 100% ausgenutzt werden. Wenn der 100-200W unter Max läuft, würde das doch passen.
600W Netzbezug fand ich aber dann doch viel. Hier würde die Angabe der maximalen WR Leistung gute Dienste leisten.
Den Parameter könnte man auch bei Netzbezug im Hintergrund berechnen, oder? Quasi als dynamischer referenzwert.

Vielleicht muss man dem Kind einen anderen Namen geben.
Boost als Turbo fürs laden und maxPV für limitiertes Batteriegestütztes Laden.
Letzteres wäre ggf. als 4. Lademodus zu implementieren.

@andig
Copy link
Member

andig commented Oct 19, 2024

Der WR muss in den Bezug. Sonst hast du keine Chance heraus zu finden wo das Limit ist. Lösung: WB/Auto wo du <1A steuern kannst, v.a. 1p.

@creatronics-de
Copy link

Habe gestern etwas gespielt. Go ist ja echt eine feine Sprache muss ich gestehen :-)
Grundsätzlich habe ich das ganze denke ich verstanden. Ich habe mir folgendes überlegt:
Grundsätzlich gibt es 2 Möglichkeiten für die Boost Funktion:
Ohne MaxBatteryPower verhält sich das System wie auch jetzt schon. d.h. die Wallboxleistung wird so lange verringert, bis der Netzbezug unter 690W oder 230W (P bei 1A 3 Phasen oder 1 Phase) liegt.
Das ist denke ich für Laien die das System einfach nur am Laufen haben wollen eine gute Lösung.

Mit MaxBatteryPower würde ich die Berechnung dann anpassen:
z.B.
Hausverbrauch bei 500W
PV bei 2KW
MaxBatteryPower bei 2KW
Dann stünden für die WB 3,5kW zur Verfügung. Ergibt 3500/690 = abgerundet 5A (falls das die WB und das Fahrzeug kann).

Zudem könnte man ein Batterie Limit angeben, z.B. 40%. Bei einem SOC unter 40% würde die Boost Funktion dann deaktiviert werden und somit genug im Speicher z.B. für die Nacht bleiben.

Wer Netzbezug in Kauf nehmen möchte, kann auch einfach mehr bei MaxBatteryPower angeben als möglich. Wäre denke ich ganz gut für die Übergangsmonate um trotzdem laden zu können.

Was meint ihr? Würde das mal testweise programmieren.

Wie wird man Teil vom Entwicklerteam und wie sind hier die Spielregeln? :-)

@premultiply
Copy link
Member

MaxBatteryPower

Die Batterieleistung ist leider nicht konstant und extern nicht vorhersehbar.
Je nach Ladezustand gibt das BMS ggf. unterschiedliche Leistungsbeschränkungen vor die dynamisch unterhalb der theoretisch-kombinatorischen Leistung liegen können. Daher der implementierte Ansatz mit der Regelschleife analog zur Überschussregelung.

Bei einem SOC unter 40% würde die Boost Funktion dann deaktiviert werden und somit genug im Speicher z.B. für die Nacht bleiben.

Der normale PV-Modus (ohne Boost) bietet bereits diese Funktionalität.
Mit Battery Boost hingegen soll im Gegensatz dazu ganz explizit die Batterie maximal und möglichst tief entladen werden, damit sie möglichst viel freie Kapazitäten für die nächste erwartete Ladung hat bzw. das Fahrzeug mit möglichst wenig Netzbezug beschleunigt geladen wird.

Grundsätzlich versuchen wir immer so wenig Konfigurationsoptionen wie möglich einzubauen, damit die Konfiguration und Bedienung klar und einfach bleibt.
Weitergehende Automatisierungen für spezielle Anwendungen können jederzeit via API-Schnittstelle implementiert werden.
In diesem Fall z. B. eine kleine Logik die den Boost beendet wenn der Batterie-SoC unter 40% fällt.

@creatronics-de
Copy link

creatronics-de commented Oct 21, 2024

Ah, ok. Ich beschreibe allerdings einen anderen Anwendungsfall (von dem ich denke, dass ihn auch viele Andere brauchen könnten):
Mir geht es nicht darum, die Batterie möglichst schnell ins Fahrzeug umzuladen.
Mein Ziel ist:

  • Minimaler Netzbezug
  • maximale Lade Leistung
  • Reservieren einer Restladung um über Nacht keinen Netzbezug zu haben.
  • Maximale Autarkie der Anlage beibehalten

Der Anwendungsfall:
Ich komme mittags nach Hause, möchte möglichst viel Batterie samt PV ins Auto pumpen und zwar in kurzer Zeit.
dabei soll an schlechten Tagen die Batterie aber nicht unter x fallen, damit ich nachts keinen Netzbezug habe.

Somit maximiere ich die Eigennutzung, denn an guten Tagen kann ich mit 16A reinladen und die Batterie kann am Nachmittag wieder vollladen, das Auto dann am Abend wieder aus der vollen Batterie laden. Für die Nacht ist noch immer genug Saft in der Batterie.
An schlechten Tagen hingegen nehme ich nur so viel aus der Batterie, dass ich in der Nacht keinen Netzbezug habe.

Effizienztechnisch also ein für mich geniales Ergebnis, denn die Autarkie Rate wird so gut wie nicht beeinflusst obwohll ich ein Maximum in das Fahrzeug lade.

Der aktuelle PV Modus gibt das nicht her, denn hier wird nur mit PV Überschuss geladen, die Batterie selbst aber nur angezapft, wenn man unter den Min Wert fällt. Oder anders gesagt: die Batterie wird nicht als Puffer genutzt.

Ich denke also dass das Kind einen anderen Namen braucht. MaxPV z.B. da hier die maximale Solarleistung incl. Batterie als Puffer verwendet wird.

Die boost Funktion macht sicher auch für gewisse Anwendungen Sinn. Wenn ich dann aber nachts Netzbezug habe, würde mich das tatsächlich ärgern, denn den besten ROI bei einer Solaranlage erhält man bei maximaler Autarkie.

und wenn ich tatsächlich voll laden will kann ich bereits bestehende Funktionen verwenden (ladeplanung, schnell modus, etc.)

hoffe das erklärt meine Idee etwas besser.
Was meint ihr?

@andig
Copy link
Member

andig commented Oct 21, 2024

Minimaler Bettbezug

+1

@creatronics-de
Copy link

Autokorrektur lässt grüßen 😂

naltatis added a commit that referenced this pull request Oct 24, 2024
@OJack0815
Copy link

Im Sommer, wenn schon PV kommt, ist Batterie komplett leer saugen bevor man morgens los fährt ok. Im Winter, wenn man los fährt bevor die Sonne aufgeht, wäre mir wichtig einen minSoC von z.B. 20% angeben zu können, damit noch genug in der Batterie bleibt um den Haushalt bis Sonnenaufgang ohne Netzbezug zu versorgen.

@OJack0815
Copy link

OJack0815 commented Oct 24, 2024

Es wäre vielleicht noch gut den Boost bis minSoC morgens per Ladeplan automatisch starten zu können. Oder geht das schon?

Und ganz genial wäre es, dies nur zu tun, wenn genug PV-forecast an dem jeweiligen Tag zu erwarten ist ;-)

@creatronics-de
Copy link

Guten Morgen,
Das implementiere ich gerade testweise. Nehme als untersten entladewert den Reservierungswert fürs Haus. Spiele auch mit Entladung ohne Batteriebezug, etc, das hat aber seine Tücken 😄

@OJack0815
Copy link

Moin,
als Test sicherlich ok. Generell wäre es für mich ungünstig den Reservierungswert fürs Haus zu nehmen. Ich möchte mit Boost bewusst den Hausspeicher ziemlich leer ziehen, wenn das Auto danach unterwegs ist und schönes Wetter vorhergesagt ist.
Generell soll aber der Hausspeicher hohe Prio haben und das Auto erst bei nahezu vollem Hausspeicher den Überschuss aufnehmen.

@OJack0815
Copy link

Ach so, noch eine Anmerkung.
Sind die ca. 600W Netzbezug beim Boost so gewollt?
Ich würde 0W bevorzugen, weil meine Hauptprio auf null Netzbezug liegt. Kann man das irgendwo parametrieren?

@TobiasHuber1980
Copy link
Contributor

Ach so, noch eine Anmerkung. Sind die ca. 600W Netzbezug beim Boost so gewollt? Ich würde 0W bevorzugen, weil meine Hauptprio auf null Netzbezug liegt. Kann man das irgendwo parametrieren?

siehe:
#16641 (comment)
#16641 (comment)

@OJack0815
Copy link

Ach ja, logisch. Ich hatte nicht lang genug über die Regelung nachgedacht.
Danke

@creatronics-de
Copy link

Habe mal mit meiner Idee gespielt für die Angabe eines Wertes für die maximale Batterie Leistung. Scheint ganz gut zu funktionieren.
Ich muss das noch parametrierbar ausprogrammieren. So bleibe ich aber unter der netzbezugsgrenze.
Das dauert aber noch, erst mal ist Erholung angesagt.

@cmock
Copy link

cmock commented Oct 27, 2024

ich hab (mit der 0.131.1) auch mal mit boost gespielt und die schon genannten punkte sind negativ aufgefallen:

  • entladung bis 0
  • netzbezug von 1A pro phase

mir scheint die diskussion hier zwei unterschiedliche anwendungszwecke zu zeigen für die entladetiefe, und während ich natürlich die API pollen kann und den boost ausschalten, wenn meine persönliche grenze erreicht ist, scheint es für mich sinnvoller, für das geschilderte "batterie ganz leermachen, weil viel PV-ertrag erwartet wird" über die API zu lösen, indem man die priorisierungsgrenze entsprechend der tageszeit und PV-prognose setzt. das braucht kein polling, sondern zB stündliche änderung.

und daß ein netzbezug für die regelung notwendig ist, ist klar, aber muss der soooo hoch sein? das wär schön, wenn das konfigurierbar wäre, dann könnt man sich an einen minimalen stabilen wert für die eigene technik herantasten.

das regelverhalten war übrigens sehr sauber, die intermittierenden lasten im haus und auch der rückgang der batterieinverterleistung nach einiger zeit wurden schön glattgebügelt.

@andig
Copy link
Member

andig commented Oct 28, 2024

Bitte Doku lesen. Beides ist notwendig.

@cmock
Copy link

cmock commented Oct 28, 2024

wo find ich das in der doku? "boost" gibt keine treffer...

@naltatis
Copy link
Member Author

Ist noch frisch:
https://docs.evcc.io/docs/features/battery#batterie-boost

Aktuell wird der Suchindex nur wöchentlich. Ich könnte mal einbauen, dass wir das nach einem Release automatisch triggern.

@cmock
Copy link

cmock commented Oct 29, 2024

ah ja, ich hab nämlich vor dem posten nochmal nachgeschaut... die beiden punkte oben gehen aus dem text aber nicht sehr klar hervor.
was ich noch nicht verstehe, sind die 1A/phase, auch bei nicht-feature-"coarsecurrent"-setups. da müsst doch weniger auch reichen zum regeln?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request experimental Experimental feature ux User experience/ interface
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants