FHEM Forum

FHEM - Energiemanagement und Energieerzeugung => Wallboxen und E-Fahrzeuge => Thema gestartet von: Guzzi-Charlie am 20 Oktober 2025, 11:36:58

Titel: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Guzzi-Charlie am 20 Oktober 2025, 11:36:58
Hallo zusammen,

zur Einführung:
Hyundai hat sein Bluelink Remotesystem auf Abo-Modelle umgestellt. Ich habe Wochen gebraucht um herauszufinden das sie nicht nur das Abo-Modell eingeführt sondern auch die APP gewechselt haben. Die heißt nun myHundai-APP. Seinen alten Hyundai-Acount konnte man behalten, man mußte nur die neue APP installieren. Per APP funktionieren nun alle Remote-Funktionen wieder.

das Problem:
Leider funktioniert nun die Remote-Verbindung über fhempy nicht mehr. Damit habe ich ein großes Problem, weil ich damit meine V2H-Implementierung steuere.

die Frage:
Gibt es ein Update des KIA-Hyundai Moduls für fhempy, oder kennt Jemand einen anderen Weg um mit einem Hyundai Ioniq 5 zu kommunizieren?
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Mitch am 28 Oktober 2025, 15:47:05
da hänge ich mich mal dran
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Guzzi-Charlie am 22 November 2025, 10:00:17
Hat Keiner eine Idee?
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: dieter114 am 12 Januar 2026, 10:09:31
Moin Charlie,

ich weis nicht ober dir hilft aber sieh einmal hier nach
https://docs.evcc.io/docs/devices/vehicles#kia-bluelink
KIA hat so umgestellt das es nur noch über einen Token funktioniert
https://github.com/evcc-io/evcc/wiki/Hyundai-Kia:-Refresh-Token
Also Login / Passwort ist vorbei.
Möglicherweise geht fhempy wenn du so einen Token verwendest.
Kann aber genauso sein das das völliger Unsinn ist. Soll nur ein Denkanstoss sein.

LG WDS
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Guzzi-Charlie am 12 Januar 2026, 12:50:25
Hallo,
vielen Dank für den Tip. Ich konnte mir auch die Tokens generieren, aber mit dem bloßen Ersatz des PWD durch den Refresh-Token hat es leider nicht geklappt. Trotzdem vielen Dank für den Hinweis.

Vielleicht liegt es auch an ganz etwas Anderem.

Falls sich weiterhin Niemand der Modulersteller meldet, dann muß ich sowieso nur noch knapp 4 Monate "aushalten", denn dann sind die 4 Jahre Leasing um und das Auto geht eh zurück. Außerdem habe ich mich inzwischen wieder von den dynamischen Strompreisen verabschiedet und bin zu meinem örtlichen Stromversorger zurückgekehrt. Trotz vollautomatischer Nutzung von Niedrigstrompreisen habe ich letztes Jahr nichts mehr gespart sondern im Gegenteil sogar ca. 100€ mehr ausgegeben. Für mich lohnt der Aufwand deshalb nicht mehr.
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Rewe2000 am 08 Februar 2026, 10:11:28
Hallo,

