Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Mercedes #2259

Merged
merged 46 commits into from
Jan 21, 2022
Merged

Add Mercedes #2259

merged 46 commits into from
Jan 21, 2022

Conversation

xantalor
Copy link
Contributor

@xantalor xantalor commented Jan 10, 2022

Fix #731

First draft to handle authorization code flow for the mercedes API.

image

Login button disappears after ~5 seconds after login, could/should be improved.
Vehicle SoC is fetched after Login and switching the mode to "now".

image

Rudimentary logout is possible, MB does not provide an SSO logout. Therefore only the backend can forget the current token and the user has to clear the browser cache.

TODO

  • merge master into branch!
  • long-term test to ensure refresh is also working properly
  • make the callback dynamic -> remove 'mercedes' - new PR?
  • make the callback work for multiple vehicles of the same type - new PR?
  • check smart idp

@andig andig changed the title Feature/mercedes2 Add Mercedes Jan 10, 2022
internal/vehicle/mercedes.go Outdated Show resolved Hide resolved
internal/vehicle/mercedes.go Outdated Show resolved Hide resolved
internal/vehicle/mercedes/api.go Outdated Show resolved Hide resolved
internal/vehicle/mercedes/types.go Outdated Show resolved Hide resolved
@andig andig added the enhancement New feature or request label Jan 11, 2022
api/api.go Outdated Show resolved Hide resolved
assets/js/components/Vehicle.vue Outdated Show resolved Hide resolved
assets/js/components/Vehicle.vue Outdated Show resolved Hide resolved
assets/js/components/Vehicle.vue Outdated Show resolved Hide resolved
cmd/config.go Outdated Show resolved Hide resolved
internal/vehicle/mercedes/identity.go Outdated Show resolved Hide resolved
internal/vehicle/mercedes/identity.go Outdated Show resolved Hide resolved
internal/vehicle/mercedes/state.go Outdated Show resolved Hide resolved
internal/vehicle/mercedes/types.go Outdated Show resolved Hide resolved
internal/vehicle/tokens.go Outdated Show resolved Hide resolved
@xantalor xantalor marked this pull request as draft January 11, 2022 19:00
core/loadpoint.go Outdated Show resolved Hide resolved
@andig
Copy link
Member

andig commented Jan 18, 2022

PR auf "Ready for review"?

@xantalor xantalor marked this pull request as ready for review January 18, 2022 13:09
@xantalor
Copy link
Contributor Author

Reworked login flow by introducing a common login menu, which displays the not logged in providers as a badge.

image

image

@andig
Copy link
Member

andig commented Jan 21, 2022

Sehr schick! Merge?!

@xantalor
Copy link
Contributor Author

Its up to you guys :)

vehicle/mercedes/identity.go Outdated Show resolved Hide resolved
assets/js/views/App.vue Outdated Show resolved Hide resolved
assets/js/views/App.vue Outdated Show resolved Hide resolved
Copy link
Member

@naltatis naltatis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xantalor Ich hab noch ein paar Code-Style Dinge drangeschrieben. Sonst passt das aber von mir.

@xantalor
Copy link
Contributor Author

@naltatis Danke für die Vorschläge :) sind schon eingebaut.

@andig andig merged commit 55892d5 into master Jan 21, 2022
@andig andig deleted the feature/mercedes2 branch January 21, 2022 15:56
@andig
Copy link
Member

andig commented Jan 21, 2022

KLASSE!!! Riesenleistung!

andig pushed a commit that referenced this pull request Jan 21, 2022
@muelmark
Copy link

Danke @xantalor für die Entwicklung. Wäre supergut, wenn noch eine Beispielkonfiguration dokumentiert werden könnte? Ggf. in https://github.com/evcc-io/config#vehicles , wenn ich das richtig verstanden habe soll auf der Web Oberfläche noch einen "Login" Menüpunkt ergänzt werden. Any news? Kann leider nur anbieten, dass ich die Dokumentation dann als dummer User dann teste. Sorry.

@andig
Copy link
Member

andig commented Feb 20, 2022

@muelmark Du brauchst:

	cc := struct {
		embed                  `mapstructure:",squash"`
		ClientID, ClientSecret string
		VIN                    string
		Cache                  time.Duration
	}{
		Cache: interval,
	}

Also normale Fahrzeugconfig plus ClientID, ClientSecret. Der Redirect erfolgt auf evcc uri + /oauth.

@muelmark
Copy link

muelmark commented Feb 20, 2022

Danke für Deine schnelle Antwort.

(1) Wenn ich das richtig verstanden habe muss die Callback URL von "aussen" erreichbar sein. Korrekt?
(2) Muss die Callback URL auch in developer.mercedes-benz.com eingetragen sein?

image

Dann Änderung siehe oben nach deinem Kommentar - auszug aus evcc.yaml
vehicles:

  • name: mercedes
    type: mercedes
    title: EQC
    vin: W1K29xxxxxxxxxxxx
    clientId: f8bac950-a97b-4427-995a-xxxxxxxxxxxx
    clientSecret: eCdGefmkcebmdfkrMxsumNiaYhyLszioOJqaSqAWLNHuBjLJeSvVxxxxxxxxxxx

Kommt folgender Fehler hoch:
[lp-1 ] ERROR 2022/02/20 15:29:31 vehicle soc: Get "https://api.mercedes-benz.com/vehicledata/v2/vehicles/W1K29xxxxxxxxxxxx/resources/soc": oauth2: token expired and refresh token is not set

Im WebUI kommt dann auch der Anmeldebutton hoch.
image

Einmal gedrückt kommt erscheint folgende Fehlermeldung.
image

Ich denke das ist noch ein Konfigurationsfehler, irgendwas noch falsch konfiguiert, oder?

@andig
Copy link
Member

andig commented Feb 20, 2022

(1) Wenn ich das richtig verstanden habe muss die Callback URL von "aussen" erreichbar sein. Korrekt?

Nein. Den "Redirect" macht der Browser (auf Veranlassung von MB an die konfigurierte Adresse) - es kommt nur darauf an, dass der Browser die URL korrekt auf evcc auflösen kann.

(2) Muss die Callback URL auch in developer.mercedes-benz.com eingetragen sein?

S.o.- ja klar!

Einmal gedrückt kommt erscheint folgende Fehlermeldung.

Kommst Du denn von der MB Anmeldung wieder zurück auf die EVCC Oberfläche? Deine Config sieht prinzipiell richtig raus...

@andig
Copy link
Member

andig commented Feb 22, 2022

@muelmark hat das für Dich geklappt? Falls nein mach gerne nochmal eine neue Discussion auf, hier im PR gehen die Fragen unter.

@muelmark
Copy link

Erst heute dazugekommen -> #2724

dontbyte pushed a commit to dontbyte/evcc that referenced this pull request Aug 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add Mercedes api
4 participants