NEWS
Adapter Hyundai (Bluelink) oder KIA (UVO)
-
@newan Hi, schlechter Zeitpunkt, die App geht bei mir gerade nicht, und auch der Adapter meldet
ManagedBluelinkyError: @EuropeController.login: [401] Unauthorized on [POST] https://prd.eu-ccapi.hyundai.com:8080/api/v1/spa/notifications/register - {"retCode":"F","resCode":"4017","resMsg":"Invalid request value - Invalid Application Id. - -8169.12299990654","msgId":"2abc2c4c-44b4-4d07-8264-10b36dff2a24"}
-
@ilovegym Sicher dass das Update geklappt hat?
-
@michaelnorge So, die App geht wieder, und jetzt holt der Adapter V2.2.2 auch Daten, allerdings mit fallback get smallstatus...
-
@ilovegym Ja, das habe ich hier auch noch.
-
@newan sagte in Adapter Hyundai (Bluelink) oder KIA (UVO):
Bitte testet 2.2.2
Bei mir erscheint im latest repo lediglich 2.2.0 auch nach
iobroker update
. -
@meister-mopper ja ist nur auf Git, nicht im latest.
-
-
@meister-mopper müssen das noch mit dem fallback und den Listen klären. Danach wäre es zeit
-
@newan Nach ersten Start ging Login. Hat 1 Vehicle gefunden, VehicleConfig abgerufen, am Ende aber:
{"main":{"language":"en"},"fallback":{"language":"en"}}},"_fullStatus":null,"_status":null,"_location":null,"_odometer":null,"region":"EU","serverRates":{"max":-1,"current":-1}}
Dann driveHistory-Data geloggt? Dann einige Ausgaben der Art von cumulated03:
undefined is not a valid state value for id "bluelink.0.xxxxx.driveHistory.cumulated03.consumption.battery" .... Read new status from api for Error on API-Request Status @EuropeVehicle.status: [400] Bad Request on [GET] https://prd.eu-ccapi.hyundai.com:8080/api/v2/spa/vehicles/xxx/status - {"retCode":"F","resCode":"4006","resMsg":"Remote control unavailable(tmu timeout) - Remote control unavailable(tmu timeout)","msgId":"xxx"}
Und meine App auf Handy hat wieder auf EN umgeschaltet.
-
@klausiob kannst du den vollen debug log (ohne User und Passwort ) hier posten?
Das mit der Sprache hatte ich auf github schon gesagt das ich da kein Ansatz habe -
2022-02-11 09:02:56.014 - info: host.hsmart4 "system.adapter.bluelink.0" enabled 2022-02-11 09:02:56.222 - info: host.hsmart4 instance system.adapter.bluelink.0 started with pid 6731 2022-02-11 09:02:57.923 - debug: bluelink.0 (6731) Redis Objects: Use Redis connection: 0.0.0.0:9001 2022-02-11 09:02:57.965 - debug: bluelink.0 (6731) Objects client ready ... initialize now 2022-02-11 09:02:57.967 - debug: bluelink.0 (6731) Objects create System PubSub Client 2022-02-11 09:02:57.968 - debug: bluelink.0 (6731) Objects create User PubSub Client 2022-02-11 09:02:57.970 - debug: bluelink.0 (6731) Objects client initialize lua scripts 2022-02-11 09:02:57.985 - debug: bluelink.0 (6731) Objects connected to redis: 0.0.0.0:9001 2022-02-11 09:02:57.995 - debug: bluelink.0 (6731) objectDB connected 2022-02-11 09:02:57.997 - debug: bluelink.0 (6731) Redis States: Use Redis connection: 0.0.0.0:9000 2022-02-11 09:02:58.008 - debug: bluelink.0 (6731) States create System PubSub Client 2022-02-11 09:02:58.009 - debug: bluelink.0 (6731) States create User PubSub Client 2022-02-11 09:02:58.020 - debug: bluelink.0 (6731) States connected to redis: 0.0.0.0:9000 2022-02-11 09:02:58.022 - debug: bluelink.0 (6731) statesDB connected 2022-02-11 09:02:58.328 - info: bluelink.0 (6731) starting. Version 2.2.2 in /opt/iobroker/node_modules/iobroker.bluelink, node: v14.18.1, js-controller: 3.3.22 2022-02-11 09:02:58.365 - info: bluelink.0 (6731) Login to api 2022-02-11 09:03:02.214 - info: bluelink.0 (6731) 1 Vehicles found 2022-02-11 09:03:02.216 - debug: bluelink.0 (6731) [{"vehicleConfig":{"nickname":"IONIQ 5","name":"IONIQ 5","regDate":"2021-07-09 13:36:33.723","brandIndicator":"H", "id":"xxx","vin":"xxx","generation":"2022"}, "controller":{"userConfig":{"username":"","password":"PW","region":"EU","brand":"hyundai","autoLogin":true,"pin":"1632","vin":"","language":"en"}, "session":{"accessToken":"Bearer...","refreshToken":"-_I1OML-xxx","deviceId":"xxx","tokenExpiresAt":1644652981,"controlTokenExpiresAt":0}, "_environment":{"brand":"hyundai", "host":"prd.eu-ccapi.hyundai.com:8080", "baseUrl":"https://prd.eu-ccapi.hyundai.com:8080","clientId":"xxxx", "endpoints":{"session":"https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/oauth2/authorize?response_type=code&state=test&client_id=xxx&redirect_uri=https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/oauth2/redirect", "login":"https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/signin", "language":"https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/language", "redirectUri":"https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/oauth2/redirect", "token":"https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/oauth2/token", "integration":"https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/integrationinfo", "silentSignIn":"https://prd.eu-ccapi.hyundai.com:8080/api/v1/user/silentsignin"}, "basicToken":"Basic...==","GCMSenderID":"xxxx"}, "authStrategies":{"main":{"language":"en"},"fallback":{"language":"en"}}},"_fullStatus":null,"_status":null,"_location":null,"_odometer":null,"region":"EU","serverRates":{"max":-1,"current":-1}}] 2022-02-11 09:03:02.452 - debug: bluelink.0 (6731) driveHistory-Data: {"cumulated":[ {"period":0,"consumption":{"total":344638,"engine":340253,"climate":1405,"devices":2980,"battery":0},"regen":8170,"distance":87}, {"period":1,"consumption":{"total":43079,"engine":42531,"climate":175,"devices":372,"battery":0},"regen":1021,"distance":10.875}, {"period":2,"consumption":{}}], "history":[ {"period":0,"rawDate":"20220203","date":"2022-02-02T23:00:00.000Z","consumption":{"total":150,"engine":0,"climate":0,"devices":150,"battery":0},"regen":0,"distance":0}, {"period":0,"rawDate":"20220202","date":"2022-02-01T23:00:00.000Z","consumption":{"total":68148,"engine":67728,"climate":0,"devices":420,"battery":0},"regen":990,"distance":12}, {"period":0,"rawDate":"20220130","date":"2022-01-29T23:00:00.000Z","consumption":{"total":67667,"engine":67257,"climate":0,"devices":410,"battery":0},"regen":1451,"distance":14}, {"period":0,"rawDate":"20220123","date":"2022-01-22T23:00:00.000Z","consumption":{"total":73843,"engine":72146,"climate":887,"devices":810,"battery":0},"regen":3944,"distance":41}, {"period":0,"rawDate":"20220119","date":"2022-01-18T23:00:00.000Z","consumption":{"total":190,"engine":0,"climate":0,"devices":190,"battery":0},"regen":0,"distance":0}, {"period":0,"rawDate":"20220118","date":"2022-01-17T23:00:00.000Z","consumption":{"total":134172,"engine":133122,"climate":490,"devices":560,"battery":0},"regen":1785,"distance":20}, {"period":0,"rawDate":"20220116","date":"2022-01-15T23:00:00.000Z","consumption":{"total":302,"engine":0,"climate":12,"devices":290,"battery":0},"regen":0,"distance":0}, {"period":0,"rawDate":"20220112","date":"2022-01-11T23:00:00.000Z","consumption":{"total":166,"engine":0,"climate":16,"devices":150,"battery":0},"regen":0,"distance":0}]} 2022-02-11 09:03:02.485 - info: bluelink.0 (6731) undefined is not a valid state value for id "bluelink.0.xxx.driveHistory.cumulated03.regen" 2022-02-11 09:03:02.487 - info: bluelink.0 (6731) undefined is not a valid state value for id "bluelink.0.xxx.driveHistory.cumulated03.distance" 2022-02-11 09:03:02.524 - info: bluelink.0 (6731) undefined is not a valid state value for id "bluelink.0.xxx.driveHistory.cumulated03.consumption.total" 2022-02-11 09:03:02.525 - info: bluelink.0 (6731) undefined is not a valid state value for id "bluelink.0.xxx.driveHistory.cumulated03.consumption.engine" 2022-02-11 09:03:02.526 - info: bluelink.0 (6731) undefined is not a valid state value for id "bluelink.0.xxx.driveHistory.cumulated03.consumption.climate" 2022-02-11 09:03:02.527 - info: bluelink.0 (6731) undefined is not a valid state value for id "bluelink.0.xxx.driveHistory.cumulated03.consumption.devices" 2022-02-11 09:03:02.528 - info: bluelink.0 (6731) undefined is not a valid state value for id "bluelink.0.xxx.driveHistory.cumulated03.consumption.battery" 2022-02-11 09:03:03.562 - debug: bluelink.0 (6731) Read new status from api for xxxx 2022-02-11 09:03:04.028 - info: bluelink.0 (6731) Error on API-Full-Status - Fallback GetNormalStatus 2022-02-11 09:03:04.125 - error: bluelink.0 (6731) Error on API-Request Status 2022-02-11 09:03:04.126 - error: bluelink.0 (6731) @EuropeVehicle.status: [400] Bad Request on [GET] https://prd.eu-ccapi.hyundai.com:8080/api/v2/spa/vehicles/xxx/status - {"retCode":"F","resCode":"4006","resMsg":"Remote control unavailable(tmu timeout) - Remote control unavailable(tmu timeout)","msgId":"xxx"} 2022-02-11 09:08:22.376 - info: host.hsmart4 "system.adapter.bluelink.0" disabled 2022-02-11 09:08:22.393 - info: host.hsmart4 stopInstance system.adapter.bluelink.0 (force=false, process=true) 2022-02-11 09:08:22.470 - info: host.hsmart4 stopInstance system.adapter.bluelink.0 send kill signal 2022-02-11 09:08:22.470 - info: bluelink.0 (6731) Got terminate signal TERMINATE_YOURSELF 2022-02-11 09:08:22.472 - info: bluelink.0 (6731) Adapter bluelink cleaned up everything... 2022-02-11 09:08:22.473 - info: bluelink.0 (6731) terminating 2022-02-11 09:08:22.474 - info: bluelink.0 (6731) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
Habe mal noch ein paar Umbrüche reingemacht zur Übersicht.
Mit XXX habe ich PW,User und IDs ersetzt. -
@klausiob Danke, muss ich mir anschauen, das sind wieder andere Werte für driveHistory
-
@newan Habe gerade nochmal den Adapter angeworfen. Jetzt kamen keinerlei Fehler. Die undefinierten Werte hingen evtl. mit dem Adapterstart nach Update zusammen oder dass der Adapter tagelang sich nicht einwählen konnte. Das sollen ja die Verbrauchswerte sein in welcher Maßeinheit? Wh wie beim Solardach? Hast Du mal eine API-Beschreibung was die Werte bedeuten, die meisten sind ja selbstsprechend? Was bedeutet auch z.B.:
Folgende Ladezeiten Moeglichkeiten wurden gefunden:
{"etc1":{"value":44,"unit":1},"etc2":{"value":710,"unit":1},"etc3":{"value":175,"unit":1},"atc":{"value":125,"unit":1}}
-
@klausiob Kenne auch keine API Doc und suche das immer so raus.
-
Hilfe gesucht, könnt ihr bitte den REsult vom Smalabruf auf die vorhandenen Objekte zuweisen:
{ "chassis":{ "hoodOpen":false, "trunkOpen":false, "locked":false, "openDoors":{ "frontRight":false, "frontLeft":false, "backLeft":false, "backRight":false }, "tirePressureWarningLamp":{ "rearLeft":false, "frontLeft":false, "frontRight":false, "rearRight":false, "all":false } }, "climate":{ "active":false, "steeringwheelHeat":false, "sideMirrorHeat":false, "rearWindowHeat":false, "defrost":false, "temperatureSetpoint":14, "temperatureUnit":0 }, "engine":{ "ignition":false, "accessory":false, "rangeGas":338, "range":393, "rangeEV":0, "plugedTo":0, "charging":false, "estimatedCurrentChargeDuration":1, "estimatedPortableChargeDuration":9, "estimatedStationChargeDuration":6, "batteryCharge12v":73, "batteryChargeHV":97 }, "lastupdate":"2022-01-10T16:46:55.000Z" }
Würde mir reichen wir ihr eure IDs dahinter schreibt in welche Objekte ihr welchen Wert haben wollt. Weil das JSON vom Full und small komplett anders aussieht wäre ich über die Fleißarbeit sehr dankbar!
-
@newan Verstehe noch nicht ganz was Du genau brauchst. Ein Mapping des JSON Smalabruf auf die Adapterobjekte? In folgender Art?
//Location if(newStatus.vehicleLocation.coord != undefined) { await this.setStateAsync(vin + '.vehicleLocation.lat', { val: newStatus.vehicleLocation.coord.lat, ack: true }); await this.setStateAsync(vin + '.vehicleLocation.lon', { val: newStatus.vehicleLocation.coord.lon, ack: true }); await this.setStateAsync(vin + '.vehicleLocation.speed', { val: newStatus.vehicleLocation.speed.value, ack: true }); }
Wenn Du mir so ein Codesnippet lieferst, kann ich dir das vorbereiten.
-
@klausiob Ne viel einfacher:
"hoodOpen":false, -> '.vehicleStatus.hoodOpen'
"trunkOpen":false, .> '.vehicleStatus.trunkOpen'usw, damit ich weiß was ich in die Objekte schreibe. Oben ist es einfach, danach was unübersichtlich für mich wenn ich kein Auto habe für den Adapter
-
@newan sagte in Adapter Hyundai (Bluelink) oder KIA (UVO):
-> '.vehicleStatus.hoodOpen'
{ "chassis": { "hoodOpen": false, -> '.vehicleStatus.hoodOpen' "trunkOpen": false, -> '.vehicleStatus.trunkOpen' "locked": false, -> '.vehicleStatus.doorLock' "openDoors": { "frontRight": false, -> '.vehicleStatus.doorOpen.frontRight' "frontLeft": false, -> '.vehicleStatus.doorOpen.frontLeft' "backLeft": false, -> '.vehicleStatus.doorOpen.backLeft' "backRight": false -> '.vehicleStatus.doorOpen.backRight' }, "tirePressureWarningLamp": { "rearLeft": false, -> '.vehicleStatus.tirePressureLamp.rearLeft' "frontLeft": false, -> '.vehicleStatus.tirePressureLamp.frontLeft' "frontRight": false, -> '.vehicleStatus.tirePressureLamp.frontRight' "rearRight": false, -> '.vehicleStatus.tirePressureLamp.rearRight' "all": false -> '.vehicleStatus.tirePressureLamp.all' } }, "climate": { "active": false, -> '.vehicleStatus.airCtrlOn' "steeringwheelHeat": false, -> '.vehicleStatus.steerWheelHeat' "sideMirrorHeat": false, -> '.vehicleStatus.sideMirrorHeat' //neu "rearWindowHeat": false, -> '.vehicleStatus.sideBackWindowHeat' // sideMirror und Rear window heating geht in der App nur gemeinsam "defrost": false, -> '.vehicleStatus.defrost' //neu "temperatureSetpoint": 14, -> '.vehicleStatus.airTemp' // zeigt die Vortemperierung in der App einstellbar von 17-27°C "temperatureUnit": 0 analog -> '.vehicleStatusRaw.airTemp.unit' // bei mir °C }, "engine": { "ignition": false, // entspricht wahrscheinlich dem vehicleStatusRaw.vehicleStatus.ign3 "accessory": false, // entspricht wahrscheinlich dem vehicleStatusRaw.vehicleStatus.acc "rangeGas": 338, -> '.vehicleStatus.gasModeRange' "range": 393, -> '.vehicleStatus.totalAvailableRange' //neu entspricht der Summe aus gas und ev, ist bei mir immer identisch mit ev "rangeEV": 0, -> '.vehicleStatus.evModeRange' "plugedTo": 0, -> '.vehicleStatus.battery.plugin' "charging": false, -> '.vehicleStatus.battery.charge' "estimatedCurrentChargeDuration": 1, //hat evtl. mit .vehicleStatusRaw.vehicleStatus.evStatus.remainTime2-values zu tun Ladezeiten ? "estimatedPortableChargeDuration": 9, // Laden mit Notladekabel? "estimatedStationChargeDuration": 6, // Laden an Ladestation? sowas zeigt er im Auto an beim Laden "batteryCharge12v": 73, -> '.vehicleStatus.battery.soc-12' "batteryChargeHV": 97 -> '.vehicleStatus.battery.soc' }, "lastupdate": "2022-01-10T16:46:55.000Z" }
-
@klausiob said in Adapter Hyundai (Bluelink) oder KIA (UVO):
@newan sagte in Adapter Hyundai (Bluelink) oder KIA (UVO):
-> '.vehicleStatus.hoodOpen'
{ "chassis": { "hoodOpen": false, -> '.vehicleStatus.hoodOpen' "trunkOpen": false, -> '.vehicleStatus.trunkOpen' "locked": false, -> '.vehicleStatus.doorLock' "openDoors": { "frontRight": false, -> '.vehicleStatus.doorOpen.frontRight' "frontLeft": false, -> '.vehicleStatus.doorOpen.frontLeft' "backLeft": false, -> '.vehicleStatus.doorOpen.backLeft' "backRight": false -> '.vehicleStatus.doorOpen.backRight' }, "tirePressureWarningLamp": { "rearLeft": false, -> '.vehicleStatus.tirePressureLamp.rearLeft' "frontLeft": false, -> '.vehicleStatus.tirePressureLamp.frontLeft' "frontRight": false, -> '.vehicleStatus.tirePressureLamp.frontRight' "rearRight": false, -> '.vehicleStatus.tirePressureLamp.rearRight' "all": false -> '.vehicleStatus.tirePressureLamp.all' } }, "climate": { "active": false, -> '.vehicleStatus.airCtrlOn' "steeringwheelHeat": false, -> '.vehicleStatus.steerWheelHeat' "sideMirrorHeat": false, -> '.vehicleStatus.sideMirrorHeat' //neu "rearWindowHeat": false, -> '.vehicleStatus.sideBackWindowHeat' // sideMirror und Rear window heating geht in der App nur gemeinsam "defrost": false, -> '.vehicleStatus.defrost' //neu "temperatureSetpoint": 14, -> '.vehicleStatus.airTemp' // zeigt die Vortemperierung in der App einstellbar von 17-27°C "temperatureUnit": 0 analog -> '.vehicleStatusRaw.airTemp.unit' // bei mir °C }, "engine": { "ignition": false, // entspricht wahrscheinlich dem vehicleStatusRaw.vehicleStatus.ign3 "accessory": false, // entspricht wahrscheinlich dem vehicleStatusRaw.vehicleStatus.acc "rangeGas": 338, -> '.vehicleStatus.gasModeRange' "range": 393, -> '.vehicleStatus.totalAvailableRange' //neu entspricht der Summe aus gas und ev, ist bei mir immer identisch mit ev "rangeEV": 0, -> '.vehicleStatus.evModeRange' "plugedTo": 0, -> '.vehicleStatus.battery.plugin' "charging": false, -> '.vehicleStatus.battery.charge' "estimatedCurrentChargeDuration": 1, //hat evtl. mit .vehicleStatusRaw.vehicleStatus.evStatus.remainTime2-values zu tun Ladezeiten ? "estimatedPortableChargeDuration": 9, // Laden mit Notladekabel? "estimatedStationChargeDuration": 6, // Laden an Ladestation? sowas zeigt er im Auto an beim Laden "batteryCharge12v": 73, -> '.vehicleStatus.battery.soc-12' "batteryChargeHV": 97 -> '.vehicleStatus.battery.soc' }, "lastupdate": "2022-01-10T16:46:55.000Z" } ```[link text](link url)
Super Arbeit. Ich habe nur ein EV und daher ist bei mir Range = RangeEV.
Die verschiedenen Duration kann ich einmal testen. Denke aber deine Vermutungen stimmen wohl.
"estimatedCurrentChargeDuration":3360, => Ist wirklich die aktuelle Zeit die für den aktuellen Ladestrom errechnet wird.
Ich lade gerade "portabel" mit nur 1x 6A und es werden 3360 errechnet. "estimatedPortableChargeDuration":1380, scheint also einen anderen Ladestrom hinterlegt zu haben.Wäre super wenn @Newan nun eine Version für die kurze Abfrage bauen kann. Die volle Abfrage ist bei mir eigentlich nie möglich wenn das Auto aus ist.
Top. Schönen Dank für die Arbeit -
Danke, so kann ich das auf jedenfall mal alles anpassen!