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 · 80 comments
Open
1 task done

BMW/Mini api broken #17332

Marc2480 opened this issue Nov 18, 2024 · 80 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
@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.

@apollon9
Copy link

bimmer_connected hat heute einen Fix für die captcha Erstellung "rest_of_world" bekommen und funktioniert zumindest auf der cli wieder:
bimmerconnected/bimmer_connected#675
Ich erhalte mit dem hCaptcha token einen refresh_token - nur, wie binde ich den in evcc ein? So wie es aktuell bei Mercedes implementiert ist, mit dem Parameter "refreshToken" würde doch als quick fix gehen?

@kaimundo
Copy link

Also mit der Tibber App funktioniert es bei mir nachwievor. Warum benutzt EVCC nicht auch einfach die offizielle API?

@twixfix
Copy link

twixfix commented Nov 23, 2024

Nein, es funktioniert wieder. Die mussten den Login Prozess verändern. Vorher hat man die Daten direkt in der App angegeben. Jetzt wird man auf eine Seite bei BMW weitergeleitet und gibt dort seine Daten ein. Es kommt kein Captcha. bzw steht auf der Seite das ein hCaptcha benötigt wird aber nachdem man seine Daten eingibt, lädt die Tibber App und man ist angemeldet.

@SolarPower2024
Copy link

SolarPower2024 commented Nov 23, 2024

Ich denke der Ansatz von der offiziellen API von BMW ist theoretisch der richtige, keine Frage. Praktisch aber wohl keine Option. Wenn man sich die Seite ansieht, steht hier eindeutig ein Preis von 0,09€ netto pro "Key" den man abrufen möchte. Bzw ein maximaler Preis von 5€ netto pro Fahrzeug pro Monat.

Und mit diesem maximalen Preis müsste man rechnen, denn der Status eingesteckt/ausgesteckt, SoC, Kilometerstand, SoC Limitierung, Reichweite, etc sind alles einzelne Keys. Heißt, möchte man den Stand von heute aufrecht erhalten kommt man immer an die maximalen Kosten.

Die wenigsten werden bereit sein, dafür nochmals extra zu bezahlen und ich glaube nicht, dass BMW für evcc eine Ausnahme macht und dies kostenlos zur Verfügung stellt. Es gibt schon einen Grund wieso zb die Home Assistant Integration mit deutlich mehr Anwendern nicht diesen Weg gegangen ist.

Ich denke die beste Lösung wäre sicher den Ansatz von bimmerconnected zu verfolgen. Die haben eine Lösung, indem man das captcha auf deren Seite löst und im Anschluss das Token erhält, das man mit copy&paste entsprechend für die Authentifizierung einfügen kann.

PS: Wenn ich es richtig im Kopf habe, wurde bisher auch eine Funktion verwendet, um das Auto aufzuwecken, damit das Laden gesichert ist? (per senden des Befehles, Auto zusperren)
Dies würde dann wohl nicht mehr funktionieren, da die CarData meines Verständnisses nach nur Daten lesen können.

@RobertSchuster
Copy link

Ich möchte die Gelegenheit nutzen das Problem mal ganz grundsätzlich zu betrachten. Leider kann ich keine Lösung liefern, aber vielleicht können wir ja gemeinsam scheinbar sinnvolle Ansätze weiterentwickeln, oder eben - weil doch nicht so zielführend - aussortieren.
Als totale Katastrophe und wie man so schön sagt als "nogo" hat sich jetzt und auch schon im vergangenen sommer beim Ausfall der BMW Cloud für 24 Stunden herausgestellt, dass:

  1. Ohne funktionierende Infrastruktur kein sinnvoll gesteuertes Laden mehr möglich ist. Zu "Infrastruktur" gehört m.E. in diesem Zusammenhang eine funktionierende Internetanbindung und ein erreichbares Backend des jeweiligen Herstellers (in unserem aktuellen Fall des Autos, aber evtl. spielen da ja noch diverse China-Clouds der Wechselrichter und Batteriesysteme eine Rolle).
  2. Der jeweilige Hersteller zumindest theoretisch die Möglichkeit hat alle unsere schönen Geräte für ein nachhaltiges Energiemanagement mit einem Schlag abzuschalten. Im Falle eines Wechselrichters geht das u.U. auch final, ich halte das auch bei einem Auto für sicherlich möglich.
  3. Im Beispielfall kann also BMW darüber entscheiden, wie lange ein gekauftes Produkt - also mein Eigentum - benutzt werden kann und wann es sich in einen nutzlosen Haufen Elektroschrott verwandelt. Sicherlich ist das durch kein Gesetz gedeckt, aber weiß schon welche "Ausfälle" dann wirklich auf einen Defekt oder aber auf ein gezieltes Deaktivieren zurückzuführen sind. Erste derartige Ansätze sehen wir ja bereits bei Tesla Tauschbatterien - da haben dann neue Akkupacks auf einemal nur noch die bereits durch Degradierung reduzierte Kapazität des ursprünglichen Packs vor dem Totalausfall.

Das bringt mich - ganz theoretisch - zu folgender Überlegung:
Ideal wäre es demnach, ein Auto komplett von der Hersteller-Cloud zu trennen und den gesamten Traffic auf einen eigenen Server umzuleiten. Ich bin mir darüber im Klaren, dass das wohl nur eine theoretische Überlegung bleiben wird, denn hier müsste man schon ziemlich tief in die Fahrzeugelektronik eingreifen und grundlegende Dinge verändern. Das ist dann bei uns ganz schnell mit dem erlöschen der BE verbunden und wohl auch technisch ohne einen Wistleblower gar nicht machbar. Man denke nur an die zu verstehenden Protokolle und auch an die Verschlüsselung, die hoffentlich nicht so einfach zu knacken ist.
Wäre schön, wird aber wohl nix werden...

Nächster Ansatz um etwas mehr Selbstbestimmung zu erlangen ist sicherlich ein OBD-Adaper um die benötigten Daten per WLan ins heimische Energiemanagement zu beamen. Hier gibt es ja schon einige Projekte, die aber allesamt eingeschlafen zu sein scheinen. Wenn sich jetzt jemand berufen fühlt sowas wie EVNotify auf einen ESP32 zu portieren, dann könnte so ein Modul in einem kleinen OBD-Stecker Platz finden und die benötigten Informationen für EVCC bereitstellen. So eine Entwicklung würde ich auch finanziell unterstützen.

Die naheligendste Idee die BMW API (im aktuellen Fall) zu verwenden ist natürlich möglich, aber BMW dafür zu bezahlen, dass man in brauchbarer Form auf seinen eigenen Daten zugreifen kann geht irgendwie gar nicht. Es mag zwar sein, dass wir Trottel dem stillschweigend bei der Annahme irgendwelcher zig Seiten langen AGB's zusgestimmt haben, aber nicht alles was in AGB's steht hat auch rechtlichen Bestand.
Warum denn nicht richtig Wirbel machen - Presse einschalten, Beschwerde mit möglichst vielen Unterschriften bei BMW einlegen, öffentlich blamen wegen Verhinderung nachhaltigen Ladens etc.
Die aktuelle Situation der Deutschen Autobauer lechtzt jetzt nicht gerade nach schlechter Presse und wenn man glaubhaft darstellen kann, dass hier ein Marktbegleiter das Prinzip so gar nicht verstanden hat, dann findet man vielleicht ein offenes Ohr...

Ich weiß durchaus, dass das alles ziemlich dicke Bretter und die Chancen hier den richtigen Bohrer zu finden nicht gerade groß sind.
Aber wer nicht wagt, der nicht gewinnt.

@mfuchs1984
Copy link
Contributor

Der Betrieb der Infrastruktur kostet Geld, das lassen sich die Hersteller vergüten. Für die Dienste die die BMW App anbietet, bezahlt man mit dem connected drive Abo. Die externe Schnittstelle lässt BMW sich vergüten, da dadurch zum einen zusätzliche Abfragen verarbeitet werden müssen und zum anderen, um an den Geschäftsmodellen anderer Firmen auf Basis der BMW API mit zu profitieren. Ich halte das soweit für nachvollziehbar. Bei evcc ist die Lage etwas anderes, es gibt kein Geschäftsmodell und der Kunde selbst, der ja schon für connected drive bezahlt, will auf die Daten zugreifen. Da könnte durchaus die Chance bestehen, dass das ermöglicht wird, je nachdem an wen man bei BMW gerät.

Grundsätzlich gibt es, den Standardisierungsgremien sei dank, schon eine grundsätzliche lokale Lösung, die ISO 15118. Diese wird von neueren BMW Fahrzeugen unterstützt. Je mehr sich Hersteller von Autos und Wallboxen in diese Richtung bewegen, desto weniger ist man für die Ladesteuerung auf die Hersteller APIs angewiesen. Ich habe eine solche Wallbox, aber leider einen pre LCI i4, der noch kein plug&charge unterstützt.

@RobertSchuster
Copy link

der Kunde selbst, der ja schon für connected drive bezahlt (hat), will auf die Daten zugreifen
Das genau ist der Punkt! Ich soll Geld dafür bezahlen, dass ich auf meine eigenen Daten zugreifen kann. Dass eine Cloud-infrastruktur Geld kostet ist keine Frage, aber dafür habe ich bereits - ohne gefragt worden zu sein - bezahlt.
Ich möchte nur auf die Daten meines eigenen Fahrzeugs zugreifen, ob mit oder ohne BMW-Cloud ist mir egal. Dann sollen die Hersteller den Direktzugriff ermöglichen - aber das verdonglen und dann die Hand aufhalten ist m.E. illegal oder zumindest an der Grenze dazu.

@privat99
Copy link

Wenn sichergestellt werden kann, dass mit Kauf des BMW Connected BOOSTER Paket dieses Problem gelöst werden kann, wäre ich bereit den jährlichen Betrag von 79€ hierfür zu bezahlen.
Den bisherigen Service in evcc weiterhin zu haben, wäre mir der Betrag wert. Nachteil könnte sein, dass in Zukunft für jedes Fahrzeug eine extra Gebühr aufgerufen werden könnte. Derzeit habe ich einen BMW und 2 Audi.
Wenn das bedeuten würde, dass dieser Betrag für jedes Fahrzeug fällig ist, sieht die Bereitschaft anders aus.
Dieses so als Gedankenanstoss.

@holgerscheller
Copy link

Ich verstehe das Interesse an der allgemeinen Diskussion, aber könnte man sich hier vielleicht auf eine pragmatische und kurzfristige Lösung (wie z.B. im bimmerconnected) fokussieren? Möchte den Austausch hier nicht abwürgen, aber könnte man den Austausch über die langfristige und strategische Lösunge auslagern und hier an einer konkreten Lösung arbeiten, da läge mir sehr am Herzen ;-)

@SolarPower2024
Copy link

Der Betrieb der Infrastruktur kostet Geld, das lassen sich die Hersteller vergüten. Für die Dienste die die BMW App anbietet, bezahlt man mit dem connected drive Abo.

Nicht ganz, die Schnittstelle über die App für den Fahrzeug Status läuft ja über die Remote Services, was seit etwa einem Jahr kostenlos ist.
Beim Rest stimme ich vollkommen zu.
Die Kommunikation zwischen Auto und Wallbox ist die einzige Zukunft.
Was mich auch ziemlich nervt, bei meinem pre-LCI i4. Dass BMW da Updates (wie zb auch OS 8.5, fehlende PnC Zertifikate) nicht nachliefert ist ein Armutszeugnis, aber ein anderes Thema.

@TinkerBarn
Copy link

TinkerBarn commented Nov 23, 2024

Eine Alternative wäre es die Daten direkt über OBDII aus dem Can Bus über MQTT in EVCC zu übertragen. Da gibt es bereits etwas. Der Vorteil, man ist komplett unabhängig von den Herstellern und deren Cloudlösungen:
https://www.meatpi.com/products/wican
Es wird auch schon der SoC für i3 unterstützt:
https://github.com/meatpiHQ/wican-fw/blob/main/vehicle_profiles/bmw/i3.json

Weitere Details findet man auch hier:
https://www.goingelectric.de/forum/viewtopic.php?f=105&t=86911&start=60

Z.B. ein Custom vehicle in EVCC für ein Ioniq der den SoC über den WiCan Adapter erhält:

vehicles:
  - name: Ioniq
    type: custom
    capacity: 28
    soc:
      source: mqtt
      topic: "wican/soc"
      jq: .SOC_DISPLAY

Ich selbst mache es derzeit über iobroker, den BMW Adapter (unterstützt die Captcha Anmeldung und den Token), MQTT Client und MQTT Broker.
Der MQTT Client schreibt die Daten des BMW Adapters in den Broker und EVCC bekommt von dort die Daten:

mqtt:
  broker: 192.168.178.144:1883
  topic: evcc
  
vehicles:
- name: bmw
  type: custom
  title: BMW i3 MQTT
  icon: car
  capacity: 19
  phases: 1
  soc:
    source: mqtt
    topic: ioBroker/alias/0/bmw/chargingLevelP>
  range:
    source: mqtt
    topic: ioBroker/alias/0/bmw/range
  odometer:
    source: mqtt
    topic: ioBroker/alias/0/bmw/currentMileage
  status:
    source: mqtt
    topic: ioBroker/alias/0/bmw/chargingStatus

@andig
Copy link
Member

andig commented Nov 23, 2024

Lasst uns hier bitte beim BMW Api bleiben.

@Expalmi
Copy link

Expalmi commented Nov 23, 2024

@andig siehst Du da Aussicht auf Erfolg?

@andig
Copy link
Member

andig commented Nov 23, 2024

Wird sich zeigen, aber warum nicht. Zumindest gibt es mal eine API. Kann man von VW bisher nicht behaupten soweit mir das bekannt ist.

Wäre es da nicht möglich auch die Fahrzeuginformationen von Tibber zu beziehen?

Ist mir nicht bekannt. Tronity wäre noch eine weitere Option.

@BrickTop87
Copy link

Ich sehe bei der offiziellen API auch das Problem mit der Abrechnung. Die Preise sind ja öffentlich zugänglich, aber ihr wollt seitens evcc ja sicher nicht in ein zusätzliches Abrechnungsgeschäft einsteigen. Und dass der jeweilige Endkunde selbst direkt mit BMW verrechnet ist, so wie sich das liest, nicht vorgesehen.

Derweil habe ich als Proof of Concept folgendes getestet:

1.: Login-Versuch mit evcc 0.131.6 ohne Modifikation:

sudo ./evcc -l debug vehicle
[main  ] INFO 2024/11/23 21:42:00 evcc 0.131.6
[main  ] INFO 2024/11/23 21:42:00 using config file: /etc/evcc.yaml
[db    ] INFO 2024/11/23 21:42:00 using sqlite database: /root/.evcc/evcc.db
[main  ] ERROR 2024/11/23 21:42:00 creating vehicle bmw_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)
.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)
Capacity: 81.0kWh
Features: [Offline Retryable]

--> fehlgeschlagen 👎

2.: Login-Versuch mit folgender Modifikation:
File: vehicle/bmw/identity.go, Zeile 63.
geändert zu:

        uri := fmt.Sprintf("%s/oauth/authenticate", v.region.AuthURI)
        headers_test := map[string]string{
                "Content-Type": "application/x-www-form-urlencoded",
                "hcaptchatoken": "P1_eyJ0eXAiOiJKV1Q[...]",
        }
        req, err := request.New(http.MethodPost, uri, strings.NewReader(data.Encode()), headers_test)

Das hcaptchatoken habe ich hier generiert und einfach reinkopiert.

Und siehe da:

sudo ./evcc -l debug vehicle
[main  ] INFO 2024/11/23 21:54:19 evcc 0.131.6
[main  ] INFO 2024/11/23 21:54:19 using config file: /etc/evcc.yaml
[db    ] INFO 2024/11/23 21:54:19 using sqlite database: /root/.evcc/evcc.db
Soc:           9%
Capacity:      81.0kWh
Charge status: B
Range:         36km
Odometer:      12935km
Limit Soc:     100%
OnIdentified:  Mode:pv

--> Login erfolgreich 👍

Solange evcc ununterbrochen läuft müsste man so per Refresh Token eingeloggt bleiben.

