NEWS
Adapter Hyundai (Bluelink) oder KIA (UVO)
-
ich komme nochmals zurück zu dem Ordner vehicleStatus
Hier waren früher die Werte für die Restkilometer vorhanden, die ich in der App von Bluelink sehe.
Ebenfalls fehlt mir die Restladezeit.
Ich habe in den Raw Datenpunkte geschaut aber nichts passendes gefunden.
Wie komme ich wieder auf die Werte?@Elektronikwelt sagte in Adapter Hyundai (Bluelink) oder KIA (UVO):
Ich habe in den Raw Datenpunkte geschaut aber nichts passendes gefunden.
es ist ALLES aber wirklich ALLES unter RAW vorhanden.. die anderen Datenpunkte werden aus diesem Ordner IMMER befüllt..
also es ist ALLES dadrunter zu finden..wenns geliefert wurde
-
@fichte_112 : Ich bekomme zum Ende des Scripts immer diese Fehlermeldung:
An unexpected error occurred: 'NoneType' object has no attribute 'group'
Cleaning up and closing the browser.Hat jemand eine Idee was falsch läuft?
Gruß Stefan
-
@fichte_112 : Ich bekomme zum Ende des Scripts immer diese Fehlermeldung:
An unexpected error occurred: 'NoneType' object has no attribute 'group'
Cleaning up and closing the browser.Hat jemand eine Idee was falsch läuft?
Gruß Stefan
probier mal den hier
https://github.com/RustyDust/bluelink_refresh_token
damit geht es...
so geht der aufruf
python bluelinktoken.py --brand hyundai -
@arteck
ich habe die Anleitung angepasst. Jetzt ist es aber wieder kein script von Dir. Sag bescheid, wenn Du das ändern möchtest.Anleitung zur Erstellung eines Tokens für Hyundai oder KIA mit Windows
-
@arteck
ich habe die Anleitung angepasst. Jetzt ist es aber wieder kein script von Dir. Sag bescheid, wenn Du das ändern möchtest.Anleitung zur Erstellung eines Tokens für Hyundai oder KIA mit Windows
@fichte_112 ich hab auf ein fremd script verlinkt in der doku.. hab da kein bock ständig anpssungen hinterher zu machen.. weil kia oder hyundai mal was rum fummeln....
-
@arteck Ich wollte dir nur bescheid geben, weil die Anleitung auf deiner github Seite verlinkt ist.
-
@arteck
ich habe die Anleitung angepasst. Jetzt ist es aber wieder kein script von Dir. Sag bescheid, wenn Du das ändern möchtest.Anleitung zur Erstellung eines Tokens für Hyundai oder KIA mit Windows
@fichte_112 sagte in Adapter Hyundai (Bluelink) oder KIA (UVO):
@arteck
ich habe die Anleitung angepasst. Jetzt ist es aber wieder kein script von Dir. Sag bescheid, wenn Du das ändern möchtest.Anleitung zur Erstellung eines Tokens für Hyundai oder KIA mit Windows
ohne `
iwr -UseBasicParsing -OutFile ApiToken.py https://raw.githubusercontent.com/RustyDust/bluelink_refresh_token/refs/heads/main/bluelinktoken.py -
Ich schau mir das morgen nochmal genauer an. Dann wird es korrigiert.
-
ich habe die Anleitung angepasst. Das Script ist jetzt in der Anleitung integriert und muss nicht extern geladen werden. Es kann nun kein Code von "bösen Menschen" eingefügt werden.
Anleitung zur Erstellung eines Tokens für Hyundai oder KIA mit Windows
-
Hallo zusammen, hoffe jemand kann mir helfen. Möchte gerne den Token auslesen um unseren KIA in den Iobroker zu integrieren. Bin der Anleitung gefolgt um Refresh Token und ein Access Token auszulesen. Wenn ich den Code ausführe und dann die Chrome Webseite öffnet, gebe ich die KIA Log in Daten ein und erhalte dann aber nach einigerzeit die Rückmeldung "ERROR Timeout - Login nicht abgeschlossen oder Erolgsmeldung Element nicht gefunden" Habe dies jetzt schon mehrmals versucht, keine Ahnung was ich falsch mache. Kann mir jemand helfen, wäre super.
-
Hallo zusammen, hoffe jemand kann mir helfen. Möchte gerne den Token auslesen um unseren KIA in den Iobroker zu integrieren. Bin der Anleitung gefolgt um Refresh Token und ein Access Token auszulesen. Wenn ich den Code ausführe und dann die Chrome Webseite öffnet, gebe ich die KIA Log in Daten ein und erhalte dann aber nach einigerzeit die Rückmeldung "ERROR Timeout - Login nicht abgeschlossen oder Erolgsmeldung Element nicht gefunden" Habe dies jetzt schon mehrmals versucht, keine Ahnung was ich falsch mache. Kann mir jemand helfen, wäre super.
-
Hallo zusammen, hoffe jemand kann mir helfen. Möchte gerne den Token auslesen um unseren KIA in den Iobroker zu integrieren. Bin der Anleitung gefolgt um Refresh Token und ein Access Token auszulesen. Wenn ich den Code ausführe und dann die Chrome Webseite öffnet, gebe ich die KIA Log in Daten ein und erhalte dann aber nach einigerzeit die Rückmeldung "ERROR Timeout - Login nicht abgeschlossen oder Erolgsmeldung Element nicht gefunden" Habe dies jetzt schon mehrmals versucht, keine Ahnung was ich falsch mache. Kann mir jemand helfen, wäre super.
-
Ich habe den Code in der Anleitung angepasst.
-
Hallo,
ich habe erfolgreich einen Refresh-Token erzeugt und auch eine Verbindung zu meinem Hyundai Kona hergestellt (V 3.1.25). Leider kann ich keine Befehle senden:
2025-12-31 13:26:07.646 info Starting clima for vehicle
2025-12-31 13:26:07.970 error ManagedBluelinkyError: @EuropeVehicle.start: [400] Bad Request on [POST] https://prd.eu-ccapi.hyundai.com:8080/api/v2/spa/vehicles/9889df0a-06e5-424a-885a-53cc2e06ee85/control/temperature - {"retCode":"F","resCode":"4002","resMsg":"Invalid request body - Invalid deviceId. ","msgId":"e220c0c0-e643-11f0-9379-67a2e01a75de"}Hat da jemand einen Tipp für mich?
-
Hallo,
ich habe erfolgreich einen Refresh-Token erzeugt und auch eine Verbindung zu meinem Hyundai Kona hergestellt (V 3.1.25). Leider kann ich keine Befehle senden:
2025-12-31 13:26:07.646 info Starting clima for vehicle
2025-12-31 13:26:07.970 error ManagedBluelinkyError: @EuropeVehicle.start: [400] Bad Request on [POST] https://prd.eu-ccapi.hyundai.com:8080/api/v2/spa/vehicles/9889df0a-06e5-424a-885a-53cc2e06ee85/control/temperature - {"retCode":"F","resCode":"4002","resMsg":"Invalid request body - Invalid deviceId. ","msgId":"e220c0c0-e643-11f0-9379-67a2e01a75de"}Hat da jemand einen Tipp für mich?
-
Anleitung zur Erstellung eines Tokens für Hyundai oder KIA mit Windows
Python Releases for Windows installieren.
Google Chrome installierenIn der Konsole folgenden Befehl ausführen. (oder den Adapter Bluelink löschen)
rm -r /opt/iobroker/node_modules/bluelinky/Im Iobroker den Reiter Adapter anklicken. Dan den Expertenmodus aktivieren und die Katze anklicken.


Den Reiter Benutzerdefiniert auswählen und folgendes eintragen und installieren.
https://github.com/Newan/ioBroker.bluelink.gitJetzt Windows PowerShell mit administrativen Rechten starten.
Jetzt folgende Befehle nacheinander ausführen.
Set-ExecutionPolicy UnrestrictedA eingeben und mit Enter bestätigen.
mkdir $env:TEMP\token 2>$null; cd $env:TEMP\token$code = @" # Original authors: # Kia: fuatakgun (https://gist.githubusercontent.com/fuatakgun/fa4ef1e1d48b8dca2d22133d4d028dc9#gistfile1.txt) # Hyundai: Maaxion (https://gist.github.com/Maaxion/22a38ba8fb06937da18482ddf35171ac#file-gistfile1-txt) # import argparse import re from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException import requests import time def main(): """ Determine brand to get the refresh token for """ parser = argparse.ArgumentParser() parser.add_argument("--brand", help="Brand of vehicle (Hyundai/Kia)", type=str.lower, required=True, choices=['hyundai','kia']) args = parser.parse_args() """ Populate global variables """ BASE_URL = f"https://idpconnect-eu.{args.brand}.com/auth/api/v2/user/oauth2/" TOKEN_URL = f"{BASE_URL}token" if args.brand == 'kia': # Kia specific variables here CLIENT_ID = "fdc85c00-0a2f-4c64-bcb4-2cfb1500730a" CLIENT_SECRET = "secret" REDIRECT_URL_FINAL = "https://prd.eu-ccapi.kia.com:8080/api/v1/user/oauth2/redirect" SUCCESS_ELEMENT_SELECTOR = "a[class='logout user']" LOGIN_URL = f"{BASE_URL}authorize?ui_locales=de&scope=openid%20profile%20email%20phone&response_type=code&client_id=peukiaidm-online-sales&redirect_uri=https://www.kia.com/api/bin/oneid/login&state=aHR0cHM6Ly93d3cua2lhLmNvbTo0NDMvZGUvP21zb2NraWQ9MjM1NDU0ODBmNmUyNjg5NDIwMmU0MDBjZjc2OTY5NWQmX3RtPTE3NTYzMTg3MjY1OTImX3RtPTE3NTYzMjQyMTcxMjY=_default" elif args.brand == 'hyundai': # Hyundai specific variables CLIENT_ID = "6d477c38-3ca4-4cf3-9557-2a1929a94654" CLIENT_SECRET = "KUy49XxPzLpLuoK0xhBC77W6VXhmtQR9iQhmIFjjoY4IpxsV" REDIRECT_URL_FINAL = "https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/oauth2/token" SUCCESS_ELEMENT_SELECTOR = "button.mail_check" LOGIN_URL = f"{BASE_URL}authorize?client_id=peuhyundaiidm-ctb&redirect_uri=https%3A%2F%2Fctbapi.hyundai-europe.com%2Fapi%2Fauth&nonce=&state=NL_&scope=openid+profile+email+phone&response_type=code&connector_client_id=peuhyundaiidm-ctb&connector_scope=&connector_session_key=&country=&captcha=1&ui_locales=en-US" REDIRECT_URL = f"{BASE_URL}authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URL_FINAL}&lang=de&state=ccsp" """ Main function to run the Selenium automation. """ # Initialize the Chrome WebDriver # Make sure you have chromedriver installed and in your PATH, # or specify the path to it. options = webdriver.ChromeOptions() options.add_argument("user-agent=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") options.add_argument("--auto-open-devtools-for-tabs") driver = webdriver.Chrome(options=options) driver.maximize_window() # 1. Open the login page print(f"Opening login page: {LOGIN_URL}") driver.get(LOGIN_URL) print("\n" + "="*50) print("Please log in manually in the browser window.") print("The script will wait for you to complete the login...") print("="*50 + "\n") try: wait = WebDriverWait(driver, 300) # 300-second timeout if args.brand == "kia": wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, SUCCESS_ELEMENT_SELECTOR))) else: wait.until(EC.any_of( EC.presence_of_element_located((By.CSS_SELECTOR, SUCCESS_ELEMENT_SELECTOR)), EC.presence_of_element_located((By.CSS_SELECTOR, "button.ctb_button")) ) ) print("✅ Login successful! Element found.") print(f"Redirecting to: {REDIRECT_URL}") driver.get(REDIRECT_URL) wait = WebDriverWait(driver, 15) # 15-second timeout current_url = "" tries_left = 10 redir_found = False while (tries_left > 0): current_url = driver.current_url print(f" - [{11 - tries_left}] Waiting for redirect URLwith code") if args.brand == "kia": if re.match(r'^https://.*:8080/api/v1/user/oauth2/redirect', current_url): redir_found = True break elif args.brand == "hyundai": if re.match(r'^https://.*:8080/api/v1/user/oauth2/token', current_url): redir_found = True break tries_left -= 1 time.sleep(1) if redir_found == False: print(f"\n❌ Failed to get redirected to correct URL, got {current_url} instead") code = re.search( r'code=([0-9a-fA-F-]{36}\.[0-9a-fA-F-]{36}\.[0-9a-fA-F-]{36})', current_url ).group(1) data = { "grant_type": "authorization_code", "code": code, "redirect_uri": REDIRECT_URL_FINAL, "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, } session = requests.Session() response = session.post(TOKEN_URL, data=data) if response.status_code == 200: tokens = response.json() if tokens is not None: refresh_token = tokens["refresh_token"] access_token = tokens["access_token"] print(f"\n✅ Your tokens are:\n\n- Refresh Token: {refresh_token}\n- Access Token: {access_token}") else: print(f"\n❌ Error getting tokens from der API!\n{response.text}") except TimeoutException: print("❌ Timed out after 5 minutes. Login was not completed or the success element was not found.") except Exception as e: print(f"An unexpected error occurred: {e}") time.sleep(3600) finally: print("Cleaning up and closing the browser.") driver.quit() if __name__ == "__main__": main() "@ $code | Out-File -FilePath "$env:TEMP\token\ApiToken.py" -Encoding UTF8py -m venv .venv.\.venv\Scripts\Activate.ps1pip install --upgrade pippip install selenium requests webdriver-managerpy -m pip install --upgrade pip selenium requestsAchtung jetzt nur den Befehl für Hyundai oder KIA verwenden!!!
für Hyundai
clspy .\ApiToken.py --brand hyundaifür KIA
clspy .\ApiToken.py --brand kiaHier geht es für beide weiter.
Jetzt sollte sich Chrome öffnen. Dort mit den Benutzerdaten einloggen.
Nun sollte im Fenster von PowerShell ein Refresh Token und ein Access Token erscheinen.
Diese mit der Maus markieren und mit Strg-C kopieren und in eine leere Textdatei mit Strg-V einfügen.
Der Refresh Token ist das Passwort für den Bluelink AdapterAls letztes kann nun noch die Ausführungsrichtlinien (Unrestricted) für PowerShell-Scripts entfernt und der temporäre Ordner gelöscht werden. Dazu in der Powershell die folgenden Befehle eingeben.
Set-ExecutionPolicy UndefinedA eingeben und mit Enter bestätigen.
cd..Remove-item $env:TEMP\tokenA eingeben und mit Enter bestätigen.
Viel Spass
@fichte_112 Auch von mir nochmals ein ganz herzliches Dankeschön für die super Anleitung!
Es hat wahrscheinlich keiner so recht mitbekommen, aber @fichte_112 hat vor zwei Tagen das Script nochmals angepasst, nachdem es bei mir nicht mehr funktionierte und ich per PN um Hilfe bat.
Sensationell!!!
