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

BMW/Mini api broken #17332

Open
1 task done
Marc2480 opened this issue Nov 18, 2024 · 58 comments
Open
1 task done

BMW/Mini api broken #17332

Marc2480 opened this issue Nov 18, 2024 · 58 comments
Labels
bug Something isn't working vehicles Specific vehicle support

Comments

@Marc2480
Copy link

Marc2480 commented Nov 18, 2024

Describe the bug

Just updated to 0.131.6 and the car shows as disconnected, didn't change anything in the yaml config, has been working seamlessly in many previous builds ...

Steps to reproduce

...

Configuration details

vehicles:
- type: template
  template: bmw 
  title: BMW i4M50  
  user: ***** 
  password: ******
  vin: ****** 
  capacity: 80  
  name: ev2

Log details

[main ] INFO 2024/11/18 16:40:48 evcc 0.131.6
[main ] INFO 2024/11/18 16:40:48 using config file: /etc/evcc.yaml
[db ] INFO 2024/11/18 16:40:48 using sqlite database: /var/lib/evcc/evcc.db
[main ] INFO 2024/11/18 16:40:48 listening at :7070
[alfen ] DEBUG 2024/11/18 16:40:49 detected 1p alfen
[main ] ERROR 2024/11/18 16:40:49 creating vehicle ev2 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method): unexpected status: 401 (Unauthorized)

What type of operating system are you running?

Linux

Nightly build

  • I have verified that the issue is reproducible with the latest nightly build

Version

0.131.6

@mikeungers
Copy link

mikeungers commented Nov 18, 2024

Same for me...
Downgrade to 0.131.5 not helps in my case.
Maybe some API change from BMW?

@Marc2480
Copy link
Author

also tried to downgrade ... no fix ...

logged in to my bmw garage to verify if my credentials are still ok, login is ok ...

@andig andig added the vehicles Specific vehicle support label Nov 18, 2024
@andig
Copy link
Member

andig commented Nov 18, 2024

also tried to downgrade ... no fix ...

Also hat BMW etwas geändert. Was? Funktionier ioBroker?

@sfranzis
Copy link

Same for me with an i3.
I updated on Saturday to 0.131.6 and then everything was fine.
Today I restarted because of config change and now I get http 401 from BMW api.

@mfuchs1984
Copy link
Contributor

mfuchs1984 commented Nov 18, 2024

Same issues with our BMW i4. But it is not related to the EVCC update since 3 hours ago, it worked.

Home assistant integration reports the same error

Logger: bimmer_connected.api.authentication
Quelle: components/bmw_connected_drive/config_flow.py:60
Erstmals aufgetreten: 21:01:04 (2 Vorkommnisse)
Zuletzt protokolliert: 21:01:42

MyBMWAuthError due to HTTPStatusError: invalid_client - Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method)

My BMW app works.

@mfuchs1984
Copy link
Contributor

mfuchs1984 commented Nov 18, 2024

See bimmerconnected/bimmer_connected#671

According to this and
home-assistant/core#128598 (comment), a captcha is now needed for the first login. After this, a token can be used.

Was already needed for a while in North America
home-assistant/core#129667
bimmerconnected/bimmer_connected#665

@SEFNSRL
Copy link

SEFNSRL commented Nov 19, 2024

Ich habe auch nach dem Update auf. 0.131.6 Probleme mit unserem MINI. Downgrade hat ebenfalls nicht funktioniert.

@sfranzis
Copy link

Ich habe auch nach dem Update auf. 0.131.6 Probleme mit unserem MINI. Downgrade hat ebenfalls nicht funktioniert.

Es liegt nicht am Update. BMW hat die API bzw den Login-Prozess geändert.

@Expalmi
Copy link

Expalmi commented Nov 19, 2024

Meine beiden, iX3 und Cooper SE, werden auch nicht mehr erkannt.

Seit kurzem erlaubt BMW bei den Autos mit OS7 das einrichten von Mitbenutzern, vorher ging nur ein Benutzer. Evtl. wurde daher der Login Vorgang angepasst.

@SEFNSRL
Copy link

SEFNSRL commented Nov 19, 2024

Ich habe auch nach dem Update auf. 0.131.6 Probleme mit unserem MINI. Downgrade hat ebenfalls nicht funktioniert.

Es liegt nicht am Update. BMW hat die API bzw den Login-Prozess geändert.

War bei mir wohl eher ein Zusammentreffen von 2 Ereignissen ich mache ein Update und BMW ändert die Anmeldung. Danke für die Rückmeldung.

@docolli
Copy link
Contributor

docolli commented Nov 19, 2024

Bin auch schon auf 0.131.6, aber als ich eben evcc auf meinen iX2 umgestellt habe, hat evcc korrekt den SOC des Autos angezeigt.

