MCPcopy Create free account
hub / github.com/evcc-io/evcc / evVehicleDisconnectHandler

Method evVehicleDisconnectHandler

core/loadpoint.go:572–630  ·  view source on GitHub ↗

evVehicleDisconnectHandler sends external start event

()

Source from the content-addressed store, hash-verified

570
571// evVehicleDisconnectHandler sends external start event
572func (lp *Loadpoint) evVehicleDisconnectHandler() {
573 lp.log.INFO.Println("car disconnected")
574
575 // re-read energy from charger and re-persist session if values improved
576 lp.finalizeSessionEnergy()
577
578 // re-read odometer to catch delayed update (#30225)
579 lp.vehicleOdometer()
580
581 // session is persisted during evChargeStopHandler which runs before
582 lp.clearSession()
583
584 // clear locked plan goal on disconnect
585 lp.clearPlanLock()
586
587 // phases are unknown when vehicle disconnects
588 lp.ResetMeasuredPhases()
589
590 // energy and duration
591 lp.energyMetrics.Publish("session", lp)
592 lp.publish(keys.ChargedEnergy, lp.GetChargedEnergy())
593 lp.publish(keys.ConnectedDuration, lp.clock.Since(lp.connectedTime).Round(time.Second))
594
595 // charge status
596 lp.publish(keys.ChargerStatusReason, api.ReasonUnknown)
597
598 // forget startup energy offset
599 lp.chargedAtStartup = 0
600
601 // remove charger vehicle id and stop potential detection
602 lp.setVehicleIdentifier("")
603 lp.stopVehicleDetection()
604
605 // set default mode on disconnect
606 // skip for integrated devices: the "disconnect" here is just the socket
607 // being switched off, not a vehicle being unplugged - keep the user's mode (#30187)
608 if !lp.chargerHasFeature(api.IntegratedDevice) {
609 lp.defaultMode()
610 }
611
612 // set default vehicle (may be nil)
613 lp.setActiveVehicle(lp.defaultVehicle)
614
615 // soc update reset
616 lp.socUpdated = time.Time{}
617
618 // boost
619 if err := lp.SetBatteryBoost(false); err != nil {
620 lp.log.ERROR.Printf("battery boost: %v", err)
621 }
622
623 // reset session
624 lp.SetLimitSoc(0)
625 lp.SetLimitEnergy(0)
626
627 // mark plan slot as inactive
628 // this will force a deletion of an outdated plan once plan time is expired in GetPlan()
629 lp.setPlanActive(false)

Callers 2

TestDefaultVehicleFunction · 0.95

Calls 15

finalizeSessionEnergyMethod · 0.95
vehicleOdometerMethod · 0.95
clearSessionMethod · 0.95
clearPlanLockMethod · 0.95
ResetMeasuredPhasesMethod · 0.95
publishMethod · 0.95
GetChargedEnergyMethod · 0.95
setVehicleIdentifierMethod · 0.95
stopVehicleDetectionMethod · 0.95
chargerHasFeatureMethod · 0.95
defaultModeMethod · 0.95
setActiveVehicleMethod · 0.95

Tested by 2

TestDefaultVehicleFunction · 0.76