diff --git a/vehicle/audi-etron.go b/vehicle/audi-etron.go index d418b6b34..3b16e3dbc 100644 --- a/vehicle/audi-etron.go +++ b/vehicle/audi-etron.go @@ -1,6 +1,7 @@ package vehicle import ( + "context" "time" "github.com/evcc-io/evcc/api" @@ -64,7 +65,11 @@ func NewEtronFromConfig(other map[string]interface{}) (api.Vehicle, error) { // use the etron API for list of vehicles api := etron.NewAPI(log, ats) - cc.VIN, err = ensureVehicle(cc.VIN, api.Vehicles) + cc.VIN, err = ensureVehicle(cc.VIN, func() ([]string, error) { + ctx, cancel := context.WithTimeout(context.Background(), cc.Timeout) + defer cancel() + return api.Vehicles(ctx) + }) if err == nil { api := id.NewAPI(log, its) diff --git a/vehicle/audi/etron/api.go b/vehicle/audi/etron/api.go index 30fb14268..ed5333e56 100644 --- a/vehicle/audi/etron/api.go +++ b/vehicle/audi/etron/api.go @@ -33,7 +33,7 @@ func NewAPI(log *util.Logger, ts oauth2.TokenSource) *API { } // Vehicles implements the /vehicles response -func (v *API) Vehicles() ([]string, error) { +func (v *API) Vehicles(ctx context.Context) ([]string, error) { type vehicle struct { VIN, Type, Nickname string } @@ -43,7 +43,7 @@ func (v *API) Vehicles() ([]string, error) { } var vins []string - err := v.client.Query(context.Background(), &res, nil) + err := v.client.Query(ctx, &res, nil) if err == nil { vins = funk.Map(res.UserVehicles, func(v vehicle) string { return v.VIN