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
@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
@andig
Copy link
Member

andig commented Oct 16, 2024

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

@premultiply
Copy link
Member

Wenn man unbedingt an MinPV als eigenem Modus hängt ja, aber führt mMn immer noch zu viel geklicke.

Der Boost Modus operiert ja am gegenteiligen Arbeitspunkt des PV-Modus.
Defensiv (PV) vs. aggressiv (Boost).
Die Integration in einen der PV-Modi erscheint mir daher noch nicht optimal.

Ich zumindest brauche Boost eigentlich nur alleine. Szenario: Ich will morgens früh weg und mittags ist dann absehbar viel Ertrag aber quasi kein Verbrauch.
Solange irgendein Eigenproduktionsanteil verfügbar ist (PV+Bat > 0) soll geladen werden.
SoC irrelevant. Motto: Alles "rausquetschen" was geht.

Entspräche in dem Fall auch Solar Share Regler quasi auf 0.
Aber halt nur im Boost Modus...🤔

@naltatis
Copy link
Member Author

Die Integration in einen der PV-Modi erscheint mir daher noch nicht optimal.

Spannend ist ja, was evcc macht, wenn die Batterie leergeboostet wurde. Da finde ich ein definiertes Verhalten (bspw. PV oder Min+PV-Verhalten) schon wichtig. Aber ja, jetzt sind wir wieder in der Modus-Redesign Diskussion 😄

@VolkerK62
Copy link
Contributor

Ich glaube es gibt noch ein (Anzeige?) Problem.
Eingestellt Modus "PV". Boost aktiviert. Ladung startet. Boost Symbol im LP wird angezeigt.
Dann den Modus geändert auf "Min+PV" und kurz danach wieder auf PV. Der disable timer läuft los.
Im Log keinen Hinweis mehr, dass Boost aktiv ist. Soll ja so sein, Modus wurde geändert.

ABER: Im LP wird immer noch das Boost Symbol angezeigt und in den LP Settings immer noch "Boost aktiv".

@TobiasHuber1980
Copy link
Contributor

TobiasHuber1980 commented Oct 17, 2024

Eine Verständisfrage: PV-Erzeugung 4 kW; max Leistung des WR ca. 8 kW; d.h. 4kW werden aus der Batterie bezogen.
Der Hausverbrauch wird aber nicht berücksichtigt, d.h. Hausverbrauch = Netzbezug? Oder denke ich falsch?
Ist das Verhalten so gewollt?

[site ] DEBUG 2024/10/17 14:39:22 ----
[lp-1 ] DEBUG 2024/10/17 14:39:22 charge power: 8200W
[lp-1 ] DEBUG 2024/10/17 14:39:22 charge currents: [12 11.9 11.9]A
[site ] DEBUG 2024/10/17 14:39:23 grid power: 547W
[site ] DEBUG 2024/10/17 14:39:23 battery soc: 85%
[site ] DEBUG 2024/10/17 14:39:23 battery power: 4222W
[site ] DEBUG 2024/10/17 14:39:24 pv power: 3925W
[site ] DEBUG 2024/10/17 14:39:24 site power: 4919W
[lp-1 ] DEBUG 2024/10/17 14:39:24 detected active phases: 3p
[lp-1 ] DEBUG 2024/10/17 14:39:24 charge total import: 1693.243kWh
[lp-1 ] DEBUG 2024/10/17 14:39:24 charger status: C
[lp-1 ] DEBUG 2024/10/17 14:39:24 soc estimated: 84.55% (vehicle: 80.00%)
[lp-1 ] DEBUG 2024/10/17 14:39:24 vehicle soc: 85%
[lp-1 ] DEBUG 2024/10/17 14:39:24 vehicle soc limit: 100%
[lp-1 ] DEBUG 2024/10/17 14:39:24 vehicle range: 317km
[lp-1 ] DEBUG 2024/10/17 14:39:24 pv charge battery boost: -4912W = -4222W battery - 690W boost
[lp-1 ] DEBUG 2024/10/17 14:39:24 pv charge current: 12.4A = 12.4A + -0.0103A (7W @ 3p)
[lp-1 ] DEBUG 2024/10/17 14:39:24 max charge current: 12.4A
[site ] DEBUG 2024/10/17 14:39:42 ----
[lp-1 ] DEBUG 2024/10/17 14:39:42 charge power: 8205W
[lp-1 ] DEBUG 2024/10/17 14:39:42 charge currents: [12 11.9 11.9]A
[site ] DEBUG 2024/10/17 14:39:43 battery soc: 85%
[site ] DEBUG 2024/10/17 14:39:43 battery power: 4223W
[site ] DEBUG 2024/10/17 14:39:43 grid power: 523W
[site ] DEBUG 2024/10/17 14:39:43 pv power: 3958W
[site ] DEBUG 2024/10/17 14:39:43 site power: 4895W
[lp-1 ] DEBUG 2024/10/17 14:39:43 detected active phases: 3p
[lp-1 ] DEBUG 2024/10/17 14:39:43 charge total import: 1693.290kWh
[lp-1 ] DEBUG 2024/10/17 14:39:43 charger status: C
[lp-1 ] DEBUG 2024/10/17 14:39:43 soc estimated: 84.61% (vehicle: 80.00%)
[lp-1 ] DEBUG 2024/10/17 14:39:43 vehicle soc: 85%
[lp-1 ] DEBUG 2024/10/17 14:39:43 vehicle soc limit: 100%
[lp-1 ] DEBUG 2024/10/17 14:39:43 vehicle range: 317km
[lp-1 ] DEBUG 2024/10/17 14:39:43 pv charge battery boost: -4913W = -4223W battery - 690W boost
[lp-1 ] DEBUG 2024/10/17 14:39:43 pv charge current: 12.4A = 12.4A + 0.0253A (-17W @ 3p)
[lp-1 ] DEBUG 2024/10/17 14:39:43 max charge current: 12.4A

boost

@naltatis
Copy link
Member Author

@TobiasHuber1980 doch, der Hausverbrauch sollte mit berücksichtigt werden. Aber der Boost Modus ist mit der Tendenz gemacht, dass er eher ein wenig zu aggressiv als zu vorsichtig lädt. Wenn deine Wallbox+Auto in 1A-Schritten regelt, würde ich sagen die 500W sind noch in der Toleranz.

@naltatis
Copy link
Member Author

ABER: Im LP wird immer noch das Boost Symbol angezeigt und in den LP Settings immer noch "Boost aktiv".

Klingt als ob wir das Update nicht publishen ...

@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 😂

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.

7 participants