watttime

An officially maintained python client for WattTime's API providing access to electricity grid emissions data.


License
GPL-3.0
Install
pip install watttime==1.2.1

Documentation

WattTime API v2 - Easy to Use Model

Creating an easier way to interact with WattTime API v2 (api2.watttime.org) The API documentation is at: https://watttimeapiv2.docs.apiary.io and the Watttime organization is really cool, so check them out at https://www.watttime.org/.

Written in Python 3.7, should work with 3.6+

On PyPI pip install watttime

To use:

If you already have a username and password registered with the API v2, then no need to register again. If you do not, follow these steps:

from watttime.api import WattTime

w = WattTime(username=<DesiredUsername>, password=<YourDesiredPassword>)
w.register(email=<your@email.com>, organization=<your organization>)

console output:

Registering...
{'user': '<DesiredUsername>', 'ok': 'User created'}

If you need to reset your password:

w.reset_password()

console output:

{'ok': 'Please check your email for the password reset link'}

Before you do any work, you must request a token:

w.get_token()

console output:

{'token': 'crazy_hash'}
Token received, setting headers: crazy_hash

Now you're ready to get your realtime emissions!!!

If you want to use latitude and longitude, pass them into your function explicitly

data = w.get_realtime_emissions(latitude=37.871667, longitude=-122.272778)

console output:

No balancing authority passed, getting data for
    latitude=37.871667
    longitude=-122.272778
{'id': 137, 'abbrev': 'CAISO_NP15', 'name': 'CAISO NP15 Trading Hub'}
Setting balancing_authority: CAISO_NP15
Getting data for balancing authority: CAISO_NP15
URL requested = https://api2.watttime.org/v2/index/?ba=CAISO_NP15&style=all
{'validUntil': '2019-10-02T21:45:00Z', 'pointTime': '2019-10-02T21:40:00Z', 'freq': '300', 'market': 'RTM', 'ba': 'CAISO_NP15', 'rating': '4', 'switch': '0', 'percent': '64', 'point_time': '2019-10-02T21:40:00Z', 'validFor': 175}

your data variable output in console:

{'validUntil': '2019-10-02T21:45:00Z',
 'pointTime': '2019-10-02T21:40:00Z',
 'freq': '300',
 'market': 'RTM',
 'ba': 'CAISO_NP15',
 'rating': '4',
 'switch': '0',
 'percent': '64',
 'point_time': '2019-10-02T21:40:00Z',
 'validFor': 175}

If you prefer to pass in a balancing authority, you may do so explicitly as well. Note: anything you pass as ba will overwrite and set your instance balancing_authority to whatever you pass and that will be used by default until you change it.

w.get_realtime_emissions(ba='<your_balancing_authority_abbreviation>')

If you need to find a balancing authority (because you can't overwrite by using latitude and longitude alone, use the get_balancing_authority function in order to override it.

w.get_balancing_authority(latitude=37.871667, longitude=-122.272778)

Then you may proceed as normal!

To run tests, in console run:

pytest