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

Alpha ESS: add battery control #16280

Merged
merged 6 commits into from
Sep 27, 2024

Conversation

softcat
Copy link
Contributor

@softcat softcat commented Sep 22, 2024

This PR adds battery control for Alpha ESS Storion SMILE batteries.

It supports hold and charge.

Fixes: #13816

To use active battery control, times for grid charging must be defined once via the web interface or app. (Settings->Function settings->Grid charging/discharging)

A continuous time period should be entered here (e.g.: Charging time 1 00:00-23:00, Charging time 2 23:00-00:00). However, deactivate the "Grid charging" switch. The actual control takes place via evcc.

IMG_4531

The discharge stop is realized via a scheduled grid charge with a target SoC of 10%.

Alternatively, it can also be configured via Modbus. To do this, set the registers 2134,2142,2135,2136,2144,2137,2175 to the values 0,0,23,0,23,0,0,0,0.

It would be possible to set these one time settings in the template yaml but then they would be executed with every mode change.

@softcat softcat changed the title Feature/alpha battery Alpha ESS: add battery control Sep 22, 2024
@premultiply
Copy link
Member

So richtig glücklich bin ich mit der missbräuchlichen Nutzung von Zeitslots nicht.
Dies greift IMHO (zu) stark in die Anlagenkonfiguration ein.

Eigentlich hatten wir mal gesagt, dass wir es (die Batteriesteuerung) im Zweifelsfall eher sein lassen wenn es dazu (noch) keine gescheite Schnittstelle seitens des Herstellers/der Firmware gibt.

@andig @naltatis Was meint ihr?

@softcat
Copy link
Contributor Author

softcat commented Sep 23, 2024

Deswegen ist es auch die Idee, dass die Zeitslots nicht direkt von evcc konfiguriert werden. Sondern dieser Schritt in der Dokumentation steht, wie auch bei manchen anderen Integrationen.

Bezüglich der geplanten Ladung der Batterie hält man sich damit auch direkt an die vorgesehene Konfiguration des Speichers.

Allerdings benötigt es einen Workaround für den Entladestop. Wie beschrieben wird dafür eine geplante Ladung aktiviert, allerdings mit einem Ziel-SoC von 10 %. Zur Sicherheit könnte man zusätzlich auch noch den Minimal-SoC auf 10% setzen um sicher keine Ladung auszulösen (ggf. auch nur über die Doku um eine unbeabsichtigte Veränderung einer bestehenden Konfiguration zu verhindern).

Dieser Hinweis kommt letztlich aus dem Hersteller Forum, ich glaube nicht, dass seitens der Firmware in Zukunft irgendwelche Verbesserungen zu erwarten wären.

@andig andig added the devices Specific device support label Sep 23, 2024
@softcat
Copy link
Contributor Author

softcat commented Sep 23, 2024

Prinzipell gäbe es noch die Möglichkeit den Entladestopp "offiziell" ohne Zeitplanung zu erreichen indem man den Min-SOC festlegt. Dieser muss dann aber genau dem aktuellen Ladestand entsprechen, ich weiss nicht, ob das über das Template möglich ist. Und dies hat den Nachteil, dass ggf. ein vom Nutzer selbst definierter Min-SOC überschrieben würde.

Daher halte ich die Lösung weiter oben eigentlich "sauberer": Konfiguration der Zeitslots per Hand per Doku (diese müssten ja eh für eine normal geplante Ladung angepasst werden) um keine unbeabsichtigten Änderungen zu provozieren.

Ggf. reicht auch die Definition eines einzelnen Zeitslots von 0h-0h. Es gibt immer zwei Zeitslots, die Dokumentation schweigt sich aber darüber aus was passiert wenn sie sich überschneiden.

@andig
Copy link
Member

andig commented Sep 23, 2024

Bei anderen Lösungen konfigurieren wir die Slots tatsächlich auch (Sofar?). Das kann man dokumentieren, aktiv wird es nur wenn der Anwender die Option einschaltet. Daher könnte ich damit leben.

@andig
Copy link
Member

andig commented Sep 23, 2024

Prinzipell gäbe es noch die Möglichkeit den Entladestopp "offiziell" ohne Zeitplanung zu erreichen indem man den Min-SOC festlegt. Dieser muss dann aber genau dem aktuellen Ladestand entsprechen, ich weiss nicht, ob das über das Template möglich ist. Und dies hat den Nachteil, dass ggf. ein vom Nutzer selbst definierter Min-SOC überschrieben würde.

Das geht, aber nur wenn das auch für charge nutzbar wäre.

@softcat
Copy link
Contributor Author

softcat commented Sep 23, 2024

Das geht, aber nur wenn das auch für charge nutzbar wäre.

Dafür wäre wiederum ein anderes Register zuständig.

Danke, ich hab die Review Hinweise umgesetzt!

@andig andig marked this pull request as draft September 25, 2024 21:12
@softcat
Copy link
Contributor Author

softcat commented Sep 26, 2024

Die Review Hinweise wurden umgesetzt.

Ich habe die default Werte für minsoc und maxsoc bei params gesetzt, ansonsten wurde beim testen jeweils 0 in das Register geschrieben.

@softcat softcat marked this pull request as ready for review September 26, 2024 19:04
@andig
Copy link
Member

andig commented Sep 26, 2024

Ich habe die default Werte für minsoc und maxsoc bei params gesetzt, ansonsten wurde beim testen jeweils 0 in das Register geschrieben.

Ahh, check. Das klappt nur bei limitsoc, aber hier werden ja mehrere Register gesetzt.

@andig
Copy link
Member

andig commented Sep 26, 2024

Lgtm @premultiply ?

@premultiply premultiply merged commit 35d4bdf into evcc-io:master Sep 27, 2024
6 checks passed
@softcat softcat deleted the feature/alpha-battery branch September 28, 2024 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
devices Specific device support
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Entladestopp Batterie Alpha Ess Smile 5 / Modbus
3 participants