Leider verlassen mich jetzt meine Fähigkeiten, das zu Ende zu programmieren. Der hcaptchatoken müsste z.B. sauber per Config übergeben werden können. Der zweite wichtige Teil der Lösung wäre das Persistieren des Refresh Tokens, damit es über einen evcc-Neustart hinaus funktioniert.

@andig
Copy link
Member

andig commented Nov 24, 2024

Login-Versuch mit folgender Modifikation:

Das ist einfach gemacht, allerdings muss auch das Refreshtoken noch gespeichert werden. Falls jemand die Lösung für Mercedes oder Tesla portieren möchte wäre ein PR super. Ich würde mich lieber auf das offizielle API konzentrieren.

Ansonsten bliebe auch weiterhin noch ein Template für Integration eines HA oder ioBroker Adapters zu integrieren.

@mfuchs1984
Copy link
Contributor

mfuchs1984 commented Nov 24, 2024

Home Assistant wird das captcha aus Cybersecurity Gründen nicht integrieren und versucht ebenfalls, auf BMW zuzugehen

home-assistant/core#129667 (review)

@SolarPower2024
Copy link

In Home Assistant gibt es schon einen neuen PR dazu, basierend auf dem bimmerconnected captcha Ansatz: home-assistant/core#131351

@cdyna43
Copy link

cdyna43 commented Nov 24, 2024

Ich sehe bei der offiziellen API auch das Problem mit der Abrechnung. Die Preise sind ja öffentlich zugänglich, aber ihr wollt seitens evcc ja sicher nicht in ein zusätzliches Abrechnungsgeschäft einsteigen. Und dass der jeweilige Endkunde selbst direkt mit BMW verrechnet ist, so wie sich das liest, nicht vorgesehen.

Derweil habe ich als Proof of Concept folgendes getestet:

1.: Login-Versuch mit evcc 0.131.6 ohne Modifikation:

sudo ./evcc -l debug vehicle
[main  ] INFO 2024/11/23 21:42:00 evcc 0.131.6
[main  ] INFO 2024/11/23 21:42:00 using config file: /etc/evcc.yaml
[db    ] INFO 2024/11/23 21:42:00 using sqlite database: /root/.evcc/evcc.db
[main  ] ERROR 2024/11/23 21:42:00 creating vehicle bmw_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)
.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)
Capacity: 81.0kWh
Features: [Offline Retryable]

--> fehlgeschlagen 👎

2.: Login-Versuch mit folgender Modifikation: File: vehicle/bmw/identity.go, Zeile 63. geändert zu:

        uri := fmt.Sprintf("%s/oauth/authenticate", v.region.AuthURI)
        headers_test := map[string]string{
                "Content-Type": "application/x-www-form-urlencoded",
                "hcaptchatoken": "P1_eyJ0eXAiOiJKV1Q[...]",
        }
        req, err := request.New(http.MethodPost, uri, strings.NewReader(data.Encode()), headers_test)

Das hcaptchatoken habe ich hier generiert und einfach reinkopiert.

Würde das ja gerne ausprobieren. Nur: Wo finde ich denn File: vehicle/bmw/identity.go in meiner Installation (Home Assistant)?

@andig

This comment was marked as resolved.

@SolarPower2024
Copy link

Hier ein Beispiel für die Integration mit ioBroker: das ließe sich leicht in ein Template packen:

Dein Vorschlag ist es also, dass jeder iobroker installieren soll?
Ist für einige die iobroker ohnehin verwenden wohl kein Problem, aber sehe ich nicht als allgemeine Lösung des Problems.

Es gibt ja bereits einen Lösungsansatz, man muss nur das captcha Token mitschicken, wenn man das token nicht in evcc generieren will, kann man ja einfach auf die bimmerconnected URL verweisen. Da kann man das Token generieren, entsprechend einfügen und schon läuft es wieder.

@andig
Copy link
Member

andig commented Nov 24, 2024

Dein Vorschlag ist es also, dass jeder iobroker installieren soll?

@SolarPower2024 dreh mir bitte nicht das Wort im Mund um!

Siehe #17332 (comment).

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