Skip to content

Conversation

wusel42
Copy link

@wusel42 wusel42 commented May 10, 2025

Ich schreib's mal auf deutsch, das macht Erläuterungen (mir) einfacher ...

Worum geht's: Ich habe initial nicht verstanden, daß eine nicht ausreichend geladene Batterie nachts entladen werden kann und dann die Entladung wieder stoppt, eine einmal volle jedoch solange entladen wird, bis sie leer ist (siehe Bugreport #1940).

Nun, in meinem Setup ist es wünschenswert, die Batterie tagsüber priorsitisiert wieder zu laden, damit die nächtliche Stützung wieder möglich ist. Das ist mit Bordmitteln bislang nicht möglich, dieser Patch liefert diese Funktion nach:

  • DPL beginnt mit einer Entladung, sobald der Start-Schwellwert erreich wird und beendet die Entladung erst, wenn der Stopp-Schwellwert erreicht wurde (Standardverhalten).
  • Aktiviert man "Batterie nachts sogar teilweise geladen nutzen", wird ab Sonnenuntergang bis entweder Sonnenaufgang oder Erreichen des Stopp-Schwellwertes entladen (Standardverhalten).
  • Aktiviert man "Bei Sonnenaufgang ggf. Entladezyklus beenden", wird eine Entladung, egal aus welchem Grund gestartet, bei Sonnenaufgang beendet (dieser Patch).

Somit kann man nun

  • eine einmal hinreichend volle Batterie solange – auch tagelang – entladen, bis ihr Stopp-Schwellwert erreicht wird (keine Option gesetzt)
  • nur in der Nacht die Batterie bis Sonnenaufgang oder zum Stopp-Schwellwert entladen (hierzu »Batterie nachts sogar teilweise geladen nutzen« aktivieren und den Start-Schwellwert deutlich über den Batterienennwert setzen, bei 48V z. B. auf 75V)
  • eine nicht voll geladene Batterie in der Nacht bis Sonnenaufgang oder zum Stopp-Schwellwert entladen; sollte sie an einem Tag bis zum Start-Schwellwert geladen werden, würde sie dann solange Tag und Nacht entladen, bis ihr Stopp-Schwellwert erreicht würde (hierzu »Batterie nachts sogar teilweise geladen nutzen« aktivieren und den Start-Schwellwert realistisch setzen)
  • eine nicht voll geladene Batterie in der Nacht bis Sonnenaufgang oder zum Stopp-Schwellwert entladen; sollte sie an einem Tag bis zum Start-Schwellwert geladen werden, würde sie bis längstens Sonnenaufgang entladen werden, außer, zu Sonnenaufgang wäre der Start-Schwellwert noch erreicht (hierzu »Batterie nachts sogar teilweise geladen nutzen« sowie »Bei Sonnenaufgang ggf. Entladezyklus beenden« aktivieren)

Wozu braucht man das?

Wer (d/m/w) ›nur‹ ein (größeres) Balkonkraftwerk hat, wer also keine Einspeisevergütung erhält, hat am meisten von seiner Stromernte, wenn er seinen Verbrauch zu Zeiten durch Einspeisung reduziert, wenn der Strom teuer ist. Das gilt bei einem dynamischen Stromtarif monetär, bei statischem Tarif hilft es dem Netz. Gerade bei dynamischen Stromtarifen ist im »Sommerhalbjahr« der Strom tagsüber günstiger als nachts: exemplarisch für den 11.05.2025 sind es zwischen 00:00 und 06:00 sowie 18:00 bis 24:00 im Schnitt 0,3067 €/kWh, zwischen 06:00 und 18:00 0,1167 €/kWh.

Wer also einen dynamischen Stromtarif hat, der präferiert ggf. das Laden der Batterie, während die Sonne scheint und der Strom günstig ist — und hebt sich das Entladen für wenn voll oder die Abendstunden auf. Bei festem Tarif hilft es zumindest noch dem Netz, wenn man im Sommer, wo oft Wind- und Solarenergieüberschuß tagsüber herrscht, die eigene Solarenergie, ja, verlustbehaftet, speichert und zeitversetzt verbraucht.

An bewölkten Tagen, wo die eigene PV mit Ach und Krach die Batterie über den Tag voll bekommt, können die Stunden zwischen Sonnenaufgang bis nach dem Mittagspeak die sein, die abends in der Batterieladung fehlen, wenn tagsüber Laden nicht priorisiert wird.

Sonstige Überlegungen