[bmw ] TRACE 2024/11/19 09:15:53 POST https://customer.bmwgroup.com/gcdm/oauth/token
[bmw ] TRACE 2024/11/19 09:15:54 grant_type=refresh_token&redirect_uri=com.bmw.connected%3A%2F%2Foauth&refresh_token=*** -- {"gcid":"***,"token_type":"Bearer","access_token":"***","refresh_token":"***","scope":"smacc vehicle_data perseus dlm svds openid profile vsapi remote_services authenticate_user cesim offline_access email fupo","expires_in":3599,"id_token":"***"} 

vehicle ist ganz normal mit template: bmw in evcc.yaml definiert.

@sfranzis
Copy link

Bin auch schon auf 0.131.6, aber als ich eben evcc auf meinen iX2 umgestellt habe, hat evcc korrekt den SOC des Autos angezeigt.

vehicle ist ganz normal mit template: bmw in evcc.yaml definiert.

dann evcc erstmal nicht neustarten ;-)

@RampyLou
Copy link

Same here, app still working, login on pc BMW ID not possible to login

@RobertSchuster
Copy link

Email from this morning to BMW:

Liebes BMW-Team,

davon abgesehen, dass die Bonner BMW-Niederlassung eine derart unterirdische Service-Performance in Bezug auf Termintreue, Freundlichkeit und Dienstleistungsverständnis an den Tag legt, dass ich mir weitere Besuche ersparen möchte, scheint auch BMW an sich noch nicht ganz verstanden zu haben was „vernetztes Fahren“ eigentlich bedeutet.
Ständige Ausfälle und Kommunikationsprobleme mit der Cloud erschweren oder verhindern gar Überschussladen an der heimischen PV-Anlage. Der Fehler ist immer an der selben Stelle zu suchen und auch zu Finden – bei der Verbindung der eigenen Technik mit der BMW-Cloud.
Seit gestern scheint man den Vogel abgeschossen und das API-Login defacto deaktiviert zu haben.

Auszug aus dem Trace-Log:
[bmw ] TRACE 2024/11/19 07:44:35 POST https://customer.bmwgroup.com/gcdm/oauth/authenticate
[bmw ] TRACE 2024/11/19 07:44:35 client_id=31c357a0-7a1d-4590-aa99-33b97244d048&code_challenge=XNzsmCcGkwUrqP6-6OGwRixi3xVx39if9Dmv9x8kJeE&code_challenge_method=S256&grant_type=authorization_code&nonce=login_nonce&password=***&redirect_uri=com.bmw.connected%3A%2F%2Foauth&response_type=code&scope=openid+profile+email+offline_access+smacc+vehicle_data+perseus+dlm+svds+cesim+vsapi+remote_services+fupo+authenticate_user&state=cEG9eLAIi6Nv-aaCAniziE_B6FPoobva3qr5gukilYw&username=*** -- {"error": "invalid_client", "error_description": "Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method)"}
[main ] ERROR 2024/11/19 07:44:35 creating vehicle bmw failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method): unexpected status: 401 (Unauthorized)

Nach meinen ersten Untersuchungen der Logs ist jetzt vor dem Login ein Captcha geschaltet.
Wer zur Hölle kommt auf eine solch irrsinnige Idee beim Login-Prozess einer Automatisierungsschnittstelle eine nur mit menschlicher Intelligenz zu lösende Sicherheitsfrage voranzustellen? Sind Eure Programmierer irre, oder einfach nur unfähig?

Gib es irgendeine Idee, wann die API in einer stabilen, nutzbaren Version wieder zu Verfügung steht, oder hat man einfach kein Interesse an zufriedenen Kunden?
Die Hoffnung, dass die BMW-Niederlassungen noch jemals kapieren, dass das Dienstleistungsgeschäft eine Kombination von Dienen und Leisten ist, habe ich eh schon aufgegeben. Vielleicht gilt da der Grundsatz – wer nicht mit der Zeit geht, geht mit der Zeit…

Viele Grüße
Robert Schuster

Of course, BMW doesn't know anything like an acknowledgement of receipt or the allocation of a ticket number that you could refer to.
So I called them this afternoon and asked for help in the "Connected Drive" department.
At least the very friendly lady on the phone understood my request and wants to take care of the matter - that is to say, pass it on.
We'll see...

@Expalmi
Copy link

Expalmi commented Nov 19, 2024

Ich habe eine ähnliche Frage an den Support gerichtet, wenn ich eine Antwort bekomme, melde ich mich.

@andig
Copy link
Member

andig commented Nov 19, 2024

Seit gestern scheint man den Vogel abgeschossen und das API-Login defacto deaktiviert zu haben.

