evcc-io / evcc

Solar Charging ☀️🚘
https://evcc.io
MIT License
3.65k stars 678 forks source link

Update Target Charging Time Factor #7379

Closed Hofyyy closed 1 year ago

Hofyyy commented 1 year ago

Describe the bug

Aktuell zählen wir im Loadpoint Zeit zu der Vorhersage des Estimators dazu, um sicher zu sein, dass das Zielladen pünktlich fertig wird. Nach meiner Auffassung sind die Faktoren aber grob falsch, so das man ggf. zu früh anfängt und der Planer auch schon mal anhält.

Da sich der ganz schicke Estimator ggf. noch ein wenig Zeit braucht @premultiply oder gibt es hier schon nähere Pläne?

Schlage ich vor als kurzfristige Maßnahme die aktuelle Stelle zu patchen. Dank der Exceltabelle / Formel von der Discussion https://github.com/evcc-io/evcc/discussions/6235 sollte das auch gut möglich sein. @VolkerK62 Berechnung.Ladezeit.Volker.xlsx

Es geht dabei um die folgende Sourcecode Stelle:

loadpoint_plan.go

planRequiredDuration()

if targetSoc > 80 && maxPower > 15000 {
  additionalDuration = 5 * time.Duration(float64(targetSoc-80)/(float64(targetSoc)-lp.vehicleSoc)*float64(requiredDuration))
   lp.log.DEBUG.Printf("add additional charging time %v for soc > 80%%", additionalDuration.Round(time.Minute))
} else if targetSoc > 90 && maxPower > 4000 {
  additionalDuration = 3 * time.Duration(float64(targetSoc-90)/(float64(targetSoc)-lp.vehicleSoc)*float64(requiredDuration))
  lp.log.DEBUG.Printf("add additional charging time %v for soc > 90%%", additionalDuration.Round(time.Minute))
}
requiredDuration += additionalDuration
}
requiredDuration = time.Duration(float64(requiredDuration) / soc.ChargeEfficiency)

Wichtig ist zu verstehen, dass inital die "requiredDuration" die korrekte Ladedauer vom Estimator ist, die auch vom UI kommt und welche schon 10% Effizienzverlust mit eingerechnet hat. Hier wird also einmal bei zwei Bedingungen real Zeit draufgerechnet und ganz zum Schluss wird noch einmal 10% (ChargeEfficiency) auf die gesammte länge drauf gerechnet.

Daher die Frage:

Steps to reproduce

  1. Set Target Soc too 100%
  2. Compare real charging plan with inital charging plan time ...

Configuration details

...

Log details

...

What type of operating system are you running?

Linux

Version

No response

VolkerK62 commented 1 year ago

@VolkerK62 könnten wir das alles mit einer einfachen Formel erschlagen?

Ich habe das in Excel mal durchgespielt und hätte eine quick&dirty Lösung, die ziemlich nah dran ist. Man rechnet aus, was der Estimator für 1% Soc berechnet hat. Diese Zeit pro 1% wird dann für den Bereich > 80 bzw > 90 zur Estimator-Zeit addiert. Praktisch wird die voraussichtliche Ladedauer für den Endzeitraum verdoppelt.

Ich tue mir schwer, code zu lesen/verstehen. Aber wenn ich das richtig sehe, wird genau das oben auch gemacht. Man müsste also eigentlich nur die Multiplikatoren 5 und 3 rausnehmen.

Hofyyy commented 1 year ago

Ok dann würde ich vorschlagen den Faktor auf 1 zu ändern und die 10% rausnehmen. Da die 1 verdoppelt und die Effizienz sich in Zukunft auch ändern kann.

Hofyyy commented 1 year ago

https://github.com/evcc-io/evcc/pull/7411