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 hcaptcha integration #17445

Merged
merged 9 commits into from
Nov 26, 2024
Merged

BMW/Mini hcaptcha integration #17445

merged 9 commits into from
Nov 26, 2024

Conversation

BrickTop87
Copy link
Contributor

Minimally invasive fix for broken BMW/Mini API #17332
hcaptcha must be generated once using https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html and copied to evcc.yaml
Refresh tokens received after first login are persisted in the database and get refreshed every time the token is refreshed.

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

andig commented Nov 26, 2024

Lgtm. Ok to merge?

@BrickTop87
Copy link
Contributor Author

Yes from my side.

@andig andig merged commit 9754bb9 into evcc-io:master Nov 26, 2024
@mha1
Copy link

mha1 commented Nov 26, 2024

I have successfully built and tested your fix on Raspberry Pi4. Please go ahead with merging. I suggest some script wizard implementing a shell script to automate the captcha generation and transfer to evcc.yaml process.

Testing:

Not having hcatcha defined in evcc.yaml throws a "missing credentials" error as expected.

  1. Generated the captcha using https://bimmer-connected.readthedocs.io/en/latest/captcha/rest_of_world.html
  2. Copied the captcha string to evcc.yaml hcaptcha label
  3. Restarted evcc
  4. Vehicle data is present

Vehicle config:

vehicles:
- name: BMWX1
  type: template
  template: bmw
  title: BMWX1
  user: ***
  password: ***
  hcaptcha: *** captch string here ***
  vin: ***                                                                             
  capacity: 15
  phases: 3
  region: EU

image

@cdyna43
Copy link

cdyna43 commented Nov 26, 2024

I tried

type: template
template: bmw
title: 545e
icon: car
user: c*******
password: 1****
hcaptcha: 0u2P-R--*
name: ev4
phases: 1
capacity: 12
region: EU

and got this:

main ] FATAL 2024/11/26 10:48:17 cannot create vehicle 'ev4': cannot create vehicle type 'template': invalid key: hcaptcha

Do I need to enter my VIN?

Side note: I there a reason why my evcc logs under "add ons" no longer update or only update like every 10 minutes? If not, is there a fix?

@BrickTop87
Copy link
Contributor Author

BrickTop87 commented Nov 26, 2024

Are you sure you ran the newly compiled executable?
The error means that evcc doesn't know the "hcaptcha" label in the vehicle settings, which could indicate you're running the unmodified version without the PR.

Also, when I generate an hcptcha code it always starts with "P1_...". Are you sure you got it right?

@cdyna43
Copy link

cdyna43 commented Nov 26, 2024

Are you sure you ran the newly compiled executable? The error means that evcc doesn't know the "hcaptcha" label in the vehicle settings, which could indicate you're running the unmodified version without the PR.

Of course I did not....I am afraid I need to be told every step.... What do I need to do?

@BrickTop87
Copy link
Contributor Author

Just wait for the next release of evcc and make an update. The fix will be included then.

@cdyna43
Copy link

cdyna43 commented Nov 26, 2024

Just wait for the next release of evcc and make an update. The fix will be included then.

Will do. Thank you!

@mha1
Copy link

mha1 commented Nov 26, 2024

@BrickTop87 sudo evcc -c /etc/evcc.yaml -l debug vehicle fails while evcc itself is working fine (SOC, range showing).

image

@BrickTop87
Copy link
Contributor Author

BrickTop87 commented Nov 26, 2024

I guess the sqlite database your evcc normally uses isn't located at /root/.evcc/evcc.db. It's using that db because you're using sudo. When evcc uses /root/.evcc/evcc.db, it doesn't find the stored token and tries a new login with the hcaptcha from evcc.yaml, which seems to be outdated or already used.

@mha1
Copy link

mha1 commented Nov 26, 2024

I guess the sqlite database your evcc normally uses isn't located at /root/.evcc/evcc.db. It's using that db because you're using sudo. When evcc uses /root/.evcc/evcc.db, it doesn't find the stored token and tries a new login with the hcaptcha from evcc.yaml, which seems to be outdated or already used.