ich hatte ähnliche Probleme mit meinem KIA EV3, auch hier musste ich die API-Abfrage mit Bluelinky (https://github.com/Hacksore/bluelinky) über einen Token umstellen, welche ich über Chrome einmalig erzeugen musste. Nun läuft die Abfrage des Autos schon mehrere Monate wieder ohne Probleme. Ich rufe die Daten über Linux unter Bluelinky (https://github.com/Hacksore/bluelinky) ab und übertrage diese mit MQTT zu Fhem, das klappt bisher problemlos.

Grundsätzlich funktioniert Bluelinky von Hacksore ja mit KIA und Hyunday, somit wäre es eventuell für dich mal einen Versuch wert. Die Einrichtung ist etwas komplex bis alles läuft, aber machbar.
Melde dich nochmals, wenn du das versuchen willst, ich könnte dann meine Lösung hier einstellen.

Gruß Reinhard

Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Guzzi-Charlie am 08 Februar 2026, 10:45:53
Hallo Reinhard,

vielen Dank für Deinen Beitrag. Wie oben schon geschrieben ist das Problem im Moment bei mir nicht mehr sehr dringend. Da ich mich bei der Wahl des nächsten Autos noch nicht festgelegt habe könnte das Problem aber wieder aktuell werden falls es wieder ein Auto aus dem Hyundai/KIA-Konzern werden sollte.

Da ich inzwischen auch die Info habe, daß es mit fhempy (zumindest im Moment) nicht mehr weitergeht müßte ich mich dann sowieso nach Alternativen umschauen.

Auch weil es sicherlich noch viele Andere betrifft wäre die Vorstellung Deiner Lösung auf jeden Fall sinnvoll.

Grüße
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: RPort am 11 Februar 2026, 20:28:37
Hallo Rewe2000,
ich versuche, mit Bluelinky den Soc meines Hyundai auszulesen. Das hat bisher aber nicht funktioniert.
Die Token habe ich. Übergabe als Password funktioniert aber nicht.
-> Könntest du hier deine Lösung einstellen? Wie muss man die Token übergeben? Welche Version von Bluelinky verwendest Du?
Danke schon mal..
RP
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Rewe2000 am 11 Februar 2026, 22:06:38
Hallo RPort,

das Ganze ist nicht mit wenigen Worten erklärt, soweit möglich versuche ich aber zu helfen.

Bluelinky ist bei dir schon installiert und läuft?
Ich verwende die Version 10.0.0

Zur Tokengenerierung benötigst du einen aktuellen Crome Browser.
Zur Erzeugung des Refresh-Token für KIA (bei mir, vermutlich auch Hyunday) benötigst du das python-Script KiaFetchApiTokens.py (sollte bei Bluelinky enthalten sein).
Wenn du das Script startest erklärt es sich nahezu von selbst.

Wenn du mir sagst, wie weit du schon gekommen bist, kann ich dir an dem Punkt weiterhelfen wo es noch hakt.

Ich wollte dir eben noch eine Anleitung zur Einstellung des Crome Browsers anhängen, finde diese aber nicht mehr im Internet. Ich habe diese aber für mich noch dokumentiert, ich würde diese Anleitung kurz überarbeiten und dann hier einstellen. Will mir aber diese Arbeit nur machen, wenn du diese Anleitung auch benötigst.

Melde dich einfach wos genau klemmt und wie weit du schon gekommen bist.

Gruß Reinhard
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: RPort am 12 Februar 2026, 11:57:20
Hallo Reinhard,

- die Token habe ich ..
  mit folgender Anleitung erhalten
  https://github.com/evcc-io/evcc/wiki/Hyundai-Kia:-Refresh-Token
- bluelinky habe ich mit ..
  sudo npm install bluelinky
  unter /opt installiert
  d.h. es gibt die directory /opt/node_modules  und darin /opt/node_modules/bluelinky  (Version 10.0.0)
  -> erste Frage: diese dirs gehören also root -> ist das ein Problem?
 
Mein Problem:
  ==> Wie muss das Script aussehen, das bluelinky aufruft und die empfangenen Daten an fhem weiterreicht???
      Was ich im Internet gefunden habe, ist offentsichtlich veraltet.
      Da steht  nicht, wie die Token übergeben werden müssen.
     
Danke für deine Mühe
Viele Grüße
Reiner
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Rewe2000 am 12 Februar 2026, 16:22:24
Hallo Reiner,

ich verwende Bluelinky mit dem Fork von PierreLevres, damit der Refresh-Token anstelle des Passworts akzeptiert und verarbeitet wird.
Fhem und Bluelinky läuft bei mir auf dem gleichen Raspi4, die Daten werden von Bluelinky gelesen und nach Fhem über MQTT übergeben.

Ich habe dir meine Anleitung komplett als Anhang angehängt, welche ich mir seinerzeit erstellt habe, in der Anleitung sind auch meine Fhem-Module als RAW-Import enthalten. Da du einen Hyundai fährst, musst du vermutlich einiges anpassen. Meine persönlichen Daten habe ich entfernt, du musst deine korrekten Daten in die <ROT> und fett geschriebenen Stellen eintragen. In der Anleitung habe ich für mich auch dokumentiert, wie ich unter Linux vom Raspi bestimmte Module oder Programme wieder entfernen kann, dies kannst ggf. ignorieren. Ich bin nicht der große Linux User, deshalb fällt die Anleitung auch etwas umfangreich und für Linux Freaks ev. unterhaltsam aus :) .

Hier meine Anleitung als PDF-Dokument: Anleitung KIA Forum.pdf

Viel Erfolg, wenn du noch wo hängst oder es für dich unverständlich geschrieben ist, einfach melden.
Gruß Reinhard
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Tiroler mk am 21 Februar 2026, 11:38:51
Hallo Reinhard, bin über das EV3-Forum hergekommen und begeistert von der Anleitung - mal sehen, wie weit ich komme.
Wenn ich hänge darf ich mich bitte melden?
fG Markus
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Rewe2000 am 21 Februar 2026, 13:41:56
Hallo Markus,

melde dich gerne, wenn du hängst,
wenn ich kann, so helfe ich dir gerne.

Viel Erfolg
Gruß Reinhard
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: optimizer am 21 Februar 2026, 19:34:45
@Rewe2000: Danke für die Anleitung. Nach Monaten läuft die KIA-Anbindung endlich wieder.   ;D 
Manche Zeilenumbrüche sind aufgrund des PDF-Formats nicht einfach zu kopieren oder nicht vollständig, aber das Login bei Kia funktioniert endlich wieder!
Jetzt muss ich nur noch die JSON-Felder richtig zuordnen, da sie beim eNiro wohl etwas anders belegt sind.


Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: Rewe2000 am 21 Februar 2026, 20:06:49
Ich wollte alles an den ursprünglichen Beitrag anhängen, das ging aber nicht, da der zu groß wurde, deshalb das PDF-Dokument.
Wenn es Probleme macht den Code dem PDF zu entnehmen, kurze Nachricht und ich stelle diesen nochmals als Code hier ein.

Gruß Reinhard
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: RPort am 22 Februar 2026, 11:16:52
Für Hyundai hat das bei mir nicht funktioniert.
Haben sich vtl. für Hyundai die Hosts geändert?
Kann jemand bestätigen, dass es für Hyundai noch funktioniert und ggf. wie
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: optimizer am 22 Februar 2026, 18:22:13
Zitat von: Rewe2000 am 21 Februar 2026, 20:06:49Wenn es Probleme macht den Code dem PDF zu entnehmen, kurze Nachricht und ich stelle diesen nochmals als Code hier ein.

Das würde anderen sicher helfen.

Ich habe das Script (mit Hilfe von Claude.ai) etwas umgebaut:
- für ältere Kia-Fahrzeuge (z.B. eNiro) ist die JSON Struktur etwas anders.
- es kommt oft vor dass die Antwort mit Bad Request endet. Daher gibt es einen 3-maligen Retry.
Auf Repository https://github.com/PierreLevres/Kuvork.git zu wechseln (anstatt https://github.com/Hacksore/bluelinky ) war bei mir der entscheidende Hinweis.
Hier mein Script:
#!/usr/bin/env node

// --- Imports ---
const fs = require('fs');
const path = require('path');
const { BlueLinky } = require('./dist/index.cjs');
const MQTT = require("async-mqtt");

// --- Konfiguration laden ---
const configPath = "/home/pi/.config/kia/credentials.json";
let config;

try {
  const raw = fs.readFileSync(configPath, 'utf8');
  config = JSON.parse(raw);
} catch (err) {
  console.error(`Fehler beim Laden der Config-Datei (${configPath}): ${err.message}`);
  process.exit(1);
}

// --- Hilfsfunktionen ---

// Zahlenwerte sicher abfragen
function safeValue(value) {
  return (typeof value === "number" && !isNaN(value)) ? value : null;
}

// Ladestecker 0/1/2 in Textrückmeldung wandeln
function connectorToText(value) {
  if (value === 0) return "nicht angeschlossen";
  if (value >= 1) return "gesteckt";  // 2=AC, 1=DC, beide sind "gesteckt"
  return "unbekannt";
}

// Hilfsfunktion für Datum/Zeit-Format
function getFormattedDateTime() {
  const now = new Date();
  const year = now.getFullYear();
  const month = String(now.getMonth() + 1).padStart(2, '0');
  const day = String(now.getDate()).padStart(2, '0');
  const hours = String(now.getHours()).padStart(2, '0');
  const minutes = String(now.getMinutes()).padStart(2, '0');
  const seconds = String(now.getSeconds()).padStart(2, '0');
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

// --- Retry-Konfiguration ---
let retryCount = 0;
const MAX_RETRIES = 2;
const RETRY_DELAY = 10000; // 10 Sekunden

// --- Verbindungsversuch ---
async function attemptConnection() {
  return new Promise((resolve, reject) => {
    console.log(`Verbindungsversuch ${retryCount + 1}/${MAX_RETRIES + 1}...`);

    const client = new BlueLinky({
      username: config.api.username,
      password: config.api.password,
      brand: 'kia',
      region: 'EU',
      pin: config.api.pin,
      language: 'de'
    });

    let readyReceived = false;
    const timeout = setTimeout(() => {
      if (!readyReceived) {
        console.log('⚠️  Timeout - kein Ready-Event empfangen');
        reject(new Error('Timeout waiting for ready event'));
      }
    }, 30000); // 30 Sekunden Timeout

    client.on('ready', async () => {
      readyReceived = true;
      clearTimeout(timeout);
      console.log('✅ Ready-Event empfangen');

      try {
        await handleVehicleData(client);
        resolve();
      } catch (err) {
        reject(err);
      }
    });

    client.on('error', (err) => {
      if (err.path && err.path.includes('notifications/register')) {
        console.log('⚠️  Push-Notification fehlgeschlagen (ignoriert)');
        return;
      }

      console.error('❌ Login-Fehler:', err.message);
      clearTimeout(timeout);
      reject(err);
    });
  });
}

// --- Fahrzeugdaten verarbeiten ---
async function handleVehicleData(client) {
  const vehicle = client.getVehicle(config.api.vin);

  console.log('Hole Fahrzeugdaten...');

  const status = await vehicle.status({ parsed: false, refresh: true });
  const location = await vehicle.location();
  const odometer = await vehicle.odometer();

  // Einzelwerte mit Sicherheitsprüfung
  const odo = safeValue(odometer?.value);
  const ran = safeValue(status?.evStatus?.drvDistance?.[0]?.rangeByFuel?.evModeRange?.value);
  const soc = safeValue(status?.evStatus?.batteryStatus);
  const typ = connectorToText(safeValue(status?.evStatus?.batteryPlugin));
  const bat = safeValue(status?.battery?.batSoc);
  const lat = safeValue(location?.latitude);
  const lon = safeValue(location?.longitude);
  const carLocked = status?.doorLock;
  const batteryCharge = status?.evStatus?.batteryCharge;

  // Ausgabe
  console.log("odometer (Kilometerstand):", odo);
  console.log("range (Reichweite):", ran);
  console.log("SOC (Batterieladestand):", soc);
  console.log("chargingPlug (Ladestecker):", typ);
  console.log("battery12V_SOC (Ladestand 12V Batterie):", bat);
  console.log("Locked (Fahrzeug verschlossen):", carLocked);
  console.log("latitude (Breitengrad):", lat);
  console.log("longitude (Längengrad):", lon);
  console.log("batteryCharge (Battery wird geladen):", batteryCharge);
  console.log("lastUpdate (Abfragedatum):", getFormattedDateTime());

  // Validierung: Nur wenn wichtige Daten vorhanden sind
  if (typeof odo !== "number" || isNaN(odo) || typeof soc !== "number" || isNaN(soc)) {
    throw new Error("Unvollständige Daten empfangen (Odometer oder SOC fehlt)");
  }

  // An MQTT senden
  const mqttClient = await MQTT.connectAsync(config.mqtt.host, {
    username: config.mqtt.username,
    password: config.mqtt.password
  });

  console.log("Sending to MQTT server");

  const topic = `BluelinkCarStatus/${config.api.vin}`;
  await mqttClient.publish(
    topic,
    JSON.stringify({
      odometer: Math.round(odo),
      range: ran,
      SOC: soc,
      chargingPlug: typ,
      battery12V_SOC: bat,
      locked: carLocked,
      latitude: lat,
      longitude: lon,
      batteryCharge: batteryCharge,
      state: `Ladekabel: ${typ} SOC: ${soc}% range: ${ran}`,
      lastUpdate: getFormattedDateTime()
    }),
    { retain: true, qos: 1 }
  );

  await mqttClient.end();
  console.log("✅ MQTT call Done");
}

// --- Fehler an MQTT senden ---
async function sendErrorToMQTT(errorMessage) {
  try {
    const mqttClient = await MQTT.connectAsync(config.mqtt.host, {
      username: config.mqtt.username,
      password: config.mqtt.password
    });

    await mqttClient.publish(
      `BluelinkCarStatus/${config.api.vin}`,
      JSON.stringify({
        state: `Fehler: ${errorMessage}`,
        lastUpdate: getFormattedDateTime()
      }),
      { retain: true, qos: 1 }
    );

    await mqttClient.end();
    console.log('Fehlerstatus an MQTT gesendet');
  } catch (mqttErr) {
    console.error('❌ Konnte Fehler nicht an MQTT senden:', mqttErr.message);
  }
}

// --- Haupt-Ausführung mit Retry ---
(async function main() {
  console.log('=== Kia UVO zu FHEM/MQTT Bridge ===');

  while (retryCount <= MAX_RETRIES) {
    try {
      await attemptConnection();
      console.log('\n✅ Erfolgreich abgeschlossen');
      process.exit(0);

    } catch (err) {
      console.error(`\n❌ Versuch ${retryCount + 1} fehlgeschlagen:`, err.message);

      retryCount++;

      if (retryCount <= MAX_RETRIES) {
        console.log(`⏳ Warte ${RETRY_DELAY/1000} Sekunden vor erneutem Versuch...\n`);
        await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
      } else {
        console.error(`\n❌ Maximale Anzahl an Versuchen erreicht (${MAX_RETRIES + 1})`);

        // Fehler an MQTT senden
        await sendErrorToMQTT(`Fehler nach ${MAX_RETRIES + 1} Versuchen: ${err.message}`);

        process.exit(1);
      }
    }
  }
})();


Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: optimizer am 22 Februar 2026, 18:27:46
Zitat von: RPort am 22 Februar 2026, 11:16:52Für Hyundai hat das bei mir nicht funktioniert.
Haben sich vtl. für Hyundai die Hosts geändert?
Kann jemand bestätigen, dass es für Hyundai noch funktioniert und ggf. wie
Du müstest auf alle Fälle im Script brand: 'kia' auf 'hyundai' ändern und ausprobieren. Bin mir aber nicht sicher, ob Hyundai die gleichen Anmelde-Server hat.
Titel: Aw: Umstellung auf myHyundai-APP, fhempy (Kia_Hyundai-Modul) funktioniert nicht mehr
Beitrag von: ch.eick am 06 März 2026, 11:02:44
Hallo zusammen,
könnte man das alles auch in einen Docker Container installieren, oder hat das eventuell schon jemand gemacht?
Wie sind die bisherigen Erfahrungen, klappt jetzt alles wieder stabiel, oder muss man oft den Token neu ersetzen?

Wir haben übrigens einen Kia eNiro.

VG  Christian