Anbindung von Kia UVO an fhem

Begonnen von Eckat, 15 Februar 2021, 08:53:19

Vorheriges Thema - Nächstes Thema

Det20

Zitat von: gadget am 23 Juni 2021, 14:35:57

npm install bluelinky
npm update



pi@raspberrypi:~/bluelinky $ npm install bluelinky

> node-aead-crypto@2.1.4 install /home/pi/node_modules/node-aead-crypto
> node lib/install.js

node-aead-crypto is no longer needed on NodeJS 10+
npm WARN saveError ENOENT: no such file or directory, open '/home/pi/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json'
npm WARN pi No description
npm WARN pi No repository field.
npm WARN pi No README data
npm WARN pi No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: node-aead-crypto@2.1.4 (node_modules/node-aead-crypto):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: node-aead-crypto@2.1.4 install: `node lib/install.js`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

+ bluelinky@7.3.0
updated 1 package and audited 488 packages in 16.317s

5 packages are looking for funding
  run `npm fund` for details

found 84 vulnerabilities (36 low, 10 moderate, 38 high)
  run `npm audit fix` to fix them, or `npm audit` for details

gadget

Zitat von: Det20 am 23 Juni 2021, 14:37:44
Mit Nano. Also unter "client" sind meine Login-Daten angegeben, die ich auch in der "UVO 2021" App verwende. Brand ist "kia", "region" ist "EU". Pin ist der, den ich auch zur Steuerung in der App eingeben muss. Unter "vehicle = client.getVehicle" ist die Fahrzeugnummer hinterlegt. Bleibt nur nut "mqttClient = await MQTT.connceptAsync", dort ist die IP vom FHEM bzw Raspberry sowie Benutzername/Kennwort vom Allowed-Device hinterlegt. Mehr kann ich dort ja eigentlich nicht machen.

bei


await mqttClient.publish(
                   "BluelinkCarStatus/UVOVIN"



gehört auch deine VIN hin statt UVOVIN


Det20

Zitat von: gadget am 23 Juni 2021, 14:43:53
bei


await mqttClient.publish(
                   "BluelinkCarStatus/UVOVIN"



gehört auch deine VIN hin statt UVOVIN

Sorry, verschrieben. Ja, da steht die Fahrzeug-ID.

Det20

#18
So im Prinzip arbeitet das Script ja, er hat es eben 2 mal versucht bzw ist 2 mal über den Fehler gestolpert.
Wir reden bei VIN aber über die Fahrzeugidentifikationsnummer, die unter der Fronscheibe, oder? Die mit 17 Zahlen-Zeichen.


pi@raspberrypi:~/bluelinky $ node kia.js
Register request has failed with Error=PHONE_REGISTRATION_ERROR
Retry... 1
Register request has failed with Error=PHONE_REGISTRATION_ERROR
Retry... 2
pi@raspberrypi:~/bluelinky $


No more output :(

gadget

Zitat von: Det20 am 23 Juni 2021, 14:50:52

Wir reden bei VIN aber über die Fahrzeugidentifikationsnummer, die unter der Fronscheibe, oder? Die mit 17 Zahlen-Zeichen.


Ja, genau. Ich würde das an deiner Stelle mal ein paar Tage ruhen lassen und dann nochmal einen Update machen. An dieser stamp cache Sache wird gerade heftigst rumgebastelt(*). Ich hatte den Fehler auch schon öfters und irgendwann ging es dann (nach Update)wieder.


(*) siehe z.B. https://github.com/Hacksore/bluelinky/pull/146

Det20

#20
Update: Die App hat gestern auch nicht mehr funktioniert, ich denke mal, ich habe beim Test eine falsche VIN angegeben, weshalb mein Account für einige Stunden gesperrt wurde. Habe es heute nochmal versucht und siehe da ... Daten sind da. Da der Sorento nur ein Hybrid ist, gab es 'batSoc' nicht. Für die Nachwelt, diese Werte gibt es bei mir (Sorento PHEV). Probiere jetzt rum, wie ich die Werte abgreifen kann, zB Fenster-Position. Kinder vergessen gerne, Fenster hochzumachen.


{ value: 80.1, unit: 1 }
{ airCtrlOn: false,
  engine: false,
  doorLock: true,
  doorOpen: { frontLeft: 0, frontRight: 0, backLeft: 0, backRight: 0 },
  trunkOpen: false,
  airTemp: { value: '01H', unit: 0, hvacTempType: 1 },
  defrost: false,
  lowFuelLight: false,
  acc: false,
  evStatus:
   { batteryCharge: false,
     batteryStatus: 87,
     batteryPlugin: 0,
     remainTime2: { etc2: [Object], etc3: [Object], atc: [Object] },
     drvDistance: [ [Object] ],
     reservChargeInfos:
      { reservChargeInfo: [Object],
        offpeakPowerInfo: [Object],
        reserveChargeInfo2: [Object],
        reservFlag: 0,
        ect: [Object] } },
  ign3: true,
  hoodOpen: false,
  transCond: false,
  steerWheelHeat: 0,
  sideBackWindowHeat: 0,
  tirePressureLamp: { tirePressureLampAll: 0 },
  seatHeaterVentState:
   { frSeatHeatState: 2,
     flSeatHeatState: 2,
     rlSeatHeatState: 2,
     rrSeatHeatState: 2 },
  lampWireStatus:
   { stopLamp: { stopLampStatus: false, leftLamp: false, rightLamp: false },
     headLamp:
      { headLampStatus: false,
        leftLowLamp: false,
        rightLowLamp: false,
        leftHighLamp: false,
        rightHighLamp: false },
     turnSignalLamp:
      { turnSignalLampStatus: false,
        leftFrontLamp: false,
        rightFrontLamp: false,
        leftRearLamp: false,
        rightRearLamp: false } },
  windowOpen: { frontLeft: 0, frontRight: 0, backLeft: 0, backRight: 0 },
  smartKeyBatteryWarning: false,
  fuelLevel: 100,
  washerFluidStatus: false,
  breakOilStatus: false,
  time: '20210624092842' }
{ latitude: xx.xxxx,
  longitude: x.xxxx,
  altitude: 0,
  speed: { unit: 0, value: 0 },
  heading: 0 }


Hast du auch rausbekommen, wie man steuert, also zB die Tür zumacht wenn man es abends vergessen hat? Oder den Ladevorgang startet/beendet?
Über die App geht das, aber geht es auch per Befehl?

Vielen Dank für die Hilfe!

gadget

bluelinky kann auch senden. Ist für mich aber kein Thema. Wenn ich was remote auslösen will nehme ich die UVO App.
Alerting bei offenen Fenster etc. geht ja auch so schon, wenn Du die kia.js ein wenig erweiterst und die  für Dich interessanten Sachen heraussuchst und in einem anderen MQTT Topic weiterleitetest.

Vielleicht findet sich ja mal irgendwann jemand, der ein richtiges fhem-Modul für die Hyundai / Kia API schreibt, bis dahin reicht mir dieser Hack aus. Mir ging es vor allem darum, den Ladezustand und die Reichweite auf dem Wohnzimmer-Panel anzeigen zu können, damit ich dran denke den rechtzeitig vor einer größeren Fahrt an die Wallbox zu hängen.

Det20

#22
Habe mir nun extra eine JS erstellt, die nix anderes macht und rufe die aus FHEM heraus auf. Klappt für mich, mehr kann mein PHEV (leider) nicht.

Frage nun auch ab, ob das Auto offen/zu ist, ob Fenster oben sind usw. Das kombiniere ich dann mit dem Regensensor und schicke mir eine Push-Nachricht: Wenn Auto zu Hause, nicht an und eines der Fenster unten, dann Hinweis auf's Handy. Außerdem abends, falls ich mal wieder vergessen habe, das Auto abzuschließen.

kia_lock.js


const BlueLinky = require('bluelinky');

const client = new BlueLinky({
  username: 'xxxx',
  password: 'xxxx',
  brand: 'kia',
  region: 'EU',
  pin: 'xxx'
});

client.on('ready', async () => {
  const vehicle = client.getVehicle('xxxxxxxxxxx');
  const response = await vehicle.lock();
  console.log(response);
});


bluelinky in PHP oder FHEM zu übersetzen ist an sich kein Problem, die arbeiten auch nur mit HTTP Calls. Allerdings ist da dauernd ne Änderung drin, KIA und Hyundai scheinen da dauernd was zu ändern. Mir würde die Zeit für die wöchentlichen Anpassungen fehlen. Leider.

Vorhand

Hallo gadget,
vielen Dank für das Beispiel KIA. Habe mir alles so installiert wie beschrieben. Hatte jedoch ein paar Problemchen.
1. Da ich nur den MQTT2-Server von fhem benutze, gibt es keinen username und kein passwort. Ich habe in der kia.js die Schweifklammer leer gelassen - ist das ok?
2. Bei dem "defmod kia MQTT_DEVICE" gibt es 3 Attribute nicht: attr kia DbLogInclude .* und attr kia autoSubscribeReadings BluelinkCarStatus/+ sowie attr kia subscribeReading_UVOVIN BluelinkCarStatus/UVOVIN
Die anderen UVOINs habe ich jeweils mit der Fahrzeugnummer ersetzt.

Bei Eingabe von node kia.js kommt:

(node:14968) UnhandledPromiseRejectionWarning: Error: Vehicle not found: 60x...x05a!
    at ne.getVehicle (/home/pi/bluelinky/node_modules/bluelinky/dist/index.js:17:48507)
    at ne.<anonymous> (/home/pi/bluelinky/kia.js:13:26)
    at ne.emit (events.js:400:28)
    at ne.<anonymous> (/home/pi/bluelinky/node_modules/bluelinky/dist/index.js:17:48147)
    at Generator.next (<anonymous>)
    at s (/home/pi/bluelinky/node_modules/bluelinky/dist/index.js:17:85)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:14968) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:14968) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


Im kia device tut sich gar nichts.
Habt ihr eine Idee, was noch fehlen könnte?
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

Vorhand

Hallo Det20,

wenn ich es richtig gelesen habe, nutzt du den MQTT2 von fhem. Kannst du bitte den kompletten code für die kia-MQTT-Device zeigen.
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

Vorhand

Natürlich bin ich auch über die VIN von Kia gestolpert. Hab die ganze Zeit eine Fahrgestellnummer verwendet. Jetzt funktioniert es - danke.
Auf die richtige VIN bin ich erst gekommen, nachdem ich die neue KIA-App installierte. Da stand sie gut sichtbar.

In deinem DOIF verwendest du ja eine Wallbox, deren Ladeaktivität abgefragt wird (?goeCharger1:state).
Eigentlich würde es ja genügen, wenn man den KIA selbst die Ladung - über einen entsprechenden Befehl - steuern lässt. Eine FI-gesicherte Steckdose würde dann schon genügen.

Frage: Gibt es eine Liste aller möglichen Daten für einen PHEV (Plugin-Hybrid), die man über bluelinky abfragen kann?
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

ch.eick

Hallo zusammen,
nächste Woche hole ich meinen e-Niro ab und möchte den natürlich auch an FHEM anbinden.
Habt Ihr hier schon einen Leitfaden zusammen geschrieben?
Was brauche ich alles dafür? OVU auf dem Handy steht bereit, aber das Auto wird erst nächste Woche registriert.
MQTT2 ist nur in den Grundzügen bei mir im FHEM eingerichtet, wurde jedoch noch nie verwendet.
Die openWB hängt bereits und ich werde sie morgen mal einschalten.

Worauf sollte ich zubeginn direkt achten?

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Rewe2000

Hallo zusammen,

auch ich lese interessiert mit, bei mir dauert es aber noch bis März/April 2022 bis ich meinen bekomme.
Ich hoffe ihr findet eine passende Lösung für Fhem, denn die grundsätzlichen Daten wären schon gut, wenn man die irgendwie in Fhem bekommen würde.


Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

gadget


Det20

Ein Hinweis an alle, da ich gerade drauf reingefallen bin. War eine Woche im Urlaub, mein Sorento stand in der Zeit in Frankfurt in einem Parkhaus. Als ich wieder angekommen bin, lief nix mehr. Kein Licht, keine Zentralverriegelung, einfach nichts. Passiert ist folgendes:

- FHEM hat stündlich den Status abgefragt
- Sorento hat jedesmal den Hauptcomputer geweckct und den Status übermittelt, dafür wird die 12v Batterie genutzt
- Das hat nach 6 Tagen dafür gesorgt, dass die 12v Batterie leer ist
- Normalerweise wird die automatisch über die Hybrid-Batterie geladen, die war aber auch leer (fahrt nach Frankfurt dauert)
- Für das anschalten wird die 12v benötigt, danach wird die Hybrid-Batterie genommen

Da also die 12v leer war und nicht geladen werden konnte, war alles tot. Bedeutet: Fragt nicht zu häufig ab, ansonsten zieht es euch die Batterie leer. Wieso die bei Kia nicht nen Unterspannungsschutz eingebaut haben (Abfrage blockieren, wenn 12v < 50% voll) ist mir ein Rätsel; ist aber so.