Ich fürchte Du hast da falsche Vorstellungen. Es gibt kein "API" sondern nur reverse- engineerte Aufrufe die jemand der BMW App entlockt hat. Der erste Schritt für BMW wäre, überhaupt mal eine Schnittstelle offiziell anzubieten...

@RobertSchuster
Copy link

He he, dann müssen sie mir eben das mal erklären...
Mir geht es erstmal darum den Pfeifen irgendein Statement zu entlocken. Was das Captcha betrifft, so wundert mich, dass ich mich sowohl auf der Website als auch in der App ohne dieses anmelden kann.

Hätte ich von einer derartigen Ignoranz seitens BMW vorher eine Ahnung gehabt, wäre bei mir der Reiz des i3s deutlich weniger ausgeprägt gewesen.Aber man ist ja lernfähig.
Never ever again...

@Marc2480
Copy link
Author

I do believe there's some kind of API available.

I had been using this app called EEVEE to get charging overviews of my BMW (before the MyBMW app had this kind of functionality) and I recall I had to authorize this app to allow collecting data from BMW. (I revoked this permission when I uninstalled the app)

I had a look, and they even have a step-by-step guide for their process :

https://intercom.help/eevee-mobility/en/articles/5785086-connect-bmw

Maybe this can be of interest ...

Marcher

@SEFNSRL
Copy link

SEFNSRL commented Nov 19, 2024

Ich hatte heute auch beim Telefon Support angerufen, die wussten da noch nicht einmal, was ein Captcha ist. Das Problem wird an die zuständige Abteilung weitergeleitet.

@mikeungers
Copy link

Es gibt kein "API" sondern nur reverse- engineerte Aufrufe die jemand der BMW App entlockt hat. Der erste Schritt für BMW wäre, überhaupt mal eine Schnittstelle offiziell anzubieten...

Es gibt doch diese BMW "Cardata" API.
Allerdings muss man da meines Verständnis nach als "3rd Party" einen Account anlegen, sein Programm/App/Whatever registrieren und kann dann tokens nach Zustimmung des BMW Fahrers erhalten.

Aber das ist für eine selbst gehostete Lösung wie evcc wahrscheinlich nicht praktikabel.

@twixfix
Copy link

twixfix commented Nov 19, 2024

https://bmw-cardata.bmwgroup.com/thirdparty/public/car-data/technical-configuration/api-documentation

Die Seite wurde letzte Woche aktualisiert. Keine Ahnung ob das irgendwie hilfreich ist.

@TinkerBarn
Copy link

TinkerBarn commented Nov 19, 2024

In dem BMW Adapter von TA2k für iobroker wurde bereits gestern Abend das Problem mit dem Captcha und Token gelöst.
Vielleicht hilft das hier etwas für eine Lösung in EVCC
TA2k/ioBroker.bmw#71

@schweiger2
Copy link

Ich setze auch den ioBroker ein und nutze den BMW Connected Drive Adapter.

Mit der Version 2.8.3 des Adapters, der das Captcha integriert, funktioniert der Adapter wieder.

Sieht so aus:

BMW ConnDrive iobroker

@andig andig added the bug Something isn't working label Nov 20, 2024
@SEFNSRL
Copy link

SEFNSRL commented Nov 21, 2024

Eine Übergangslösung wäre vielleicht, die Daten (bei mir iobroker) per MQTT vom BMW Adapter an EVCC zu übertragen. Vielleicht hilft das dem ein oder anderen User, um das Ladelimit weiter nutzen zu können. Zur Übersichtlichkeit sendet ein Blockly-Skript die Daten bei mir vorher vom BMW-Adapter in den EVCC-Ordner.

Screenshot 2024-11-21 040025

name: mini
type: custom
title: MINI # display name for UI
capacity: 28.9 # kWh
soc: # battery soc (%)
source: mqtt
topic: evcc_meters/mini_soc
range: # optional electric range (km)
source: mqtt
topic: evcc_meters/mini_range

@JensPrange
Copy link

Ich habe das gleiche Problem.

ERROR 2024/11/21 10:50:57 creating vehicle i4 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method): unexpected status: 401 (Unauthorized)
WARN 2024/11/21 10:50:58 vehicle 'BMW i4' does not support automatic detection

LG
Jens

@OlliLu

This comment was marked as off-topic.

@andig andig changed the title BMW disconnected after update BMW/Mini api broken Nov 21, 2024
@sakadmin
Copy link

Guten Tag und vielen Dank für Ihre Nachricht. Um die Sicherheit Ihres Kontos zu erhöhen, wurde vor kurzem die Captcha zur Autorisierung hinzugefügt. Dies kann leider nicht deaktiviert werden.

