npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bluelinky

v8.3.1

Published

An unofficial nodejs API wrapper for Hyundai bluelink

Downloads

536

Readme

bluelinky

An unofficial nodejs API wrapper for Hyundai BlueLink

npm Discord

Install

npm install bluelinky

Example

const BlueLinky = require('bluelinky');

const client = new BlueLinky({
  username: '[email protected]',
  password: 'hunter1',
  brand: 'hyundai',
  region: 'US',
  pin: '1234'
});

client.on('ready', async () => {
  const vehicle = client.getVehicle('5NMS55555555555555');
  try {
    const response = await vehicle.lock();
    console.log(response);
  } catch (err) {
    // log the error from the command invocation 
  }
});

client.on('error', async (err) => {
  // something went wrong with login
});

Debug locally

Ensure you have a config.json that matches the structure of the following, with your account details

{
  "username": "email",
  "password": "password",
  "pin": "pin",
  "brand": "kia" or "hyundai",
  "vin": "vin",
  "useInfo": false
}

Run an install for all the dependencies, npm install

Now you can invoke the debug.ts script with npm run debug

Documentation

Checkout out the docs for more info.

Important information for login problems:

  • If you experience login problems, please logout from the app on your phone and login again. You might need to ' upgrade ' your account to a generic Kia/Hyundai account, or create a new password or PIN.
  • After you migrated your Bluelink account to a generic Hyundai account, or your UVO account to a generic Kia account, make sure that both accounts have the same credentials (userid and password) to avoid confusion in logging in.

EU specific options

EU has specific Bluelinky options :

  • language: The language to use when login into the system, it will also change the laguage of your mobile app. en by default.
  • stampMode: Advanced The kind of stamping mechanism to use (LOCAL | DISTANT). DISTANT by default. :warning: though LOCAL seems to work properly, it's in beta for now.
  • stampFile: Advanced The DISTANT stamp source to use. https://raw.githubusercontent.com/neoPix/bluelinky-stamps/master/${brand}-${appId}.v2.json by default.

Custom Stamps

In the EU region, stamps are used to sign every API queries. These stamps have a 1 week validity. Those stamps are using a tricky algorithm and cannot be replicated by Bluelinky and have to be generated by an external solution. An http call is performed to get the existing tokens. It is possible to specify an other path using the stampFile option. This path can be a local file prefixed by file:// or from any webserver.

By default the case is 24H, but it can but customized at will. A nice trick is to run you own stamp generator http server and querying it regularly (with low cache timeout) for fresh stamps.

The JSON file must respect this format

Supported Features

  • Lock
  • Unlock
  • Start (with climate control)
  • Stop
  • Status (full, parsed, cached)
  • odometer
  • location
  • startCharge
  • monthlyReport
  • tripInfo
  • EV: driveHistory
  • EV: getChargeTargets
  • EV: setChargeLimits

Supported Regions

| Regions

Show your support

Give a ⭐️ if this project helped you!

Warnings

Using Bluelinky may result in draining your 12V battery when refreshing from the car too often. Make sure you have read and understood the terms of use of your Kia or Hyundai account before using Bluelinky.