Mercedes: fix configured vehicle cannot be modified (#13812)

This commit is contained in:
andig 2024-05-09 18:11:23 +02:00 • committed by GitHub
parent 86b3207045
commit b2523b32a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 52 additions and 64 deletions

View file

@ -43,7 +43,7 @@ func mercedesPinPrompt() (string, error) {
}
func mercedesToken() (*oauth2.Token, error) {
// Get username and region from user to initate the email process
// Get username and region from user to initiate the email process
username, region, err := mercedesUsernameAndRegionPrompt()
if err != nil {
return nil, err
@ -55,17 +55,14 @@ func mercedesToken() (*oauth2.Token, error) {
return nil, err
}
if result {
pin, err := mercedesPinPrompt()
if err != nil {
return nil, err
}
token, err := api.RequestAccessToken(*nonce, pin)
if err == nil {
return token, nil
}
if !result {
return nil, errors.New("unknown PinResponse - 200, result empty")
}
return nil, errors.New("unknown PinResponse - 200, Email empty")
pin, err := mercedesPinPrompt()
if err != nil {
return nil, err
}
return api.RequestAccessToken(*nonce, pin)
}

View file

@ -4,56 +4,47 @@ products:
requirements:
description:
de: |
Die Konfiguration der Mercedes-Benz Integration nur im yaml Modus möglich.
Ablauf:
1. Hinzufügen der Konfiguration in die evcc.yaml (ohne Token)
```
vehicles:
- name: my_car
type: mercedes
account: # Mercedes Me Nutzer-Id (email)
region: # MB me Region (EMEA, APAC, NORAM)
vin: W... # Erforderlich, wenn mehr als ein Fahrzeug im Account registriert
capacity: 50 # Akkukapazität in kWh (optional)
```
2. Token Generierung: Ausführen von `./evcc token mercedes` oder `evcc token [name]`, wenn name gesetzt ist.
3. Einfügen der Tokens in die evcc.yaml
```
vehicles:
- name: my_car
type: mercedes
account: # Mercedes Me Nutzer-Id (email)
region: # MB me Region (EMEA, APAC, NORAM)
vin: W... # , wenn mehr als ein Fahrzeug im Account registriert
capacity: 50 # Akkukapazität in kWh (optional)
tokens:
access: token...
refresh: token...
```
Benötigt `access` und `refresh` Tokens. Diese können über den Befehl `evcc token [name]` generiert werden.
en: |
The configuration of the Mercedes-Benz integration is only possible in yaml mode.
Procedure:
1. add the configuration to evcc.yaml (without token)
```
vehicles:
- name: my_car
type: mercedes
account: # Mercedes Me user-Id (email)
region: # MB me region (EMEA, APAC, NORAM)
vin: W... # Required, if more then one car is registered in this account
capacity: 50 # capacity in kWh (optional)
```
2. Token generation: execute `./evcc token mercedes` or `evcc token [name]`, when name is defined
3. insert the tokens into evcc.yaml
```
vehicles:
- name: my_car
type: mercedes
account: # Mercedes Me user-id (email)
region: # MB me region (EMEA, APAC, NORAM)
vin: W... # Required, if more then one car is registered in this account
capacity: 50 # capacity in kWh (optional)
tokens:
access: token...
refresh: token...
```
Requires `access` and `refresh` tokens. These can be generated with command `evcc token [name]`.
params:
- name: title
- name: icon
default: car
advanced: true
- name: user
required: true
- name: region
required: true
validvalues: [EMEA, APAC, NORAM]
default: EMEA
- name: accessToken
required: true
mask: true
help:
en: "See https://docs.evcc.io/en/docs/devices/vehicles#mercedes"
de: "Siehe https://docs.evcc.io/docs/devices/vehicles#mercedes"
- name: refreshToken
required: true
mask: true
help:
en: "See https://docs.evcc.io/en/docs/devices/vehicles#mercedes"
de: "Siehe https://docs.evcc.io/docs/devices/vehicles#mercedes"
- name: vin
example: V...
- name: capacity
- name: phases
advanced: true
- preset: vehicle-identify
render: |
type: mercedes
title: {{ .title }}
icon: {{ .icon }}
user: {{ .user }}
tokens:
access: {{ .accessToken }}
refresh: {{ .refreshToken }}
capacity: {{ .capacity }}
phases: {{ .phases }}
vin: {{ .vin }}
{{ include "vehicle-identify" . }}