Das ist die Antwort von BMW :(

@holgerscheller
Copy link

Bisher habe ich evcc ganz bequem auf einem raspberryPi zero laufen lassen können. Ich verstehe die Abneigung gegen eine captcha Integration, aber gibt es keine schlankeren Alternativen als den iobroker-Ansatz. Der wird auf meine raspberryPi nicht laufen.
Wünschte auch BMW würde sich hier professioneller aufstellen, aber wenn nichtmal die Kontakt-Email Adresse erreichbar ist, scheint das ja auf absehbare Zeit nicht die Lösung zu sein.

@apollon9
Copy link

apollon9 commented Nov 21, 2024

Captcha in https://bimmer-connected.readthedocs.io/en/stable/captcha.html lösen und dann in die evcc Config einbauen geht nicht? (untested)

@docolli
Copy link
Contributor

docolli commented Nov 21, 2024

We will not implement any kind of captcha integration.

We've applied for the official BMW car data api (https://bmw-cardata.bmwgroup.com/thirdparty/public/home). Worth nothing that the BMW email address is rejected by their server: B2BSupport@bmwgroup.com. Lets see what happens (https://bmw-cardata.bmwgroup.com/thirdparty/public/dsa-info).

The other thing we could do is to provide an integration with any of the working open source solutions. Seems ioBroker is working. Happy to take a PR for an ioBroker (or any other integration) custom vehicle.

grafik
Das stimmt mich nicht hoffnungsfroh. CarData ist laut BMW Webpage für Firmen gedacht, die BMW dafür bezahlen die Daten zu bekommen, wenn diese der Besitzer des Fahrzeugs für diese Firma freigibt. Selbst wenn evcc dort registriert wird und wir evcc erlauben die Daten zu bekommen, müsste evcc BMW dafür bezahlen. 😟

@apollon9
Copy link

Es soll ja auch kein captcha Bilderrätsel eingebaut werden sondern nur der refresh-Token, der einmalig mittels Bilderrätsel auf der bimmer-connected Dok Seite zu generieren ist. Falls das so funktioniert.

@docolli
Copy link
Contributor

docolli commented Nov 21, 2024

Captcha in https://bimmer-connected.readthedocs.io/en/stable/captcha.html lösen und dann in die evcc Config einbauen geht nicht? (untested)

So was ähnliches wird doch schon für die Integration von Mercedes Fahrzeugen in evcc gemacht; #12581
Könnte man das Konzept auch auf die BMW Integration ausdehnen?

@docolli
Copy link
Contributor

docolli commented Nov 21, 2024

Zur Info: Ich nutze zusätzlich bimmerconnected auf meinem Raspi zur Integration in FHEM.

Das Kommandozeilentool funktioniert bei mir immer noch ohne Probleme !
Ich kenn die Funktionsweise nicht genau, aber holt das einen Token von BMW und nutzt dieses dann für den Zugriff? Ich habe bislang kein Token über die Webseite generiert, aber eventuell hat bimmerconnected das für mich getan. Ich nutze als region "rest_of_world".
Den CLI Aufruf mache ich über die VIN und die Zugangsdaten. Keine Referenz zu einem Token.

@LIon6432
Copy link

Mal eine vielleicht verrückte Idee für eine schnelle Lösung:
Schritt 1: Gibt es eine Möglichkeit die Captcha-Anmeldung jeweils für den eigenen Login in der BMW App absichtlich herbeizuführen?
Schritt 2( Falls Schritt 1 erfolgreich): Könnte es sein, dass anschliessend der Login ohne Captcha bei evcc (erstmal wieder für einige Zeit) wieder funktioniert?

@Solarer69
Copy link

BMW bietet auch OAuth2 an. Die Schnittstelle wäre auch in bimmer_connected dokumentiert. Damit kann man sich wohl um das Captcha herum manövrieren.
Ich bin aber auch nur "Anwender "... und war bis jetzt froh, dass alles läuft...
Habe natürlich das identische Problem mit meinem iX3.

@andig
Copy link
Member

andig commented Nov 21, 2024

Wie gesagt: wir können gerne ein Template für irgendeine funktionierende Integration aufnehmen (welche?). Gerne PR.

Da unsere Zeit besser investiert ist als API zu reverse-engineeren die vom Hersteller jederzeit abgeschaltet werden können (Skoda hat das angekündigt, Tesla hat es getan) versuchen wir lieber den offiziellen Weg der Hersteller zu gehen. Dabei lässt uns übrigens Volvo trotzanderweitiger Zusagen gerade komplett hängen.

Bei BMW hat jetzt schonmal die Registrierung geklappt, es besteht also Hoffnung...

@privat99
Copy link

Danke für Eure Hilfe. Sicherlich wird eine Lösung gefunden.

@GrimmiMeloni
Copy link
Collaborator

BMW bietet auch OAuth2 an. Die Schnittstelle wäre auch in bimmer_connected dokumentiert. Damit kann man sich wohl um das Captcha herum manövrieren.

Kannst Du mal Code dazu verlinken?

OAuth(2) gibt nicht vor, wie der User Agent die Credentials holt. Daher spielt das erstmal keine Rolle. Aber vielleicht sind in dem bimmer_connected noch ein paar Params oder ähnliches die wir abschauen können. Wenn das System halbwegs schlau ist, sollte es z.B. bei einem headless client keine Seite mit einem Captcha zwischenschalten. Ist aber alles pure Theorie, was sie wirklich gebaut haben muß man sehen. Wenn es tatsächlich noch einen CLI basierten weg gibt, die Tokens von BMW zu bekommen können wir diesen Nachbauen.

@LIon6432
Copy link

Wie gesagt: wir können gerne ein Template für irgendeine funktionierende Integration aufnehmen (welche?). Gerne PR.

Da unsere Zeit besser investiert ist als API zu reverse-engineeren die vom Hersteller jederzeit abgeschaltet werden können (Skoda hat das angekündigt, Tesla hat es getan) versuchen wir lieber den offiziellen Weg der Hersteller zu gehen. Dabei lässt uns übrigens Volvo trotzanderweitiger Zusagen gerade komplett hängen.

Bei BMW hat jetzt schonmal die Registrierung geklappt, es besteht also Hoffnung...

Bezüglich "lieber den offiziellen Weg der Hersteller gehen", habe ich die folgende Erfahrung gemacht und zwar mit der (Drittanbieter-Lösung) Tronity. Die App hat mich eigentlich weniger interessiert, aber die offizielle Datenschnittstelle für meinen BMW i3S. Dort musste ich dann erstmal zustimmen bei bmw_connected, alles gut. Nur dass ich dann während der Testphase (im Mai 2024) feststellen musste, dass während einer laufenden Aufladung, der SoC zwar in der BMWApp aktualisiert wurde, jedoch nicht über die offizielle Schnittstelle. Die Entwickler von Tronity haben mir dann mitgeteilt, dass dieses Problem nicht bei Tronity liegt, sondern bei BMW, neuere Fahrzeuge sollen da keine Unterschiede zeigen. BMW legt es anscheinend darauf an, die eigene App besser aussehen zu lassen und bei der offiziellen Datenschnittstelle, für die ja sogar (hier von Tronity) Geld kassiert wird, Nachteile zu schaffen, wie eben, den SoC nur vor und nach der Ladung zu aktualisieren. Ladung auf einen Zielwert funktioniert so natürlich nicht vernünftig.
Bei einer Zufriedenheitsbefragung nach einem Werkstattbesuchhabe ich mich massiv darüber beschwert, in dem Telefongespräch hat es fast 1 Stunde gedauert, bis am anderen Ende der Leitung verstanden wurde um was es eigentlich geht. Weitere Reaktionen seitens BMW gab es nicht. Also, das nächste Mal eine andere Marke kaufen!!!

@andig
Copy link
Member

andig commented Nov 21, 2024

Also, das nächste Mal eine andere Marke kaufen!!!

Am Ende ist das so. Ich kann aber gerne mal versuchen, den Entwicklersupport auf das Thema zu stossen.

@Solarer69
Copy link

BMW bietet auch OAuth2 an. Die Schnittstelle wäre auch in bimmer_connected dokumentiert. Damit kann man sich wohl um das Captcha herum manövrieren.

Kannst Du mal Code dazu verlinken?

OAuth(2) gibt nicht vor, wie der User Agent die Credentials holt. Daher spielt das erstmal keine Rolle. Aber vielleicht sind in dem bimmer_connected noch ein paar Params oder ähnliches die wir abschauen können. Wenn das System halbwegs schlau ist, sollte es z.B. bei einem headless client keine Seite mit einem Captcha zwischenschalten. Ist aber alles pure Theorie, was sie wirklich gebaut haben muß man sehen. Wenn es tatsächlich noch einen CLI basierten weg gibt, die Tokens von BMW zu bekommen können wir diesen Nachbauen.

Hilft Dir das weiter?
https://bmwapi.mihaiblaga.dev/

@holgerscheller
Copy link

BMW bietet auch OAuth2 an. Die Schnittstelle wäre auch in bimmer_connected dokumentiert. Damit kann man sich wohl um das Captcha herum manövrieren.

Kannst Du mal Code dazu verlinken?
OAuth(2) gibt nicht vor, wie der User Agent die Credentials holt. Daher spielt das erstmal keine Rolle. Aber vielleicht sind in dem bimmer_connected noch ein paar Params oder ähnliches die wir abschauen können. Wenn das System halbwegs schlau ist, sollte es z.B. bei einem headless client keine Seite mit einem Captcha zwischenschalten. Ist aber alles pure Theorie, was sie wirklich gebaut haben muß man sehen. Wenn es tatsächlich noch einen CLI basierten weg gibt, die Tokens von BMW zu bekommen können wir diesen Nachbauen.

Hilft Dir das weiter? https://bmwapi.mihaiblaga.dev/

Ich dachte du meintest bimmer_connected!?
https://github.com/bimmerconnected/bimmer_connected

@BrickTop87
Copy link

Ich habe leider gerade keine Zeit, selbst etwas auszuprobieren. Für eine richtig implementierte Lösung fehlen mir aber auch die Kenntnisse in Go und der evcc-Architektur.

Soweit ich es verstehe, würde ein Fix aus zwei Teilen bestehen:
Teil 1:
An dieser Stelle müsste als Header nicht nur request.URLEncoding übergeben werden, sondern als zusätzlicher Header "hcaptchatoken": "P1_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.hadwYXNza2...", wobei das hcaptcha-Token z.B. hier generiert werden kann.

Damit würde vermutlich der Erst-Login wieder funktionieren und es funktioniert auch weiter, solange evcc ununterbrochen läuft. Das liegt daran, dass ab dann ein Refresh-Token verwendet wird. Deswegen funktioniert es im Moment auch noch bei allen, die evcc seit Montag noch nicht neu gestartet haben (z.B. bei mir).

Problem dabei: Bei jedem neuen Start von evcc müsste man ein neues hcaptcha-Token generieren, da das alte mittlerweile ungültig ist.

Daher zusätzlich nötig:
Teil 2:
Der o.g. Refresh-Token müsste persistiert werden und bei einem Neustart von evcc für den ersten Login-Versuch herangezogen werden.
Schlägt der trotzdem fehl (weil z.B. zu alt), müsste der Nutzer als Fallback einen neuen hcaptcha generieren.

Es verbleibt somit der Nachteil, dass bei längerer Downtime von evcc (wie lang? Keine Ahnung) ein neues Captcha gelöst und manuell eingegeben werden muss.

So habe ich es zumindest aus der Lösung von bimmerconnected für Nordamerika herausgelesen. Das persistieren wird dort gelöst, indem ein File ~/.bimmer_connected.json angelegt und jedes mal eingelesen wird (Parameter --oauth-store im CLI).

@dieterlohrstraeter
Copy link

dieterlohrstraeter commented Nov 22, 2024

Also, das nächste Mal eine andere Marke kaufen!!!

Am Ende ist das so. Ich kann aber gerne mal versuchen, den Entwicklersupport auf das Thema zu stossen.

Wenn du dafür Kontakte hast, wäre das natürlich super. Es ist nämlich fraglich, ob und bis wann ansonsten Beschwerden über die offiziellen Kanäle zu den Verantwortlichen Leuten durchschlagen.
Macht es vielleicht Sinn, dass wir uns alle über die Connected-Drive Hotline darüber beschweren? Wenn das viele tun, könnte das zu mehr Aufmerksamkeit führen.

Also, das nächste Mal eine andere Marke kaufen!!!

Die anderen Marken kochen auch nur mit Wasser. Da wirst du früher oder später mit anderen Problemen konfrontiert. Insgesamt macht BMW im Vergleich eigentlich schon eine gute Figur im Bereich SW, aber ich verstehe, dass dieses Problem sehr ärgerlich und wohl auch vermeidbar gewesen wäre.

@Pluenni
Copy link

Pluenni commented Nov 22, 2024

"Macht es vielleicht Sinn, dass wir uns alle über die Connected-Drive Hotline darüber beschweren? Wenn das viele tun, könnte das zu mehr Aufmerksamkeit führen."

->> Erledigt.

@mikeungers
Copy link

Bei aller Verständnis über den Unmut, das ist keine offizielle Schnittstelle.
Wenn ich das richtig verstanden habe, ist die Implementierung durch Reverse Engineering der BMW App entstanden.
Sprich die war nie für eine Nutzung durch Dritte gedacht/freigegeben.
Man kann sich zwar darüber ärgern, aber man kann BMW keinen Vorwurf machen, eine lediglich intern genutzte Schnittstelle zu ändern.

@LIon6432
Copy link

Bei aller Verständnis über den Unmut, das ist keine offizielle Schnittstelle. Wenn ich das richtig verstanden habe, ist die Implementierung durch Reverse Engineering der BMW App entstanden. Sprich die war nie für eine Nutzung durch Dritte gedacht/freigegeben. Man kann sich zwar darüber ärgern, aber man kann BMW keinen Vorwurf machen, eine lediglich intern genutzte Schnittstelle zu ändern.

Das sehe ich allerdings auch so - jedoch weil ich "das nächste Mal eine andere Marke" ins Spiel gebracht hatte:
Mein Ärger und Vorwurf bezieht sich auf die gegenüber der BMW-App eingeschränkte Funktionalität der offiziellen Schnittstelle (s.o.). Dafür habe ich kein Verständnis. Erwähnt habe ich das, weil die evcc-Entwickler bestimmt nicht glücklich werden, wenn sie die offizielle Schnittstelle demnächst nutzen würden und dann aber selbst den Ärger einstecken, weil dann auch bei evcc der SoC nicht während der Aufladung aktualisiert wird. Gerade diese Funktionalität hat mich übrigens zu evcc gebracht.

@mikeungers
Copy link

Ich habe eben mal den Test gemacht, weil ich mir das eigentlich nicht vorstellen kann.
Ich habe mein Fahrzeug auch bei Tibber hinterlegt, dort scheint die Verbindung nach wie vor zu funktionieren. Das spricht für mich dafür, dass Tibber die offizielle API benutzt.

Ich habe dann einen Ladevorgang (über EVCC) gestartet. Sowohl in der BMW als auch in der Tibber App wurde der SOC während dem Ladevorgang aktualisiert.

Also entweder hat sich nach dem Mai 2024 noch was geändert oder Tronity hat vielleicht selbst irgendwie Mist gebaut und es auf andere geschoben ;)

