bluelinky2
Version:
An unofficial nodejs API wrapper for Hyundai bluelink
433 lines (432 loc) • 10.9 kB
TypeScript
import { REGION } from '../constants';
export declare type Brand = 'kia' | 'hyundai';
export interface BlueLinkyConfig {
username: string | undefined;
password: string | undefined;
region: REGION | undefined;
brand: Brand;
autoLogin?: boolean;
pin: string | undefined;
vin?: string | undefined;
vehicleId?: string | undefined;
}
export interface BluelinkVehicle {
name: string;
vin: string;
type: string;
}
export interface Session {
accessToken?: string;
refreshToken?: string;
controlToken?: string;
deviceId?: string;
tokenExpiresAt: number;
controlTokenExpiresAt?: number;
}
export declare enum EVPlugTypes {
UNPLUGED = 0,
FAST = 1,
PORTABLE = 2,
STATION = 3
}
export declare enum EVChargeModeTypes {
FAST = 0,
SLOW = 1
}
export interface VehicleStatus {
engine: {
ignition: boolean;
batteryCharge?: number;
charging?: boolean;
timeToFullCharge?: unknown;
range: number;
rangeGas?: number;
rangeEV?: number;
plugedTo?: EVPlugTypes;
estimatedCurrentChargeDuration?: number;
estimatedFastChargeDuration?: number;
estimatedPortableChargeDuration?: number;
estimatedStationChargeDuration?: number;
batteryCharge12v?: number;
batteryChargeHV?: number;
accessory: boolean;
};
climate: {
active: boolean;
steeringwheelHeat: boolean;
sideMirrorHeat: boolean;
rearWindowHeat: boolean;
temperatureSetpoint: number;
temperatureUnit: number;
defrost: boolean;
};
chassis: {
hoodOpen: boolean;
trunkOpen: boolean;
locked: boolean;
openDoors: {
frontRight: boolean;
frontLeft: boolean;
backLeft: boolean;
backRight: boolean;
};
tirePressureWarningLamp: {
rearLeft: boolean;
frontLeft: boolean;
frontRight: boolean;
rearRight: boolean;
all: boolean;
};
};
lastupdate: Date | null;
}
export interface FullVehicleStatus {
vehicleLocation: {
coord: {
lat: number;
lon: number;
alt: number;
type: number;
};
head: number;
speed: {
value: number;
unit: number;
};
accuracy: {
hdop: number;
pdop: number;
};
time: string;
};
odometer: {
value: number;
unit: number;
};
vehicleStatus: {
time: string;
airCtrlOn: boolean;
engine: boolean;
doorLock: boolean;
doorOpen: {
frontRight: number;
frontLeft: number;
backLeft: number;
backRight: number;
};
trunkOpen: boolean;
airTemp: {
unit: number;
hvacTempType: number;
value: string;
};
defrost: boolean;
acc: boolean;
ign3: boolean;
hoodOpen: boolean;
transCond: boolean;
steerWheelHeat: number;
sideBackWindowHeat: number;
tirePressureLamp: {
tirePressureWarningLampAll: number;
tirePressureWarningLampFL: number;
tirePressureWarningLampFR: number;
tirePressureWarningLampRL: number;
tirePressureWarningLampRR: number;
};
battery: {
batSoc: number;
batState: number;
};
evStatus: {
batteryCharge: boolean;
batteryStatus: number;
batteryPlugin: number;
remainTime2: {
etc1: {
value: number;
unit: number;
};
etc2: {
value: number;
unit: number;
};
etc3: {
value: number;
unit: number;
};
atc: {
value: number;
unit: number;
};
};
drvDistance: [{
rangeByFuel: {
gasModeRange: {
value: number;
unit: number;
};
evModeRange: {
value: number;
unit: number;
};
totalAvailableRange: {
value: number;
unit: number;
};
};
type: number;
}];
};
};
}
export interface RawVehicleStatus {
lastStatusDate: string;
dateTime: string;
acc: boolean;
trunkOpen: boolean;
doorLock: boolean;
defrostStatus: string;
transCond: boolean;
doorLockStatus: string;
doorOpen: {
frontRight: number;
frontLeft: number;
backLeft: number;
backRight: number;
};
airCtrlOn: boolean;
airTempUnit: string;
airTemp: {
unit: number;
hvacTempType: number;
value: string;
};
battery: {
batSignalReferenceValue: unknown;
batSoc: number;
batState: number;
sjbDeliveryMode: number;
};
ign3: boolean;
ignitionStatus: string;
lowFuelLight: boolean;
sideBackWindowHeat: number;
dte: {
unit: number;
value: number;
};
engine: boolean;
defrost: boolean;
hoodOpen: boolean;
airConditionStatus: string;
steerWheelHeat: number;
tirePressureLamp: {
tirePressureWarningLampRearLeft: number;
tirePressureWarningLampFrontLeft: number;
tirePressureWarningLampFrontRight: number;
tirePressureWarningLampAll: number;
tirePressureWarningLampRearRight: number;
};
trunkOpenStatus: string;
evStatus: {
batteryCharge: boolean;
batteryStatus: number;
batteryPlugin: number;
remainTime2: {
etc1: {
value: number;
unit: number;
};
etc2: {
value: number;
unit: number;
};
etc3: {
value: number;
unit: number;
};
atc: {
value: number;
unit: number;
};
};
drvDistance: [{
rangeByFuel: {
gasModeRange: {
value: number;
unit: number;
};
evModeRange: {
value: number;
unit: number;
};
totalAvailableRange: {
value: number;
unit: number;
};
};
type: number;
}];
};
remoteIgnition: boolean;
seatHeaterVentInfo: unknown;
sleepModeCheck: boolean;
lampWireStatus: {
headLamp: unknown;
stopLamp: unknown;
turnSignalLamp: unknown;
};
windowOpen: unknown;
engineRuntime: unknown;
}
export interface VehicleInfo {
vehicleId: string;
nickName: string;
modelCode: string;
modelName: string;
modelYear: string;
fuelKindCode: string;
trim: string;
engine: string;
exteriorColor: string;
dtcCount: number;
subscriptionStatus: string;
subscriptionEndDate: string;
overviewMessage: string;
odometer: number;
odometerUnit: number;
defaultVehicle: boolean;
enrollmentStatus: string;
genType: string;
transmissionType: string;
vin: string;
}
export interface VehicleFeatureEntry {
category: string;
features: [{
featureName: string;
features: [{
subFeatureName: string;
subFeatureValue: string;
}];
}];
}
export interface VehicleLocation {
latitude: number;
longitude: number;
altitude: number;
speed: {
unit: number;
value: number;
};
heading: number;
}
export interface VehicleOdometer {
unit: number;
value: number;
}
export interface VehicleStatusOptions {
refresh: boolean;
parsed: boolean;
}
export interface VehicleCommandResponse {
responseCode: number;
responseDesc: string;
}
export interface VehicleStartOptions {
airCtrl?: boolean | string;
igniOnDuration: number;
airTempvalue?: number;
defrost?: boolean | string;
heating1?: boolean | string;
}
export interface VehicleClimateOptions {
defrost: boolean;
windscreenHeating: boolean;
temperature: number;
unit: string;
}
export interface VehicleRegisterOptions {
nickname: string;
name: string;
vin: string;
regDate: string;
brandIndicator: string;
regId: string;
id: string;
generation: string;
}
export declare type DeepPartial<T> = {
[P in keyof T]?: DeepPartial<T[P]>;
};
export interface VehicleMonthlyReport {
start: string;
end: string;
driving: {
distance: number;
startCount: number;
durations: {
drive: number;
idle: number;
};
};
breakdown: {
ecuIdx: string;
ecuStatus: string;
}[];
vehicleStatus: {
tpms: boolean;
tirePressure: {
all: boolean;
};
};
}
export interface VehicleTargetSOC {
type: EVChargeModeTypes;
distance: number;
targetLevel: number;
}
export interface VehicleMonthTrip {
days: Array<{
dayRaw: string;
date?: Date;
tripsCount: number;
}>;
durations: {
drive: number;
idle: number;
};
speed: {
avg: number;
max: number;
};
distance: number;
}
export interface VehicleDayTrip {
dayRaw: string;
tripsCount: number;
distance: number;
durations: {
drive: number;
idle: number;
};
speed: {
avg: number;
max: number;
};
trips: {
timeRaw: string;
start: Date;
end: Date;
durations: {
drive: number;
idle: number;
};
speed: {
avg: number;
max: number;
};
distance: number;
}[];
}