How to use the teslajs.wakeUpAsync 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 DoctorMcKay / node-tesla-data / tesladata.js View on Github external
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;
			}

			// We need to wake up the car
			log('Waking vehicle...');
			await Tesla.wakeUpAsync(options);
			// When this request completes, the vehicle isn't already awoken. It's waking up.
			// The official Tesla app then does the vehicle data request repeatedly until it works
		}

		let result = null;
		for (let i = 1; i <= 20; i++) {
			// Retry at most 20 times
			try {
				result = await Tesla.vehicleDataAsync(options);
				break; // it worked
			} catch (ex) {
				log(`Error retrieving vehicle data on request ${i}: ${ex.message}`);

				if (i == 20) {
					throw ex; // this attempt failed
				}
github DoctorMcKay / node-tesla-data / tesladata.js View on Github external
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);
		let latitude = driveState.latitude;
		let longitude = driveState.longitude;

		let success = false;

		let otherVehicleId = vehicle.vehicle_id;
		let token = vehicle.tokens[0];
		let ws = new WS13.WebSocket("wss://" + Config.tesla.email + ":" + token + "@streaming.vn.teslamotors.com/connect/" + otherVehicleId);
		ws.on('connected', () => {
			log("WS connected to Tesla API");
		});