ianjwhite99 / connected-car-python-sdk

Open-source Python SDK for Ford vehicles connected with Sync Connect (Ford Pass)
MIT License
71 stars 12 forks source link
car cars ford ford-vehicles-connected fordpass python sdk smart-cars sync-connect telematics

#

ConnectedCar Python SDK Logo

The ConnectedCar Python SDK is an open-source, python package that provides the ability to send commands to your Ford Sync Connect connected vehicle.

Installation PyPI version

python3 -m pip install connectedcar

Requirements

Getting Started

Import the ConnectedCar SDK

import connectedcar

Create a new connectedcar client

client = connectedcar.AuthClient('9fb503e0-715b-47e8-adfd-ad4b7770f73b', None, None, None, 'US') # Region argument is only required if you live outside the United States.

Use client.get_user_access_token() to exchange your user credentials for an access object. To make any vehicle data request to the Ford Sync Connect API, you'll need to give the SDK a valid access token.

access = client.get_user_access_token('<username>', '<password>')

This access object will look like this:

{
  "access_token": "...",
  "token_type": "Bearer",
  "expiration": "2021-03-01T18:04:25+00:00",
  "refresh_token": "...",
  "refresh_expiration": "2021-03-02T18:03:25+00:00",
  "expires_in": "..."
}

Access tokens will expire every 2 hours, so you'll need to constantly refresh them by calling client.exchange_refresh_token()

refreshToken = client.exchange_refresh_token(access['refresh_token'])

With your access token in hand, use connectedcar.User() to get a User object representing the user.

user = connectedcar.User(access['access_token'], "US") # Region argument is only required if you live outside the United States.

Use user.vehicles() to return an array of all the vehicles associated with a users account. The response will include the vehicle vin.

vehicles = user.vehicles()

vehicleList = [] # Array of vehicles

for userVehicle in vehicles: # For each user vehicle
    vehicleList.append(userVehicle['VIN'])

Now with a vehicle vin in hand, use connectedcar.Vehicle() to get a Vehicle object representing the user's vehicle.

currentVehicle = connectedcar.Vehicle(vehicleList[0], access['access_token'], "US") # Region argument is only required if you live outside the United States.

Now you can ask the car to do things, or ask it for some data! For example:

currentVehicle.start()

Examples & Documentation

For more examples on what you can do with Sync Connected car, see the examples folder or take a peek at the documentation.

Funding & Support

If you are interested in supporting the development of my projects check out my patreon or buy me a coffee.

Disclaimer

THIS CODEBASE IS NOT ENDORSED, AFFILIATED, OR ASSOCIATED WITH FORD, FOMOCO OR THE FORD MOTOR COMPANY.