diff --git a/core/coordinator/coordinator.go b/core/coordinator/coordinator.go index 3eee8dadb..d80ddbdb4 100644 --- a/core/coordinator/coordinator.go +++ b/core/coordinator/coordinator.go @@ -132,7 +132,9 @@ func (c *Coordinator) identifyVehicleByStatus(available []api.Vehicle) api.Vehic if vs, ok := vehicle.(api.ChargeState); ok { status, err := vs.Status() if err != nil { - c.log.ERROR.Println("vehicle status:", err) + if !loadpoint.AcceptableError(err) { + c.log.ERROR.Println("vehicle status:", err) + } continue } diff --git a/core/loadpoint.go b/core/loadpoint.go index a19366c75..f6d776d15 100644 --- a/core/loadpoint.go +++ b/core/loadpoint.go @@ -1466,7 +1466,7 @@ func (lp *Loadpoint) publishSocAndRange() { f, err := lp.socEstimator.Soc(lp.getChargedEnergy()) if err != nil { - if errors.Is(err, api.ErrMustRetry) { + if loadpoint.AcceptableError(err) { lp.socUpdated = time.Time{} } else { lp.log.ERROR.Printf("vehicle soc: %v", err) diff --git a/core/loadpoint/error.go b/core/loadpoint/error.go new file mode 100644 index 000000000..4fc7b267d --- /dev/null +++ b/core/loadpoint/error.go @@ -0,0 +1,11 @@ +package loadpoint + +import ( + "errors" + + "github.com/evcc-io/evcc/api" +) + +func AcceptableError(err error) bool { + return errors.Is(err, api.ErrAsleep) || errors.Is(err, api.ErrMustRetry) +} diff --git a/core/soc/estimator.go b/core/soc/estimator.go index db01b571a..e4c3aa00e 100644 --- a/core/soc/estimator.go +++ b/core/soc/estimator.go @@ -5,6 +5,7 @@ import ( "time" "github.com/evcc-io/evcc/api" + "github.com/evcc-io/evcc/core/loadpoint" "github.com/evcc-io/evcc/util" ) @@ -131,7 +132,7 @@ func (s *Estimator) Soc(chargedEnergy float64) (float64, error) { f, err := Guard(s.vehicle.Soc()) if err != nil { // required for online APIs with refreshkey - if errors.Is(err, api.ErrMustRetry) { + if loadpoint.AcceptableError(err) { return 0, err }