Die Nützlichkeit hängt sicher von einigen Faktoren ab, wie kWh der Batterie vs. kWp der Solaranlage, dynamischer vs. statischer Strompreis, ... Aber aus meiner Sicht schließt der Patch auch eine ›Logiklücke‹: warum kann ich nur Nachts entladen (Start-Schwellwert utopisch hoch), nicht aber auch mit dem Entladen vor Sonnenuntergang, nämlich wenn der (realistische) Start-Schwellwert erreicht ist, beginnen und bei Sonnenaufgang hört die Entladung wieder auf?

Fazit

Aus meiner Sicht ist das ein kleine, logische Funktonserweiterung, die manchen Nutzern helfen kann, mit OpenDTU-OnBattery die eigenen Bedürfnisse besser abzudecken.

…at sunrise, similar to BatteryDischargeAtNight
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements a new configuration option that stops a discharge cycle at sunrise when the battery has not reached its start threshold, thereby prioritizing battery charging during the day. Key changes include:

  • Adding a new configuration flag (battery_prioritize_charge) in both frontend and backend.
  • Introducing logic in the PowerLimiter loop to end discharge cycles at sunrise if the flag is set.
  • Updating localization files, serialization/deserialization routines, and default configurations to support the new functionality.

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
webapp/src/views/PowerLimiterAdminView.vue Added a new input element for the battery_prioritize_charge configuration.
webapp/src/types/PowerLimiterConfig.ts Introduced the battery_prioritize_charge field to the config schema.
webapp/src/locales/{de, en, fr}.json Updated locale files with new keys and hints for battery_prioritize_charge.
src/PowerLimiter.cpp Integrated new logic to end discharge cycles at sunrise when appropriate.
src/Configuration.cpp Modified config serialization and deserialization to include the new flag.
include/{defaults.h, PowerLimiter.h, Configuration.h} Added default values and declared new configuration properties.
Comments suppressed due to low confidence (1)

src/PowerLimiter.cpp:258

  • [nitpick] The verbose log message could be clearer by distinguishing between the battery being sufficiently charged and the prioritized charging behavior. Consider using distinct messages to improve debugging clarity.
isStartThresholdReached() ? "battery is charged enough" : "charge is prioritized"

"BatteryDischargeAtNight": "Batterie nachts sogar teilweise geladen nutzen",
"BatteryDischargeAtNightHint": "Ermöglicht das Entladen der Batterie in der Nacht, auch wenn der Start-Schwellwert nicht erreicht wurde. Das Entladen stoppt bei Sonnenaufgang, oder sobald der Stop-Schwellwert erreicht wurde.",
"BatteryPrioritizeCharge": "Bei Sonnenaufgang ggf. Entladezyklus beenden",
"BatteryPrioritizeChargeHint": "Sollte der Start-Schwellwert bei Sonnenaufgang unterschritten sein, wird ein Entladezyklus beendet. Das Entladen wird wieder aufgenommen, solabd der Start-Schwellwert erreicht wurde.",
Copy link

Copilot AI May 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in the German locale: 'solabd' should be corrected to 'sobald'.

Suggested change
"BatteryPrioritizeChargeHint": "Sollte der Start-Schwellwert bei Sonnenaufgang unterschritten sein, wird ein Entladezyklus beendet. Das Entladen wird wieder aufgenommen, solabd der Start-Schwellwert erreicht wurde.",
"BatteryPrioritizeChargeHint": "Sollte der Start-Schwellwert bei Sonnenaufgang unterschritten sein, wird ein Entladezyklus beendet. Das Entladen wird wieder aufgenommen, sobald der Start-Schwellwert erreicht wurde.",

Copilot uses AI. Check for mistakes.

"ConductionLossesInfo": "Conduction losses are to be expected when transferring energy from the solar charge controller or from the battery to the inverter. These losses are taken into account to calculate better suited inverter limits.",
"BatteryDischargeAtNight": "Use battery at night even if only partially charged",
"BatteryDischargeAtNightHint": "Allows the battery to be discharged at night even if it hasn't reached the Start Threshold. Discharging continues until sunrise or until the Stop Threshold is reached.",
"BatteryPrioritizeCharge": "Prioritize charging of the battery at day",
Copy link

Copilot AI May 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Consider rephrasing the English label to "Prioritize battery charging during the day" for clearer communication of the intended functionality.

Suggested change
"BatteryPrioritizeCharge": "Prioritize charging of the battery at day",
"BatteryPrioritizeCharge": "Prioritize battery charging during the day",

Copilot uses AI. Check for mistakes.

@AndreasBoehm
Copy link
Member

  • Please update the branch by merging development into it or rebasing
  • Copilot found typos and requested changes

Copy link

This pull-request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale label Jul 10, 2025
@github-actions github-actions bot removed the stale label Sep 4, 2025
Copy link

This pull-request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale label Sep 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants