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

Method updateChargerStatus

core/loadpoint.go:1142–1182  ·  view source on GitHub ↗

updateChargerStatus updates charger status and detects car connected/disconnected events

()

Source from the content-addressed store, hash-verified

1140
1141// updateChargerStatus updates charger status and detects car connected/disconnected events
1142func (lp *Loadpoint) updateChargerStatus() (bool, error) {
1143 statusChanges, err := lp.getStatusChanges()
1144 if err != nil || len(statusChanges) == 0 {
1145 return false, err
1146 }
1147
1148 var welcomeCharge bool
1149
1150 for _, status := range statusChanges {
1151 prevStatus := lp.GetStatus()
1152 lp.setStatus(status)
1153
1154 for _, ev := range statusEvents(prevStatus, status) {
1155 lp.bus.Publish(ev)
1156
1157 // send connect/disconnect events except during startup
1158 if prevStatus != api.StatusNone {
1159 switch ev {
1160 case evVehicleConnect:
1161 // defer notification until vehicle detection settles
1162 lp.connectPending = true
1163 welcomeCharge = lp.needsWelcomeCharge()
1164 case evVehicleDisconnect:
1165 // a still-pending connect means the vehicle disconnected before
1166 // its notification was confirmed; omit both connect and disconnect
1167 if lp.connectPending {
1168 lp.connectPending = false
1169 } else {
1170 lp.pushEvent(evVehicleDisconnect)
1171 }
1172 welcomeCharge = false
1173 }
1174 }
1175 }
1176 }
1177
1178 // update whenever there is a state change
1179 lp.bus.Publish(evChargeCurrent, lp.offeredCurrent)
1180
1181 return welcomeCharge, nil
1182}
1183
1184// getStatusChanges checks charger status and returns a chronological list of status changes
1185func (lp *Loadpoint) getStatusChanges() ([]api.ChargeStatus, error) {

Callers 2

UpdateMethod · 0.95

Calls 7

getStatusChangesMethod · 0.95
GetStatusMethod · 0.95
setStatusMethod · 0.95
needsWelcomeChargeMethod · 0.95
pushEventMethod · 0.95
statusEventsFunction · 0.85
PublishMethod · 0.65

Tested by 1