Unofficial API client for Pod Point with a focus on home users.
pip install podpointclient
The Pod Point Client supports the following methods:
Method | Description |
---|---|
async_credentials_verified() |
Verify that the credentials we have can pull atleast one Pod - Returns bool . |
async_get_all_pods(includes=[]) |
Get all pods from a user's account - Returns a list of Pod objects. Optional includes can be used to change what will be returned. Defaults to all data. |
async_get_pods(perpage=5, page=2, includes=[]) |
Get pods from a user's account - Returns a list of Pod objects. perpage can be 'all', or a number. Can get additional pages with page attribute. includes is a list of additional information pulled for the Pod. Pass an empty list to includes for minimal information or None for full data (defaults to None ). |
async_get_pod(pod_id=1234) |
Gets an individual pod - Returns a single Pod . NOTE: The Pod Point API does not support a single-pod return so this method gets all pods and filters. |
async_set_schedule(enabled=False, pod=pod) |
Updates a pod with a week of schedules that will enable or disable charging - See setting charging schedules for more information on how this works. |
async_get_all_charges() |
Get all charges from a user's account - Returns a list of Charge objects. |
async_get_charges(perpage=5, page=2) |
Get charges for a user - Returns a list of Charge objects. perpage can be 'all', or a number. Can get additional pages with page attribute. |
async_get_firmware(pod=_Pod_) |
Get firmware information for a pod - Returns a list of Firmware objects. |
async_get_user(includes=[]) |
Get current user account information - Returns a User object including account balance, units and vehicles. includes is a list of additional information pulled for a User. Pass an empty list to includes for minimal information or None for full data (defaults to None ) |
async_get_charge_override(pod=_Pod_) |
Get the current charge override for a pod - Returns a ChargeOverride object. |
async_set_charge_override(pod=_Pod_, enabled=False, start_time=None, end_time=None) |
Set a charge override for a pod - Returns a ChargeOverride object. |
async_delete_charge_override(pod=_Pod_) |
Delete a charge override for a pod - Returns a boolean. |
async_set_charge_mode_manual(pod=_Pod_) |
Set a pod to manual charge mode - Returns a Pod object. |
async_set_charge_mode_smart(pod=_Pod_) |
Set a pod to smart charge mode - Returns a Pod object. |
async_get_charge_mode(pod=_Pod_) |
Get the current charge mode for a pod - Returns a ChargeMode object. |
async_get_connection_status(pod=_Pod_) |
Get the current connection status for a pod - Returns a ConnectionStatus object. |
Included in the project is example.py
which walks through a common scenario:
- Get all pods
- Get firmware and serial number data for one pod
- Updating the schedule of an individual pod
- Confirm that it worked
- Get information from the last charge
You must provide your email address and password to the script as detailed below:
python3 example.py --email PODPOINTEMAIL --password PODPOINTPASSWORD
NOTE: According to Pod Point, schedules can take up to 5 minutes to be recognised by a device. This applies to both updating of a schedule affecting a device, and the device recognising that it is active/inactive due to entering/exiting a schedule window.
Currently this client supports setting the same schedule across all days for the week. By default it is designed to be used as an on/off switch for charging and creates a schedule lasting 1 second, from 00:00:00 - 00:00:01.
Due to the delay in pods recognising that they are in/out of a schedule this realistically means charging is turned off when this schedule is enabled.
You are able to pass a start_time and end_time when setting schedules but these are set for all days and are in-day only. By which I mean passing start_time="18:00"
and end_time="00:15"
will fail as 00:15
is before the start time.
If you want to contribute to this please read the Contribution guidelines.