Skoda: fix retrieving list of vehicles (#9698)

This commit is contained in:
andig 2023-09-03 14:03:17 +02:00 • committed by GitHub
parent 5b994e729e
commit c3ceaab8f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 12 deletions

View file

@ -14,6 +14,16 @@ type embed struct {
OnIdentify api.ActionConfig `mapstructure:"onIdentify"`
}
// Title implements the api.Vehicle interface
func (v *embed) fromVehicle(title string, capacity float64) {
if v.Title_ == "" {
v.Title_ = title
}
if v.Capacity_ == 0 {
v.Capacity_ = capacity
}
}
// Title implements the api.Vehicle interface
func (v *embed) Title() string {
return v.Title_

View file

@ -50,7 +50,7 @@ func NewEnyaqFromConfig(other map[string]interface{}) (api.Vehicle, error) {
var err error
log := util.NewLogger("enyaq").Redact(cc.User, cc.Password, cc.VIN)
// use Skoda credentials to resolve list of vehicles
// use Skoda api to resolve list of vehicles
ts, err := service.TokenRefreshServiceTokenSource(log, skoda.TRSParams, skoda.AuthParams, cc.User, cc.Password)
if err != nil {
return nil, err
@ -66,11 +66,8 @@ func NewEnyaqFromConfig(other map[string]interface{}) (api.Vehicle, error) {
},
)
if v.Title_ == "" {
v.Title_ = vehicle.Name
}
if v.Capacity_ == 0 {
v.Capacity_ = float64(vehicle.Specification.Battery.CapacityInKWh)
if err == nil {
v.fromVehicle(vehicle.Name, float64(vehicle.Specification.Battery.CapacityInKWh))
}
// use Connect credentials to build provider

View file

@ -51,20 +51,38 @@ func NewSkodaFromConfig(other map[string]interface{}) (api.Vehicle, error) {
log := util.NewLogger("skoda").Redact(cc.User, cc.Password, cc.VIN)
trs := tokenrefreshservice.New(log, skoda.TRSParams)
ts, err := service.MbbTokenSource(log, trs, skoda.AuthClientID, skoda.AuthParams, cc.User, cc.Password)
// use Skoda api to resolve list of vehicles
ts, err := service.TokenRefreshServiceTokenSource(log, skoda.TRSParams, skoda.AuthParams, cc.User, cc.Password)
if err != nil {
return nil, err
}
api := vw.NewAPI(log, ts, skoda.Brand, skoda.Country)
api := skoda.NewAPI(log, ts)
api.Client.Timeout = cc.Timeout
cc.VIN, err = ensureVehicle(cc.VIN, api.Vehicles)
vehicle, err := ensureVehicleEx(
cc.VIN, api.Vehicles,
func(v skoda.Vehicle) string {
return v.VIN
},
)
if err == nil {
if err = api.HomeRegion(cc.VIN); err == nil {
v.Provider = vw.NewProvider(api, cc.VIN, cc.Cache)
v.fromVehicle(vehicle.Name, float64(vehicle.Specification.Battery.CapacityInKWh))
}
if err == nil {
trs := tokenrefreshservice.New(log, skoda.TRSParams)
ts, err := service.MbbTokenSource(log, trs, skoda.AuthClientID, skoda.AuthParams, cc.User, cc.Password)
if err != nil {
return nil, err
}
api := vw.NewAPI(log, ts, skoda.Brand, skoda.Country)
api.Client.Timeout = cc.Timeout
if err = api.HomeRegion(vehicle.VIN); err == nil {
v.Provider = vw.NewProvider(api, vehicle.VIN, cc.Cache)
}
}