Same thing calling it without sudo. And it does get fed /etc/evcc.yaml which contains the token.

@BrickTop87
Copy link
Contributor Author

BrickTop87 commented Nov 26, 2024

Did you renew the hcaptcha in your /etc/evcc.yaml manually just before executing the command?

Just tried, works as expected:

ubuntu@instance-20240407-2111:~/src/evcc$ sudo ./evcc vehicle
[main  ] INFO 2024/11/26 16:08:58 evcc 0.131.7
[main  ] INFO 2024/11/26 16:08:58 using config file: /etc/evcc.yaml
[db    ] INFO 2024/11/26 16:08:58 using sqlite database: /root/.evcc/evcc.db
[bmw   ] DEBUG 2024/11/26 16:08:58 identity.Login - database token found
[bmw   ] TRACE 2024/11/26 16:08:58 POST https://customer.bmwgroup.com/gcdm/oauth/token
[bmw   ] TRACE 2024/11/26 16:08:58 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":"..."}
[bmw   ] TRACE 2024/11/26 16:08:58 GET https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732633738656
[bmw   ] TRACE 2024/11/26 16:08:58 [{"vin":"***",...}]
[bmw   ] TRACE 2024/11/26 16:08:58 GET https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles/state?apptimezone=120&appDateTime=1732633738890
[bmw   ] TRACE 2024/11/26 16:08:59 {"state":{"isLeftSteering":true,...}}
Soc:           18%
Capacity:      81.0kWh
Charge status: B
Range:         73km
Odometer:      13021km
Limit Soc:     100%
OnIdentified:  Mode:pv
[db    ] TRACE 2024/11/26 16:08:59 INSERT INTO `settings` (`key`,`value`) VALUES ("bmw.to***","{""access_token"":""****"",""token_type"":""Bearer"",""refresh_token"":""***"",""expiry"":""2024-11-26T17:08:57.656140484+01:00"",""expires_in"":3599}") ON CONFLICT (`key`) DO UPDATE SET `value`=`excluded`.`value` 1 <nil>

@mha1
Copy link

mha1 commented Nov 26, 2024

Did you renew the hcaptcha in your /etc/evcc.yaml manually just before executing the command?

No, evcc was running normally in parallel. Does evcc -c /etc/evcc.yaml -l debug vehicle start a separate instance of evcc? But why would it require a new token. Same login credentials as the previously started evcc after token was generated.

@BrickTop87
Copy link
Contributor Author

The hcaptcha is only valid for a single time. Once it's used, it's invalid. So you'd have to renew the hcaptcha manually every time you restart evcc.

But after successfully logging in with user, password and hcaptcha, we get another set of tokens from BMW (access token and refresh token) and store them in the sqlite database evcc.db. When restarting evcc, it looks for these tokens in the db and "logs in" using them. From this point, no captcha is required. Except when you lose the database or too much time has passed (maybe weeks or months, we don't know).

My guess in your case is that evcc normally uses the database /var/lib/evcc/evcc.db. The tokens are stored there. When using /root/.evcc/evcc.db, it can't find the stored tokens.

@mha1
Copy link

mha1 commented Nov 26, 2024

Thanks for taking the time to look into this. You are right /var/lib/evcc/evcc.db exists and has a very recent time stamp. /root/.evcc/evcc.db also exists but is dated 3 days old.

But why doesn't the debug command use /var/lib/evcc/evcc.db if started without sudo?

@BrickTop87
Copy link
Contributor Author

When running as a service, the database path is defined in the unit configuration file as /var/lib/evcc/evcc.db.
When running from the command line, it uses a file in the current user's home path. Not sure why, though.

@andig
Copy link
Member

andig commented Nov 26, 2024

@BrickTop87 mir fällt grad auf dass 9754bb9#diff-043b7389199df70a93120e91d23de8e2670cbc95f0cbe61859be4818444e4cb4R174 Den err von drüber überschreibt, da fehlt also eine Fehlerbehandlung. Dem Code fehlt auch die Formatierung mit gofmt. Deshalb baut gerade kein Nightly. Willst Du es nochmal anschauen?

@BrickTop87
Copy link
Contributor Author

Das mit dem err ist mir heute auch irgendwann aufgefallen.
Aber parallel hat es @naltatis schon gefixt: da4a797
Funktioniert es zusammen mit seinen Änderungen?

@andig
Copy link
Member

andig commented Nov 26, 2024

Sieht so aus 👍🏻

@BrickTop87
Copy link
Contributor Author

BrickTop87 commented Nov 29, 2024

Mich hat der Timeout für das Captcha jetzt auch interessiert. Deswegen habe ich es mal ausprobiert. Bei meinen Versuchen:

 60 s: ok
 90 s: ok
105 s: ok
120 s: nok
300 s: nok

Irgendwo zwischen 1:45 min und 2:00 min ist der Timeout. Nicht üppig, aber eigentlich ausreichend für Kopieren und evcc neustarten.

@andig
Copy link
Member

andig commented Nov 29, 2024

…zumal wenn man es über das UI macht?!

@kad49007
Copy link
Contributor

Mich hat der Timeout für das Captcha jetzt auch interessiert. Deswegen habe ich es mal ausprobiert. Bei meinen Versuchen:

 60 s: ok
 90 s: ok
105 s: ok
120 s: nok
300 s: nok

Irgendwo zwischen 1;45 min und 2:00 min ist der Timeout. Nicht üppig, aber eigentlich ausreichend für Kopieren und evcc neustarten.

Normalerweise sollte das ausreichen. Da es bei mir dann funktioniert hat, sehe ich da auch absolut keine Notwendigkeit tiefer zu forschen. Nur wenn mehr User damit ein Problem haben, wollte ich es einmal dokumentieren.
Vielen Dank für den schnellen Fix!

@BrickTop87
Copy link
Contributor Author

Leider gab es auch keine anderen Fehlermeldungen.

Noch zum Thema andere Fehlermeldungen: BMW gibt im Nichterfolgsfall nur 401 (Unauthorized) ohne weitere Details zurück. Man kann also nicht unterscheiden, ob es an Username/Passwort/Captcha falsch kopiert/Captcha Timeout liegt.

Mir würde jetzt nur noch eine Abfrage auf Zeichenzahl des Captchas und evtl. erste x Zeichen einfallen, um zumindest die gröbsten Fehler vorher abzufangen. Andererseits sind wir dann unflexibel, wenn sich an einem der Parameter etwas BMW-seitig ändert.

Würde ich nur machen, wenn es bei sehr vielen Leuten jetzt zu Problemen führt.

@fasabe172115

This comment was marked as off-topic.

@andig
Copy link
Member

andig commented Nov 29, 2024

OT: Es wäre wunderbar wenn diese Frage nicht in jedem einzelnen PR auftauchen würde. Danke.

@ebloody1
Copy link

Ich habe gerade das Update 0.131.8 eingespielt, die evcc.yaml wie beschrieben geändert (hcaptcha) und jetzt funktioniert wieder alles. Vielen Dank!

@cdyna43
Copy link

cdyna43 commented Nov 30, 2024

Hat das schon jemand unter Homeassistant zum Laufen bekommen?

Bei mir sieht das dann so aus:

[main ] INFO 2024/11/30 10:29:44 evcc 0.131.8
[main ] INFO 2024/11/30 10:29:44 using config file: /config/evcc.yaml
[db ] INFO 2024/11/30 10:29:44 using sqlite database: /data/evcc.db
[main ] INFO 2024/11/30 10:29:44 listening at :7070
[acd0] DEBUG 2024/11/30 10:29:53 waiting for chargepoint: 5m0s
[e86] DEBUG 2024/11/30 10:29:53 waiting for chargepoint: 5m0s
[ocpp ] DEBUG 2024/11/30 10:30:36 charge point connected: acd
[acd0] DEBUG 2024/11/30 10:30:39 failed configuring availability: Scheduled
[ocpp ] DEBUG 2024/11/30 10:30:58 charge point connected: e86
[e81] DEBUG 2024/11/30 10:31:28 failed configuring availability: timeout
[acd] DEBUG 2024/11/30 10:31:34 recovered transaction: 1732617564
[main ] FATAL 2024/11/30 10:31:58 cannot create charger 'wallbox5': cannot create charger type 'template': cannot create charger type 'ocpp': timeout
[main ] FATAL 2024/11/30 10:31:58 will attempt restart in: 15m0s
[ocpp ] DEBUG 2024/11/30 10:32:38 charge point disconnected: e83
[ocpp ] DEBUG 2024/11/30 10:32:38 charge point connected: e8
Using config file: /config/evcc.yaml
starting evcc: 'EVCC_DATABASE_DSN=/data/evcc.db evcc --config /config/evcc.yaml'
[main ] INFO 2024/11/30 10:32:47 evcc 0.131.8
[main ] INFO 2024/11/30 10:32:47 using config file: /config/evcc.yaml
[db ] INFO 2024/11/30 10:32:47 using sqlite database: /data/evcc.db
[main ] INFO 2024/11/30 10:32:47 listening at :7070
[acd] DEBUG 2024/11/30 10:32:56 waiting for chargepoint: 5m0s
[e861] DEBUG 2024/11/30 10:32:56 waiting for chargepoint: 5m0s
[ocpp ] DEBUG 2024/11/30 10:33:33 charge point connected: acd
[acd0] DEBUG 2024/11/30 10:33:33 failed configuring availability: Scheduled
[acd0] DEBUG 2024/11/30 10:33:57 recovered transaction: 1732617564
[ocpp ] DEBUG 2024/11/30 10:34:00 charge point connected: e8
[e8] DEBUG 2024/11/30 10:34:00 failed configuring availability: Scheduled
[bmw ] DEBUG 2024/11/30 10:34:23 identity.Login - no database token found. Proceeding to login via user, password and captcha.
[main ] ERROR 2024/11/30 10:34:23 creating vehicle ev4 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)

Ich befürchte, das EVCC Add-On braucht einfach so lange zum Starten, dass der Token schon abgelaufen ist, wenn nach ca. 5 Minuten nach dem Start die Daten erstmals an die BMW-Server geschickt werden...

Übrigens sind meine Logs beim Starten auch immer so 8 bis 10 Minuten hinterher. Das heißt, ich kann leider auch nicht in Echtzeit sehen, was da gerade versucht wird und ggf. schied geht. Haben das andere auch?

Irgendwelche Ideen?

Nachtrag:
Habe EVCC gestoppt und beide Wallboxen neu gestartet, damit die sozusagen in den "Wartemodus" gehen und den Start nicht verzögern. Dann alles so schnell wie möglich gemacht: Captcha erzeugt, in evcc.yaml kopiert und EVCC neu gestartet. Zwischen Erzeugung Captcha und Start EVCC knappe 10 Sekunden.
Log zeigt, dass die Wallboxen kein Problem gemacht habe. Und trotzdem scheint die Zeit nicht zu reichen:

starting evcc: 'EVCC_DATABASE_DSN=/data/evcc.db evcc --config /config/evcc.yaml'
[main ] INFO 2024/11/30 11:10:31 evcc 0.131.8
[main ] INFO 2024/11/30 11:10:31 using config file: /config/evcc.yaml
[db ] INFO 2024/11/30 11:10:31 using sqlite database: /data/evcc.db
[main ] INFO 2024/11/30 11:10:32 listening at :7070
[e86-1] DEBUG 2024/11/30 11:10:43 waiting for chargepoint: 5m0s
[ac-1] DEBUG 2024/11/30 11:10:43 waiting for chargepoint: 5m0s
[ocpp ] DEBUG 2024/11/30 11:11:38 charge point connected: e8
[e8-1] DEBUG 2024/11/30 11:11:40 failed configuring availability: Scheduled
[ocpp ] DEBUG 2024/11/30 11:11:49 charge point connected: acd
[acd-1] DEBUG 2024/11/30 11:11:49 failed configuring availability: Scheduled
[bmw ] DEBUG 2024/11/30 11:12:20 identity.Login - no database token found. Proceeding to login via user, password and captcha.
[main ] ERROR 2024/11/30 11:12:21 creating vehicle ev4 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)

Nächstes Edit:

Jetzt habe ich es geschafft, zwischen Abruf Token und Abfrage EVCC nur ca. eine Minute zu haben. Ergebnis aber weiterhin die gleiche Fehlermeldung. Es liegt wohl doch nicht an der Zeit

starting evcc: 'EVCC_DATABASE_DSN=/data/evcc.db evcc --config /config/evcc.yaml'
[main ] INFO 2024/11/30 13:00:15 evcc 0.131.8
[main ] INFO 2024/11/30 13:00:15 using config file: /config/evcc.yaml
[db ] INFO 2024/11/30 13:00:15 using sqlite database: /data/evcc.db
[main ] INFO 2024/11/30 13:00:15 listening at :7070
[acd0] DEBUG 2024/11/30 13:00:24 waiting for chargepoint: 5m0s
[e8] DEBUG 2024/11/30 13:00:24 waiting for chargepoint: 5m0s
[ocpp ] DEBUG 2024/11/30 13:00:47 charge point connected: acd
[a] DEBUG 2024/11/30 13:00:47 failed configuring availability: Scheduled
[ocpp ] DEBUG 2024/11/30 13:00:52 charge point connected: e8
[e8] DEBUG 2024/11/30 13:00:52 failed configuring availability: Scheduled
[bmw ] DEBUG 2024/11/30 13:01:12 identity.Login - no database token found. Proceeding to login via user, password and captcha.
[main ] ERROR 2024/11/30 13:01:13 creating vehicle ev4 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)

Edit 3:

Weitere Versuche, neue Fehlermeldung:

Using config file: /config/evcc.yaml
starting evcc: 'EVCC_DATABASE_DSN=/data/evcc.db evcc --config /config/evcc.yaml'
[main ] INFO 2024/11/30 13:54:41 evcc 0.131.8
[main ] INFO 2024/11/30 13:54:41 using config file: /config/evcc.yaml
[db ] INFO 2024/11/30 13:54:41 using sqlite database: /data/evcc.db
[main ] INFO 2024/11/30 13:54:41 listening at :7070
[e86] DEBUG 2024/11/30 13:54:50 waiting for chargepoint: 5m0s
[acd0] DEBUG 2024/11/30 13:54:50 waiting for chargepoint: 5m0s
[ocpp ] DEBUG 2024/11/30 13:55:05 charge point connected: e8
[e8] DEBUG 2024/11/30 13:55:05 failed configuring availability: Scheduled
[ocpp ] DEBUG 2024/11/30 13:55:15 charge point connected: acd0
[acd0] DEBUG 2024/11/30 13:55:15 failed configuring availability: Scheduled
[bmw ] DEBUG 2024/11/30 13:55:36 identity.Login - no database token found. Proceeding to login via user, password and captcha.
[main ] ERROR 2024/11/30 13:55:46 creating vehicle ev4 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': cannot get vehicles: Get "https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732971336848": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

@lingej
Copy link

lingej commented Nov 30, 2024

@andig v0.131.8 ist bei mir installiert, hacaptcha für meinen Mini ist gesetzt und der SoC wird wieder ausgelesen.

Vielen Dank ans ganze Team für die tolle Arbeit.

@pk1057
Copy link

pk1057 commented Nov 30, 2024

Bei mir will es noch nicht so, aber da kann auch BMW schuld dran sein:
[bmw ] DEBUG 2024/11/30 13:59:22 identity.Login - database token found
[bmw ] DEBUG 2024/11/30 13:59:22 identity.Login - database token found
[main ] ERROR 2024/11/30 13:59:32 creating vehicle ev2 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': cannot get vehicles: Get "https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732971562352": net/http: request canceled (Client.Timeout exceeded while awaiting headers)
[main ] ERROR 2024/11/30 13:59:32 creating vehicle ev1 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': cannot get vehicles: Get "https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732971562356": net/http: request canceled (Client.Timeout exceeded while awaiting headers)

@cdyna43
Copy link

cdyna43 commented Nov 30, 2024

Bei mir will es noch nicht so, aber da kann auch BMW schuld dran sein: [bmw ] DEBUG 2024/11/30 13:59:22 identity.Login - database token found [bmw ] DEBUG 2024/11/30 13:59:22 identity.Login - database token found [main ] ERROR 2024/11/30 13:59:32 creating vehicle ev2 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': cannot get vehicles: Get "https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732971562352": net/http: request canceled (Client.Timeout exceeded while awaiting headers) [main ] ERROR 2024/11/30 13:59:32 creating vehicle ev1 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': cannot get vehicles: Get "https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732971562356": net/http: request canceled (Client.Timeout exceeded while awaiting headers)

Selber Fehler wie bei mir...
Aber bei dir haben wir "database token found"

@Zeff1971
Copy link

Zeff1971 commented Nov 30, 2024

Hi, ich hatte die gleichen (bzw. ähnliche) Fehlermeldungen aber nach einem Passwortreset bei BMW sind nun meine beiden Fahrzeuge wieder online. Bevor es geklappt hat, musste ich auch mehrfach neu starten. Bei ersten Mal hatte ich ein 401-Fehler bekommen.
Viel Erfolg!

@Worog5
Copy link

Worog5 commented Nov 30, 2024

Leider läuft es bei mir nicht so rund wie bei anderen. Ich habe trotz Update auf die 0.131.8 Probleme meinen Mini wieder online zu bekommen.
Folgende Fehlermeldung bekomme ich:
[mini ] DEBUG 2024/11/30 15:36:48 identity.Login - no database token found. Proceeding to login via user, password and captcha. [main ] ERROR 2024/11/30 15:36:49 creating vehicle xxx failed: cannot create vehicle type 'template': cannot create vehicle type 'mini': unexpected status: 429 (Too Many Requests)

Jemand eine Idee?

@flofreund
Copy link

Hallo Zusammen,
ich habe gerade Update gemacht, hat alles gekappt. Vielen Dank
hcaptcha: bei beiden BMWs eingefügt. geht.

@Chepo21
Copy link

Chepo21 commented Nov 30, 2024

Bei mir hat auch geklappt. Danke!

@cdyna43
Copy link

cdyna43 commented Nov 30, 2024

Hi, ich hatte die gleichen (bzw. ähnliche) Fehlermeldungen aber nach einem Passwortreset bei BMW sind nun meine beiden Fahrzeuge wieder online. Bevor es geklappt hat, musste ich auch mehrfach neu starten. Bei ersten Mal hatte ich ein 401-Fehler bekommen. Viel Erfolg!

Mehrfach neu starten und jedes Mal neuen Captcha einfügen oder einfach so?

Hat irgend jemand es unter Home Assistant zum Laufen bekommen? Ich habe es gefühlt 100 Mal versucht, auch mit geändertem Passwort.
Es bleibt bei

"creating vehicle ev4 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)"

Nachtrag:
Habe extra noch einmal EVCC unter Windows installiert, um auszuschließen, dass es am Homeassistant liegt. Passwort bei BMW geändert. Neues Captcha.

Neues Ergebnis:
ERROR 2024/11/30 18:26:35 creating vehicle ev4 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': cannot get vehicles: Get "https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732987595029": read tcp [2a02:8071:d80:4b00:b47a:3dbb:17e4:f3a4]:51936->[2620:1ec:bdf::45]:443: wsarecv: An existing connection was forcibly closed by the remote host.

Nächster Edit:
Als ich mir gerade gesagt hatte, dass das jetzt wirklich der allerletzte Versuch ist - noch einmal neuer Captcha - funktioniert es unter Windows.
Versuch unter HA folgt.

Nächster Edit:
Unter HA weiter der 401-Fehler.

@Marc2480
Copy link

Hallo Zusammen, ich habe gerade Update gemacht, hat alles gekappt. Vielen Dank hcaptcha: bei beiden BMWs eingefügt. geht.

Do you use the same hcaptcha for both cars ?

thx!

@Zeff1971
Copy link

Hallo Zusammen, ich habe gerade Update gemacht, hat alles gekappt. Vielen Dank hcaptcha: bei beiden BMWs eingefügt. geht.

Do you use the same hcaptcha for both cars ?

thx!

Hi, yes both the same. Best regards

@Zeff1971
Copy link

Hi, ich hatte die gleichen (bzw. ähnliche) Fehlermeldungen aber nach einem Passwortreset bei BMW sind nun meine beiden Fahrzeuge wieder online. Bevor es geklappt hat, musste ich auch mehrfach neu starten. Bei ersten Mal hatte ich ein 401-Fehler bekommen. Viel Erfolg!

Mehrfach neu starten und jedes Mal neuen Captcha einfügen oder einfach so?

Hat irgend jemand es unter Home Assistant zum Laufen bekommen? Ich habe es gefühlt 100 Mal versucht, auch mit geändertem Passwort. Es bleibt bei

"creating vehicle ev4 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)"

Nachtrag: Habe extra noch einmal EVCC unter Windows installiert, um auszuschließen, dass es am Homeassistant liegt. Passwort bei BMW geändert. Neues Captcha.

Neues Ergebnis: ERROR 2024/11/30 18:26:35 creating vehicle ev4 failed: cannot create vehicle type 'template': cannot create vehicle type 'bmw': cannot get vehicles: Get "https://cocoapi.bmwgroup.com/eadrax-vcs/v4/vehicles?apptimezone=120&appDateTime=1732987595029": read tcp [2a02:8071:d80:4b00:b47a:3dbb:17e4:f3a4]:51936->[2620:1ec:bdf::45]:443: wsarecv: An existing connection was forcibly closed by the remote host.

Nächster Edit: Als ich mir gerade gesagt hatte, dass das jetzt wirklich der allerletzte Versuch ist - noch einmal neuer Captcha - funktioniert es unter Windows. Versuch unter HA folgt.

Nächster Edit: Unter HA weiter der 401-Fehler.

Hi, bei mir war captcha in der Datenbank und dann habe ich mehrfach gestartet ohne etwas zu ändern. Läuft unter Home Assistant. Viel Erfolg.

@m1lk0
Copy link

m1lk0 commented Nov 30, 2024

Funktioniert hier, mit Home Assistant.
Danke - habe auch nochmal das Sponsoring für diesen Fix aktualisiert.

@blenni
Copy link
Contributor

blenni commented Nov 30, 2024

Ich bekomme keinen Fehler 401, sondern 403:
Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method): unexpected status: 403 (Forbidden)

Hat sonst auch noch jemand das Problem?

@cmayr123
Copy link

Ich bekomme keinen Fehler 401, sondern 403: Client authentication failed (e.g., login failure, unknown client, no client authentication included or unsupported authentication method): unexpected status: 403 (Forbidden)

Hat sonst auch noch jemand das Problem?

Hey,
Ja, ich habe das gleiche Problem.
Wenn ich neu starte kommt dann der Fehler "429 (Too Many Requests)"

@privat99
Copy link

Bei mir hat es direkt unter HA funktioniert.
Zuerst habe ich die Version auf 0.131.8 update durchgeführt
evcc beendet
File Editor die evcc.yaml geöffnet
In meinem BMW Eintrag nach den Zugangsdaten hcaptcha: eingefügt
Das hcaptcha erstellt und direkt mit Copy Clipboard kopiert.
Direkt in die Zeile kopiert.
Datei geschlossen und in einem anderen Fenster den evcc Dienst gestartet.

Fahrzeug wurde direkt erkannt.

Ich habe irgendwo gelesen, dass das hcaptcha nur kurze Zeit gültig ist.

Danke an allen die die Losung getestet und umgesetzt haben.

@BrickTop87
Copy link
Contributor Author

