How to use the teslajs.vehiclesAsync function in teslajs

To help you get started, we’ve selected a few teslajs examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github mseminatore / alexa-tesla / index.js View on Github external
// For testing multi-car when you only have one car
/*
                vehicles[1] = {};
                vehicles[1].id_s = vehicles[0].id_s;
                vehicles[1].display_name = "Tessie";
*/                
                session.set("vehicles", vehicles);
                session.set("options", options);
                return vehicles;
            });
        } else if (req.sessionDetails.accessToken) {
            log("OAuth token passed by Alexa");

            options = {authToken: req.sessionDetails.accessToken};

            return tjs.vehiclesAsync(options)
            .then(function(vehicles) {
                log("vehicles completed.");
                // ensure we have a default vehicle
                options.vehicleID = vehicles[0].id_s;
                session.set("vehicles", vehicles);
                session.set("options", options);
                return vehicles;
            });
        } else {
            // promise fails with error response!
            return new Promise(function (fulfill, reject) {
                reject("No login or token found!");
            });
        }
    }
}
github mseminatore / alexa-tesla / index.js View on Github external
return tjs.vehiclesAsync(options);
            })
            .then(function(vehicles) {
                // ensure we have a default vehicle
                options.vehicleID = vehicles[0].id_s;
                session.set("vehicles", vehicles);
                session.set("options", options);
                return vehicles;
            });
        } else if (token) {
            // if token found in ENV then use it
            log("OAuth token found in process ENV");

            options = {authToken: token};

            return tjs.vehiclesAsync(options)
            .then(function(vehicles) {
                // ensure we have a default vehicle
                options.vehicleID = vehicles[0].id_s;
                
                // For testing multi-car when you only have one car
/*
                vehicles[1] = {};
                vehicles[1].id_s = vehicles[0].id_s;
                vehicles[1].display_name = "Tessie";
*/                
                session.set("vehicles", vehicles);
                session.set("options", options);
                return vehicles;
            });
        } else if (req.sessionDetails.accessToken) {
            log("OAuth token passed by Alexa");
github DoctorMcKay / node-tesla-data / tesladata.js View on Github external
async function triggerHomeLink(callback) {
	// This is a bit more involved than it really needs to be
	try {
		let options = {"authToken": g_BearerToken, "vehicleID": Config.tesla.vehicleId};

		// Retrieve vehicle metadata first to determine if we need to wake it up, and for tokens
		let vehicle = (await Tesla.vehiclesAsync(options)).find(v => v.id_s == Config.tesla.vehicleId);
		if (!vehicle) {
			return callback(new Error("Cannot find vehicle"));
		}

		if (!vehicle.tokens || !vehicle.tokens[0]) {
			return callback(new Error("No tokens found"));
		}

		if (['offline', 'asleep'].includes(vehicle.state)) {
			// Wake up the car first
			await Tesla.wakeUpAsync(options);
			await new Promise(resolve => setTimeout(resolve, 5000));
		}

		// Get the car's drive state because we need its coordinates
		let driveState = await Tesla.driveStateAsync(options);
github DoctorMcKay / node-tesla-data / tesladata.js View on Github external
g_BearerTokenExpiresTime = Infinity;
		auth();
		return;
	}

	if (Date.now() - g_LastPoll < 10000) {
		// last poll was under 10 seconds ago
		enqueueRequest();
		return;
	}

	log("Requesting data");
	let options = {"authToken": g_BearerToken, "vehicleID": Config.tesla.vehicleId};

	try {
		let vehicleMetadata = (await Tesla.vehiclesAsync(options)).find(v => (v.id_s || v.id) == Config.tesla.vehicleId);
		if (!vehicleMetadata) {
			log("Unable to retrieve metadata for vehicle: vehicle not found");
			return;
		}

		if (['asleep', 'offline'].includes(vehicleMetadata.state)) {
			// Car is asleep
			log('Vehicle is asleep');
			setState(VehicleState.Asleep);

			if (g_CurrentState != VehicleState.Awoken && Date.now() - g_CarLastSeenAwake < (1000 * 60 * 60 * 3)) {
				// Only wake it up to poll data every 3 hours
				g_LastPoll = Date.now();
				enqueueRequest();
				return;
			}
github mseminatore / alexa-tesla / index.js View on Github external
.then(function(result) {
                options = {authToken: result.authToken};
                return tjs.vehiclesAsync(options);
            })
            .then(function(vehicles) {