-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Archived: Hyundai Kia: Refresh‐Token ermitteln
tl;dr; Have a look at the gist
Kia hat zum Login ein Captcha hinzugefügt, dass sich programmatisch nicht lösen lässt. Damit hat evcc keine Möglichkeit mehr, die Fahrzeugdaten auszulesen, was zur Folge hat, dass sich Funktionen, wie "lade bis zu 80% SOC" oder Ladepläne, nicht mehr sinnvoll nutzen lassen.
Um dieses Problem zu lösen, wurde die Kia-Integration so umgebaut, dass sie statt des zum Kia-Account gehörenden Passworts jetzt direkt das sogenannte Refresh-Token erwartet, das zuvor von evcc selbst ermittelt wurde. Stellt sich also die Frage:
Wie komme ich an das Refresh-Token?
Leider ist das nicht ganz einfach, weshalb das Verfahren im Folgenden beschrieben wird:
Prinzipiell sollte das beschriebene Verfahren mit jedem Browser funktionieren, der die Chromium-Engine nutzt (Chrome, Vivaldi, Brave, ...). Wer Spass daran hat, es mit anderen Browsern zu probieren, ist herzlich eingeladen. Wichtig ist, dass der verwendete Browser
- das Einstellen des User-Agents erlaubt
- bei einer Weiterleitung auf eine Seite mit einem leeren/unbekannten Content-Typ nicht automatisch einen Download startet (Ja, Safari, du bist gemeint)
-
Wenn noch nicht gemacht, dann Google Chrome installieren ;)
-
Einen leeren Tab öffnen
-
"Entwicklertools" aktivieren:
- Auf die drei senkrechten Punkte in der rechten oberen Ecke klicken
- Im aufklappenden Menü auf "Weitere Tools" und dort dann
- auf "Entwicklertools" klicken
-
Konfiguration für User-Agent aufrufen:
- Im Frame mit den Entwicklertools wieder auf die drei senkrechten Punkte klicken
- Im angezeigten Menü dann "More tools" und dort dann
- "Network conditions" auswählen
-
UserAgent ändern:
Im unteren Teil des Entwicklertoos-Fensters wird jetzt die Konfiguration der "Network conditions" angezeigt. Dort
-
Den Haken bei "Use browser default" entfernen
-
In das Eingabefeld die Zeichenkette
Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19_CCS_APP_AOSeintragen (eine Zeile!)
-
-
Fertig Damit sind die Vorbereitungen abgeschlossen, den Browser erstmal einfach so mit dem leeren Fenster und den offenen Entwicklertools stehen lassen
-
Für Kia:
Am einfachsten ist es, den Punkten 1 bis 3 der Anleitungen auf dieser Seite zu folgen.
-
Für Hyundai:
Das Python-Script zum Ermitteln des Refresh-Tokens ist hier: HyundaiFetchApiTokensSelenium.py, dann den Punkten 2-3 der Anleitung auf dieser Seite folgen.
War alles erfolgreich, sollte am Ende eine Ausgabe wie diese zu sehen sein:
Step 6: ✅ Your tokens are:
- Refresh Token: <your refresh token>
- Access Token: <your access token - ignore this ;)>Den hinter "Refresh Token:" angezeigten String kopieren und als Passwort in der UI- oder evcc.yaml-Fahrzeugkonfiguration des Fahrzeuges einsetzen.
Danach evcc neu starten - fertig.
Since Kia - once again - changed their login scheme to now use a Captcha check, there's no feasible way to retrieve vehicle data using the username/password combo anymore.
This patch picks up the solution from the Hyundai_Kia_Connector and uses the password entry from evcc.yaml as the initial refresh_token to be used for subsequent oauth2 token requests.
-
If you haven't already, install Google Chrome for your desktop operating system. The reasons for using Chrome is that I couldn't get it to work using other browsers - updates and hints welcome.
-
Open an empty tab and activate the "developer tools" by clicking the three dots in the upper right corner, then select "More tools" (Weitere Tools) and there choose "Developer Tools" (Entwicklertools)

-
In the developer tools frame click on the three dots _in the tab menu line and there select first "More Tools" and there "Network conditions".

-
In the bottom of the develop tools frame in the "User agent section" now unselect "Use browser default" and enter the following custom string (one line!):
Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19_CCS_APP_AOS
-
Done with the preparations, leave the empty tab open
-
For Kia:
Follow instructions 1 to 3 from the Hyundai_Kia_Connect discussion here
-
For Hyundai:
The Python script to generate the refresh token is here: HyundaiFetchApiTokensSelenium.py. Then follow instructions 2 to 3 from the Hyundai_Kia_Connect discussion here
If successful this will output something like this:
bash Step 6: ✅ Your tokens are: - Refresh Token: <your refresh token> - Access Token: <your access token - ignore this ;)>
Replace the password entry for your vehicle in the UI or evcc.yaml config with the refresh_token from above and restart evcc.
Don't worry about time constraints there. The refresh token seems to be valid for quite a while, roughly an hour I think.