Home
Softono

Tesla Api

Open source MIT Python
80
Stars
31
Forks
8
Issues
20
Watchers
4 years
Last Commit

 About Tesla Api

Lightweight Python API client for the Tesla API.

Platforms

Web Self-hosted

Languages

Python

Links

Need Help Installing Tesla Api?

We provide expert installation service for this software. Our team will install, configure, and secure Tesla Api on your server. plans start at just $30.

Tesla API

This is a package for connecting to the Tesla API.

Usage for a vehicle

import asyncio
from tesla_api import TeslaApiClient

async def main():
    async with TeslaApiClient('[email protected]', 'yourPassword') as client:
        vehicles = await client.list_vehicles()

        for v in vehicles:
            print(v.vin)
            await v.controls.flash_lights()

asyncio.run(main())

Usage for Powerwall 2

import asyncio
from tesla_api import TeslaApiClient

async def main():
    client = TeslaApiClient('[email protected]', 'yourPassword')

    energy_sites = await client.list_energy_sites()
    print("Number of energy sites = %d" % (len(energy_sites)))
    assert(len(energy_sites)==1)
    reserve = await energy_sites[0].get_backup_reserve_percent()
    print("Backup reserve percent = %d" % (reserve))
    print("Increment backup reserve percent")
    await energy_sites[0].set_backup_reserve_percent(reserve+1)

    await client.close()

asyncio.run(main())

Reusing API tokens

To avoid needing to store login details, you can pass in a previous API token. Each time a new API token is created (either from a new login, or by refreshing an expired token), the on_new_token callback will be called.

async def save_token(token):
    open("token_file", "w").write(token)

async def main():
    email = password = token = None
    try:
        token = open("token_file").read()
    except OSError:
        email = input("Email> ")
        password = input("Password> ")
    client = TeslaApiClient(email, password, token, on_new_token=save_token)
    ...

If you only want to verify and save a user's token for later use, you could use the authenticate() method:

async def main():
    async with TeslaApiClient(email, password, on_new_token=save_token) as client:
        await client.authenticate()