@andig ihr habt doch die Tibber API sowieso schon implementiert. Wäre es da nicht möglich auch die Fahrzeuginformationen von Tibber zu beziehen?

Ich würde gerne helfen, nur habe ich absolut noch keine Erfahrung mit Go...

@docolli
Copy link
Contributor

docolli commented Nov 22, 2024

Könnte jemand mal bitte ein TRACE log vom Bereich [bmw] posten? Dass man mal sieht, woran es in evcc scheitert.
Bei mir geht es aktuell immer noch:

[bmw ] TRACE 2024/11/19 09:15:53 POST https://customer.bmwgroup.com/gcdm/oauth/token
[bmw ] TRACE 2024/11/19 09:15:54 grant_type=refresh_token&redirect_uri=com.bmw.connected%3A%2F%2Foauth&refresh_token=*** -- {"gcid":"***,"token_type":"Bearer","access_token":"***","refresh_token":"***","scope":"smacc vehicle_data perseus dlm svds openid profile vsapi remote_services authenticate_user cesim offline_access email fupo","expires_in":3599,"id_token":"***"} 

Enthaltene Tokens am besten mit "***" vor dem posten löschen.
Bei mir geht er (noch) erfolgreich durch die Funktion "Refresh Token".

func (v *Identity) RefreshToken(token *oauth2.Token) (*oauth2.Token, error) {

Der Refresh klappt anscheinend noch, aber muss aus irgendwelchen Gründen der Token neu geholt werden, dann kommt das Captcha, erst dann bekommt man ein neues Token von BMW.
Der Ansatz von @BrickTop87 sieht prinzipiell erfolgversprechend aus #17332 (comment)
Wie schon geschrieben, muss man zur Einbindung eines Mercedes in evcc auch ein access und refresh Token holen. Möglicherweise blüht uns bei BMW nun eine ähnliche Vorgehensweise. Läuft ja auch über OAuth2.
Siehe Code "cmd/token_mercedes.go"

@holgerscheller
Copy link

holgerscheller commented Nov 22, 2024

Hab mal ein "evcc -l trace vehicle" gemacht und das sind die Meldungen dazu:
[bmw ] TRACE 2024/11/22 17:23:05 POST https://customer.bmwgroup.com/gcdm/oauth/authenticate
[bmw ] TRACE 2024/11/22 17:23:05 client_id=&code_challenge=&code_challenge_method=S256&grant_type=authorization_code&nonce=login_nonce&password=&redirect_uri=com.bmw.connected%3A%2F%2Foauth&response_type=code&scope=openid+profile+email+offline_access+smacc+vehicle_data+perseus+dlm+svds+cesim+vsapi+remote_services+fupo+authenticate_user&state=cEG9eLAIi6Nv-aaCAniziE_B6FPoobva3qr5gukilYw&username=

@dieterlohrstraeter
Copy link

Ich habe eben mal den Test gemacht, weil ich mir das eigentlich nicht vorstellen kann. Ich habe mein Fahrzeug auch bei Tibber hinterlegt, dort scheint die Verbindung nach wie vor zu funktionieren. Das spricht für mich dafür, dass Tibber die offizielle API benutzt.

Ich habe dann einen Ladevorgang (über EVCC) gestartet. Sowohl in der BMW als auch in der Tibber App wurde der SOC während dem Ladevorgang aktualisiert.

Also entweder hat sich nach dem Mai 2024 noch was geändert oder Tronity hat vielleicht selbst irgendwie Mist gebaut und es auf andere geschoben ;)

@andig ihr habt doch die Tibber API sowieso schon implementiert. Wäre es da nicht möglich auch die Fahrzeuginformationen von Tibber zu beziehen?

Ich würde gerne helfen, nur habe ich absolut noch keine Erfahrung mit Go...

Hast du denn evcc auch schon neu gestartet? Bei uns hat es auch noch bis zum Reboot funktioniert.

@LIon6432
Copy link

Ich habe eben mal den Test gemacht, weil ich mir das eigentlich nicht vorstellen kann. Ich habe mein Fahrzeug auch bei Tibber hinterlegt, dort scheint die Verbindung nach wie vor zu funktionieren. Das spricht für mich dafür, dass Tibber die offizielle API benutzt.

Ich habe dann einen Ladevorgang (über EVCC) gestartet. Sowohl in der BMW als auch in der Tibber App wurde der SOC während dem Ladevorgang aktualisiert.

Also entweder hat sich nach dem Mai 2024 noch was geändert oder Tronity hat vielleicht selbst irgendwie Mist gebaut und es auf andere geschoben ;)

