Hacksore / bluelinky

An unofficial nodejs API wrapper for Hyundai bluelink and Kia UVO
https://bluelinky.readme.io
MIT License
341 stars 76 forks source link

Weak mobile signal strength leads to '5031', 'Unavailable remote control - Service Temporary Unavailable' #194

Closed mpucherSmIT closed 2 years ago

mpucherSmIT commented 2 years ago

Hi,

I have very weak mobile signal strength in the garage (see screenshot of signal meter attached) and this leads to timeouts I think when trying to request status and location of my kona.

Are there any possibilities to increase timeouts as a user of bluelinky?

Thank you!

Screenshot_20220117-131332

mpucherSmIT commented 2 years ago

Log (I removed all UUID/Ids that might be related to my vehicle/account with '...'):

_ [ManagedBluelinkyError]: @EuropeVehicle.location: [503] Service Unavailable on [GET] https://prd.eu-ccapi.hyundai.com:8080/api/v2/spa/vehicles/.../location - {"retCode":"F","resCode":"5031","resMsg":"Unavailable remote control - Service Temporary Unavailable","msgId":"15de6a1f-ac48-46d0-b108-c467073129c5"} at R (/home/mike/projects/energylog/bluelink/node_modules/bluelinky/dist/index.js:17:11683) at Y.<anonymous> (/home/mike/projects/energylog/bluelink/node_modules/bluelinky/dist/index.js:17:23681) at Generator.throw (<anonymous>) at a (/home/mike/projects/energylog/bluelink/node_modules/bluelinky/dist/index.js:17:136) at processTicksAndRejections (node:internal/process/task_queues:96:5) { source: GotError [HTTPError]: Response code 503 (Service Unavailable) at EventEmitter.<anonymous> (/home/mike/projects/energylog/bluelink/node_modules/got/source/as-promise.js:74:19) at processTicksAndRejections (node:internal/process/task_queues:96:5) { host: undefined, hostname: 'prd.eu-ccapi.hyundai.com', method: 'GET', path: '/api/v2/spa/vehicles/.../location', socketPath: undefined, protocol: 'https:', url: 'https://prd.eu-ccapi.hyundai.com:8080/api/v2/spa/vehicles/.../location', gotOptions: { path: '/api/v2/spa/vehicles/.../location', protocol: 'https:', hostname: 'prd.eu-ccapi.hyundai.com', hash: '', search: '', pathname: '/api/v2/spa/vehicles/.../location', href: 'https://prd.eu-ccapi.hyundai.com:8080/api/v2/spa/vehicles/.../location', port: 8080, retry: { retries: [Function (anonymous)], methods: Set(6) { 'GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE' }, statusCodes: Set(7) { 408, 413, 429, 500, 502, 503, 504 }, errorCodes: Set(8) { 'ETIMEDOUT', 'ECONNRESET', 'EADDRINUSE', 'ECONNREFUSED', 'EPIPE', 'ENOTFOUND', 'ENETUNREACH', 'EAI_AGAIN' } }, headers: { 'user-agent': 'got/9.6.0 (https://github.com/sindresorhus/got)', authorization: 'Bearer ...', offset: '-1.00', 'ccsp-device-id': '...', 'ccsp-application-id': '...', 'content-type': 'application/json', stamp: '.../...=', accept: 'application/json', 'accept-encoding': 'gzip, deflate' }, hooks: { beforeError: [], init: [], beforeRequest: [], beforeRedirect: [], beforeRetry: [], afterResponse: [] }, decompress: true, throwHttpErrors: true, followRedirect: true, stream: false, form: false, json: true, cache: false, useElectronNet: false, baseUrl: [Getter/Setter], method: 'GET' }, statusCode: 503, statusMessage: 'Service Unavailable', headers: { 'content-type': 'application/json; charset=utf-8', date: 'Mon, 17 Jan 2022 12:19:09 GMT', etag: 'W/"..."', 'x-ratelimit-limit': '100', 'x-ratelimit-remaining': '95', 'x-ratelimit-reset': '1642421986', 'content-length': '149', connection: 'close' }, body: { retCode: 'F', resCode: '5031', resMsg: 'Unavailable remote control - Service Temporary Unavailable', msgId: '15de6a1f-ac48-46d0-b108-c467073129c5' } } }

neoPix commented 2 years ago

Hi @mpucherSmIT,

This kind of error happens when Bluelink (or UVO) cannot manage to establish a connection between there servers and the vehicle.

This integration (Bluelinky) doesn't have anything to do with this as doing the same action from the app should give the same result.

mpucherSmIT commented 2 years ago

Hi @neoPix thanks for your reply.

The bluelink app always seems to fall back to server cached values (in the new version). I haven't seen that "No response from vehicle" in the new version but often had that with the old bluelink app.

bluelinky only supports cached values in status(), right?

neoPix commented 2 years ago

Bluelinky can also do both: vehicle.status() => cached values from Bluelink servers
vehicle.status({ refresh: true }) => current values from the car (no fallback)

mpucherSmIT commented 2 years ago

I meant that both options are only implemented for the status() method, and not for location(), odometer() or other methods.

Hacksore commented 2 years ago

I'm not sure we have a way to get cached values for location and odometer in all regions.

A PR for that change is welcomed but for now, I'd suggest handling the timeout in your code/logic.