Hi Ovo,
I wondered whether the API that powers your live and historical usage page in the account menu is something you could look into opening up a bit so we can freely access our raw data and also perhaps it may stimulate some interesting community projects?
For instance (more sport related), Strava and Fitbit.
Best answer by g-de
can you help me understand if the links above allow users to access raw data as if from an API?
I can certainly give it a go.
Firstly, big thanks to Timmo and other contributors for developing the library. All thanks go to them and links to buy them a coffee for their effort can be found on PyPi or GitHub:
https://pypi.org/project/ovoenergy/
https://github.com/timmo001/ovoenergy
I assume the way the library was developed this was to reverse engineer the My OVO website. That is, browse the website as normal and and monitor the traffic to see what OVO URLs and APIs it uses. Assuming this is the case, one of these URLs (get account IDs) already seems to be different but the library is still working for the moment. The APIs being used are not officially supported outside of the website, so first, a warning that any changes to the My OVO website may break the library.
For anyone using Python, you should be able to include the ovoenergy library and look at https://github.com/timmo001/ovoenergy/blob/master/ovoenergy/cli.py for how to use it.
For replicating this in other languages, the process seems to be as follows:
- Login by sending a POST request to https://my.ovoenergy.com/api/v2/auth/login with the following JSON in the body:
{
"username": "...",
"password": "...",
"rememberMe": true
}From the response, save the cookies to use in all future requests.
- Next, send a GET request to https://smartpaym.ovoenergy.com/api/customer-and-account-ids . Be sure to save the items in the “accountIds” property (usually only one item).
- Finally, make a GET request to https://smartpaym.ovoenergy.com/api/energy-usage/daily/{accountId}?date={yyyy-MM} where {accountId} is the value from the previous request and {yyyy-MM} is the month in the format 2020-08.
You can also get monthly or half-hourly usage using the following URLs similar to step 3:
- https://smartpaym.ovoenergy.com/api/energy-usage/half-hourly/{accountId}?date={yyyy-MM-dd}
- https://smartpaym.ovoenergy.com/api/energy-usage/monthly/{accountId}?date={yyyy}
As mentioned above, if this is wanted for Home Assistant, the integration was added in version 0.114 (https://www.home-assistant.io/integrations/ovo_energy/).
Unfortunately the data only goes up to the end of the previous day as OVO no longer provide real-time data: