1.0.16 • Published 2 years ago

tesla-api-request v1.0.16

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Tesla API Request

This is a minimal request module for Tesla vehicles. The actual API is not included here. Instead, this module supports authentication so you don´t have to worry about it. It also handles the renewal of access tokens given a refresh token and keeping your vehicle awake.

If you don´t have a refresh token you may get it here.

Simply provide a Tesla refresh token and a vehicle identification number (VIN) and this module lets you send GET and POST requests to access your vehicle.

It is light weight and has no dependencies.

Installation

npm install tesla-api-request --save

Samples

Lock door

var TeslaAPI = require('tesla-api-request');

async function doorLock() {	

	require('dotenv').config();

	var options = {
		token: process.env.TESLA_API_REFRESH_TOKEN,
		vin: process.env.TESLA_API_VIN,
		debug: console.log
	};

	var tapi = new TeslaAPI(options);
	var reply = await tapi.post('command/door_lock');

	console.log(reply.result == true ? 'Door locked.' : 'Hmm. Could not lock the door...');
}

doorLock();

Get information about your vehicle

var TeslaAPI = require('tesla-api-request');

async function getVehicleData() {	

	require('dotenv').config();

	var options = {
		token: process.env.TESLA_API_REFRESH_TOKEN,
		vin: process.env.TESLA_API_VIN,
		debug: true
	};

	var tapi = new TeslaAPI(options);
	var vehicleData = await tapi.get('vehicle_data');

	console.log(JSON.stringify(vehicleData, null, 4));
}

getVehicleData();

Get your Tesla model

var TeslaAPI = require('tesla-api-request');

async function getModel() {	

	require('dotenv').config();

	var options = {
		token: process.env.TESLA_API_REFRESH_TOKEN,
		vin: process.env.TESLA_API_VIN,
		debug: console.log
	};

	var tapi = new TeslaAPI(options);
	var vehicleData = await tapi.get('vehicle_data');
	var model = 'Model Unknown';
	var displayName = vehicleData.display_name;

	if (displayName.match(/^\d+$/))
		displayName = null;

	vehicleData.option_codes.split(',').forEach((code) => {
		switch(code) {
			case 'MDLS':
			case 'MS03':
			case 'MS04': {
				model = 'Model S';
				break;
			}
			case 'MDLX': {
				model = 'Model X';
				break;
			}
			case 'MDL3': {
				model = 'Model 3';
				break;
			}
			case 'MDLY': {
				model = 'Model Y';
				break;
			}
		}            
	});

	if (displayName)
		console.log(`Your Tesla is a ${model} and you named it ${displayName}.`);
	else
		console.log(`Your Tesla is a ${model} and you have not given your car a real name yet.`);
}

getModel();

Methods

  • async get(path) - Executes a GET request.
  • async post(path, body) - Executes a POST request with optional body.
  • async request(method, path, options) - Executes a request with additional options.

Please refer to the source code for more documentation.

Tesla API Documentation

1.0.16

2 years ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago