Planner: allow plan to take precedence over vehicle or session limits (#11013)

This commit is contained in:
andig 2023-12-06 18:23:12 +01:00 • committed by GitHub
parent 11c6fed4bc
commit 098a0fc2b5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 72 additions and 49 deletions

View file

@ -1560,6 +1560,19 @@ func (lp *Loadpoint) Update(sitePower float64, autoCharge, batteryBuffered, batt
case lp.scalePhasesRequired():
err = lp.scalePhases(lp.ConfiguredPhases)
case lp.remoteControlled(loadpoint.RemoteHardDisable):
remoteDisabled = loadpoint.RemoteHardDisable
fallthrough
case mode == api.ModeOff:
err = lp.setLimit(0, true)
// minimum or target charging
case lp.minSocNotReached() || plannerActive:
err = lp.fastCharging()
lp.resetPhaseTimer()
lp.elapsePVTimer() // let PV mode disable immediately afterwards
case lp.limitEnergyReached():
lp.log.DEBUG.Printf("limitEnergy reached: %.0fkWh > %0.1fkWh", lp.getChargedEnergy()/1e3, lp.limitEnergy)
err = lp.disableUnlessClimater()
@ -1568,23 +1581,10 @@ func (lp *Loadpoint) Update(sitePower float64, autoCharge, batteryBuffered, batt
lp.log.DEBUG.Printf("limitSoc reached: %.1f%% > %d%%", lp.vehicleSoc, lp.effectiveLimitSoc())
err = lp.disableUnlessClimater()
case lp.remoteControlled(loadpoint.RemoteHardDisable):
remoteDisabled = loadpoint.RemoteHardDisable
fallthrough
case mode == api.ModeOff:
err = lp.setLimit(0, true)
// immediate charging
// immediate charging- must be placed after limits are evaluated
case mode == api.ModeNow:
err = lp.fastCharging()
// minimum or target charging
case lp.minSocNotReached() || plannerActive:
err = lp.fastCharging()
lp.resetPhaseTimer()
lp.elapsePVTimer() // let PV mode disable immediately afterwards
case mode == api.ModeMinPV || mode == api.ModePV:
// cheap tariff
if autoCharge && lp.EffectivePlanTime().IsZero() {