Skip to content

Commit

Permalink
Merge pull request #17679 from evcc-io/fix/repeating_plan_finished
Browse files Browse the repository at this point in the history
Repeating plan: finish behavior
  • Loading branch information
naltatis authored Dec 11, 2024
2 parents cb3dfb4 + fd1270c commit b0dc3b3
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
9 changes: 9 additions & 0 deletions core/loadpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -939,6 +939,15 @@ func (lp *Loadpoint) socBasedPlanning() bool {
return (v != nil && v.Capacity() > 0) && (lp.vehicleHasSoc() || lp.vehicleSoc > 0)
}

// repeatingPlanning returns true if the current plan is a repeating plan
func (lp *Loadpoint) repeatingPlanning() bool {
if !lp.socBasedPlanning() {
return false
}
_, _, id := lp.nextVehiclePlan()
return id > 1
}

// vehicleHasSoc returns true if active vehicle supports returning soc, i.e. it is not an offline vehicle
func (lp *Loadpoint) vehicleHasSoc() bool {
return lp.GetVehicle() != nil && !lp.vehicleHasFeature(api.Offline)
Expand Down
12 changes: 7 additions & 5 deletions core/loadpoint_plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ func (lp *Loadpoint) setPlanActive(active bool) {
}
}

// deletePlan deletes the charging plan, either loadpoint or vehicle
func (lp *Loadpoint) deletePlan() {
if !lp.socBasedPlanning() {
// finishPlan deletes the charging plan, either loadpoint or vehicle
func (lp *Loadpoint) finishPlan() {
if lp.repeatingPlanning() {
return // noting to do
} else if !lp.socBasedPlanning() {
lp.setPlanEnergy(time.Time{}, 0)
} else if v := lp.GetVehicle(); v != nil {
vehicle.Settings(lp.log, v).SetPlanSoc(time.Time{}, 0)
Expand Down Expand Up @@ -104,7 +106,7 @@ func (lp *Loadpoint) plannerActive() (active bool) {
// keep overrunning plans as long as a vehicle is connected
if lp.clock.Until(planTime) < 0 && (!lp.planActive || !lp.connected()) {
lp.log.DEBUG.Println("plan: deleting expired plan")
lp.deletePlan()
lp.finishPlan()
return false
}

Expand All @@ -117,7 +119,7 @@ func (lp *Loadpoint) plannerActive() (active bool) {
return true
}

lp.deletePlan()
lp.finishPlan()
return false
}

Expand Down

0 comments on commit b0dc3b3

Please sign in to comment.