@andig ihr habt doch die Tibber API sowieso schon implementiert. Wäre es da nicht möglich auch die Fahrzeuginformationen von Tibber zu beziehen?

Ich würde gerne helfen, nur habe ich absolut noch keine Erfahrung mit Go...

Erlaube mir bitte den Hinweis, speziell zu
"Also entweder hat sich nach dem Mai 2024 noch was geändert oder Tronity hat vielleicht selbst irgendwie Mist gebaut und es auf andere geschoben ;)":
Die Aussage einer der Entwickler bei Tronity war, dass die SoC-Aktualisierung während der Ladung beim BMW i3S über die offizielle Schnittstelle nicht funktioniert und das Problem nicht bei Tronity liegt, jedoch bei neueren Fahrzeugen die Aktualisierung funktioniert. Genau darüber hatte ich mich bei BMW beschwert.
Hast Du den Test denn mit einem BMW i3S durchgeführt?

@mikeungers
Copy link

Die Aussage einer der Entwickler bei Tronity war, dass die SoC-Aktualisierung während der Ladung beim BMW i3S über die offizielle Schnittstelle nicht funktioniert und das Problem nicht bei Tronity liegt, jedoch bei neueren Fahrzeugen die Aktualisierung funktioniert. Genau darüber hatte ich mich bei BMW beschwert. Hast Du den Test denn mit einem BMW i3S durchgeführt?

