Hyundai Bluelink gesperrt (Fehler 9035)? So kommt der Ladestand über die offizielle Pleos-API
Wer seinen Hyundai, Kia oder Genesis in Home Assistant, evcc oder einem eigenen Skript eingebunden hat, kennt seit Mitte Oktober 2026 vermutlich diese Meldung: Fehler 9035. Von einem Tag auf den anderen kam kein Ladestand mehr an. Bei mir hing daran ein ganzes System – mein Energiemanagement JG Energy braucht den Ladestand des Ioniq 5, um Überschussladen und Ladepläne zu steuern.
Hier beschreibe ich, was passiert ist, wie ich das Problem mit der offiziellen Pleos Vehicle Data API gelöst habe und was man dabei beachten sollte.
Was passiert ist
Fast alle Integrationen für Hyundai und Kia nutzen dieselbe inoffizielle Schnittstelle: Sie geben sich gegenüber den Bluelink-Servern als Smartphone-App aus. In Python steckt dahinter meist die Bibliothek hyundai_kia_connect_api.
Am 13. Oktober 2026 hat Hyundai in Europa begonnen, jede Anfrage auf eine Signatur im Header zu prüfen, die nur die offizielle App erzeugen konnte. Alle anderen bekamen Fehler 9035. Die App selbst lief normal weiter – das Konto war also nicht gesperrt, nur fremde Programme waren draußen.
Zwei Tage später kam Version 4.35.3 der Bibliothek, die die Signatur nachbildet. Seitdem läuft Bluelink wieder. Aber: Das ist ein Katz-und-Maus-Spiel. Hyundai kann die Prüfung jederzeit wieder ändern.
Der offizielle Weg: EU Data Act und Pleos
Seit dem EU Data Act müssen Hersteller Fahrzeugdaten an ihre Besitzer herausgeben. Die Hyundai Motor Group (Hyundai, Kia, Genesis) macht das über Pleos und die Vehicle Data API. Für Privatnutzer in Europa ist sie kostenlos.
Die API liefert unter anderem:
| Endpunkt | Inhalt |
|---|---|
/batteries | Ladestand, Ladezustand, Kabel, Ziel-Ladestand, Restzeit |
/powertrains | Antrieb, Reichweite |
/driving | Fahrbetrieb, Kilometerstand |
/locations | Standort |
/status | Sensor-Status des Fahrzeugs |
Wichtig für die Erwartungen: Die API liefert den Stand, den das Auto zuletzt an Hyundai übertragen hat. Sie weckt das Auto nicht, und Befehle wie „Ladelimit setzen“ oder „Klimatisierung starten“ gibt es nicht.
Einrichtung Schritt für Schritt
- Im Pleos Playground (pleos.ai/playground) den Bereich My Vehicle Data API öffnen und den Hersteller wählen.
- Mit dem Bluelink-Konto des Hauptnutzers anmelden – also mit dem Konto, unter dem das Auto in der App angelegt ist.
- Nach der Anmeldung zeigt der Playground eine Client-ID und ein Client-Secret. Beides sicher ablegen, z. B. in einer JSON-Datei, die nicht im Web-Verzeichnis liegt.
Falle Nr. 1: das falsche Konto. Bei uns ist der Ioniq auf ein anderes Familienmitglied registriert. Mein Browser war aber noch mit meinem eigenen Hyundai-Konto angemeldet, und der Playground hat den Schlüssel ohne Rückfrage für dieses Konto erzeugt. Der Schlüssel funktioniert dann zwar – nur ist kein Fahrzeug freigegeben. Erst ein Schlüssel, der mit dem Konto des Hauptnutzers erzeugt wurde, liefert Daten.
Falle Nr. 2: 90 Tage. Der Schlüssel ist 90 Tage gültig und wird danach automatisch widerrufen. Der Playground zeigt den Zeitraum an. Am besten gleich eine Erinnerung setzen – oder, wie in JG Energy, die Verbindung täglich testen lassen, damit ein abgelaufener Schlüssel sofort auffällt.
Der Abruf
Der Ablauf hat zwei Schritte: erst mit Client-ID und Secret ein kurzlebiges Zugriffstoken holen, dann damit die Daten.
# 1. Zugriffstoken holen
curl -s -X POST https://api.pleos.ai/v1/auth/personal-token \
-H "Content-Type: application/json" -H "Brand: hyundai" \
-d '{"clientId":"<CLIENT_ID>","clientSecret":"<CLIENT_SECRET>"}'
# → { "data": { "accessToken": "eyJ..." } }
# 2. Ladezustand abrufen
curl -s https://api.pleos.ai/v1/vehicles/<VIN>/batteries \
-H "Brand: hyundai" -H "Authorization: Bearer <ACCESS_TOKEN>"
Die für Ladesteuerungen interessanten Felder (Stand meiner Tests mit einem Ioniq 5):
| Feld | Bedeutung |
|---|---|
charge.stateOfCharge | Ladestand in % |
charge.plugin | "connected", wenn das Kabel steckt |
charge.charging | lädt gerade |
charge.targetStateOfCharge.standard | Ladelimit AC (.quick = DC) |
charge.remainTime | Restladezeit in Minuten |
distanceToEmpties (Typ EV) in /powertrains | Reichweite |
odometer.value in /driving | Kilometerstand |
timestamp je Endpunkt | wann das Auto diesen Stand gemeldet hat |
Die Feldnamen sind nicht alle offiziell dokumentiert. Ich speichere deshalb die letzte Rohantwort in einer Datei – das hat bei der Fehlersuche mehrfach geholfen.
Was ich aus dem Betrieb gelernt habe
Abgelaufene Token liefern 403, nicht 401. Das Zugriffstoken ist nur begrenzt gültig. Ein abgelaufenes Token beantwortet die API bei mir mit HTTP 403 – den Statuscode erwartet man eher bei fehlenden Rechten. Mein Client holte deshalb anfangs kein neues Token und meldete einen Fehler. Die Lösung: bei 401 und 403 einmal ein neues Token holen und die Anfrage wiederholen. Zusätzlich hole ich vor jedem Abruf ein neues Token, wenn das alte älter als 30 Minuten ist.
Der Ladestand ist nur so aktuell wie die letzte Meldung des Autos. Während der Ladung meldet sich der Ioniq nur in größeren Abständen. Für eine flüssige Anzeige rechnet JG Energy deshalb hoch: letzter echter Ladestand plus die seitdem von der Wallbox gemessene Energie, geteilt durch die gelernte Akkukapazität. Über das Ende einer Ladung entscheidet aber immer ein echter Wert – oder das Auto selbst.
Einiges fehlt. Gegenüber Bluelink fehlen bei Pleos die aktuelle Ladeleistung, die 12-V-Batterie und die Ladeklappe. Und weil die API nur lesend ist, lässt sich weder das Auto wecken noch das Ladelimit setzen.
Mein Aufbau heute
Seit Bluelink wieder läuft, nutze ich beides:
- Bluelink ist die Hauptquelle – es kann das Auto wecken und das Ladelimit setzen.
- Pleos springt automatisch ein, wenn Bluelink scheitert. Einmal am Tag testet JG Energy den Pleos-Zugang, damit ein abgelaufener Schlüssel nicht erst im Ernstfall auffällt.
Wer nur den Ladestand braucht und keine Lust auf das nächste Katz-und-Maus-Spiel hat, ist mit Pleos allein gut bedient. evcc unterstützt die Schnittstelle inzwischen ebenfalls („Hyundai EU Data Act“).
Fazit
Der EU Data Act hat hier ganz praktisch etwas gebracht: eine offizielle, kostenlose und stabile Schnittstelle zu den eigenen Fahrzeugdaten. Sie ist nur lesend und nicht ganz so aktuell wie die App – aber sie fällt nicht einfach aus, weil ein Hersteller über Nacht etwas an seinen Servern ändert.
Links