@blenni und @cmayr123: Bei euch klingt es als würde BMW wegen zu vielen Zugriffen den Zugang temporär blockieren. Habt ihr sonst noch was parallel am laufen, was auf die BMW Dienste zugreift?
Ich würde mal versuchen, evcc und alle sonstigen Dienste mit BMW-Zugriff für eine halbe Stunde oder Stunde komplett zu stoppen. Auch keine BMW App verwenden. Und dann nur evcc starten mit einem ganz frisch generierten hcaptcha.

@pdonovan
Copy link

pdonovan commented Dec 1, 2024

I had to comment out the loadpoints and chargers section in my evcc.yaml to disable my charger so that EVCC started up quick enough to avoid the hcaptcha token from expiring. Once it had got the token I re-enabled the charger and started the evcc service again.
Is there a way to pass a command line arg to tell evcc where to find the database? Then users can use the evcc -c /etc/evcc.yaml -l debug vehicle method to just quickly get the login done.

@BrickTop87
Copy link
Contributor Author

I didn't realize that there are setups where evcc needs a lot of time to start up.
You should be able to set the database path by calling
export EVCC_DATABASE_DSN=/path/to/db/evcc.db
before calling evcc.

@cdyna43
Copy link

cdyna43 commented Dec 1, 2024

Funktioniert hier, mit Home Assistant. Danke - habe auch nochmal das Sponsoring für diesen Fix aktualisiert.

Bei mir unter Home Assistant immer der 401er Fehler. Identische evcc.yaml hat unter Windows eine Minute vorher funktioniert...

Ist es bei euch eigentlich auch so, dass ihr unter HA beim Starten die Logs nicht seht? Die Logs kommen erst, wenn er entweder verbunden ist oder aber, wenn er wegen FATAL abgebrochen hat - sprich, man sieht immer erst nach 5 bis 10 Minuten, was Sache ist.

Vielleicht sollte ich einfach mal mein EVCC auf dem HA neu installieren...

Edit:
EVCC auf HA de- und neu installiert. Copy/paste aus der evcc-yaml, die unter Windows lief. Ich war etwas erstaunt, dass ich beim Starten meine alten Log gesehen habe - Ist das normal, dass bei der De-Installation gespeichert bleiben ? Nicht dass ich was auch immer für den Fehler verantwortlich ist, nicht deinstalliert habe.

Ergebnis weiterhin:
[bmw ] DEBUG 2024/12/01 08:53:54 identity.Login - no database token found. Proceeding to login via user, password and captcha.
[main ] ERROR 2024/12/01 08:53:54 creating vehicle ev4 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)

Bei den Protokollen bekomme ich übrigens bisweilen:
Fehler beim Abrufen der 49686a9f_evcc-Protokolle, network error

Weiterer Nachtrag:
Home Assistant komplett neu aufgesetzt. Nur EVCC und File Explorer. Siehe da, Logs wieder in Echtzeit und nach einigen Versuchen klappt auch die Verbundung zu BMW. Jetzt kann ich meinen Sonntag damit verbringen, meinen HA wieder aufzusetzen...

@Marc2480
Copy link

Marc2480 commented Dec 1, 2024

I struggled a bit to get my existing configuration running with the hcaptcha, adding the car and captcha in the web-configuration would work, but not in the yaml config.

What fixed it for me was use to "evcc migrate" and adding a fresh captcha in the yaml to get the existing configuration running.

@pk1057
Copy link

pk1057 commented Dec 1, 2024

Bei mir geht es inzwischen.
Habe ein Auto auskommentiert für das andere ein hcaptcha geholt und den container neu gestartet dann war die Meldung weg.
Danach den zweiten mit den hcaptcha des ersten wieder rein und es ging .
Ob es nun daran lag oder BMW mal wieder Probleme hatte keine Ahnung.
Ein riesen Lob und Dank an die Entwickler für ihre unermüdliche Arbeit um uns aus diesem Vendor Lock In versuchen zu befreien !!!!!

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

Successfully merging this pull request may close these issues.