Ah ok, das habe ich so nicht aus deinem ursprünglichen Beitrag herauslesen können.
Ich habe es mit einem i4 getestet.

@docolli
Copy link
Contributor

docolli commented Nov 22, 2024

Danke für den Trace-Log. Ich kann das Problem hier nachstellen mit einem händisch gestarteten evcc:

[bmw   ] TRACE 2024/11/22 18:39:36 POST https://customer.bmwgroup.com/gcdm/oauth/authenticate
[bmw   ] TRACE 2024/11/22 18:39:36 client_id=***&code_challenge=***&code_challenge_method=S256&grant_type=authorization_code&nonce=login_nonce&password=***&redirect_uri=com.bmw.connected%3A%2F%2Foauth&response_type=code&scope=openid+profile+email+offline_access+smacc+vehicle_data+perseus+dlm+svds+cesim+vsapi+remote_services+fupo+authenticate_user&state=***&username=***
--
{"error": "invalid_client", "error_description": "Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method)"}
[main  ] ERROR 2024/11/22 18:39:36 creating vehicle ev2 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method): unexpected status: 401 (Unauthorized)
.Soc:     vehicle not available: cannot create vehicle type 'template': cannot create vehicle type 'bmw': Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method): unexpected status: 401 (Unauthorized)

@andig Hast du schon Infos von BMW? Vermutlich nicht, wenn schon deren Mail-Adresse nicht funktioniert. Wäre das ein gangbarer Ansatz für den BMW Connector es mit den Tokens in evcc so zu machen wie bei Merceded, Ford, etc... ?

@privat99
Copy link

Die gleiche Fehlermeldung kommt auch bei meinem BMW i3S von Ende 2022.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working vehicles Specific vehicle support
Projects
None yet
Development

No branches or pull requests