Python Example

SolarCity PowerGuide API Example Client

Requires:
* Python 2.7
* Python Requests library: http://docs.python-requests.org/
'''
import base64
import requests
import pprint

# Put your username and password here
USERNAME = raw_input('Username: ')
PASSWORD = raw_input('Password: ')

# OAuth2 settings
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
SCOPE = 'https://api.solarcity.com/solarguard/'

auth_data = {'grant_type': 'password',
      'username':USERNAME,
      'password':PASSWORD,
      'scope':SCOPE}

headers = {'Authorization':'Basic '+ base64.b64encode(CLIENT_ID+':'+CLIENT_SECRET)}

r = requests.post('https://login.solarcity.com/issue/oauth2/token', headers=headers, data=auth_data)
print r.json()
access_token = r.json()['access_token']
print 'Obtained Access Token'

headers = {'Authorization': 'Bearer '+access_token}

# Request list of Customers records
r = requests.get('https://api.solarcity.com/powerguide/v1.0/customers',
      headers=headers,
      params = {'Size':10,'Page':1})

# Request Customer detail for first customer record
guid = r.json()['Data'][0]['GUID']
customer_detail = requests.get('https://api.solarcity.com/powerguide/v1.0/customers/'+guid,
      headers=headers,
      params = {'IsDetailed':'true'})

print 'CUSTOMER'
pprint.pprint(customer_detail.json())

# Request Installation Detail
installation_guid = customer_detail.json()['Installations'][0]['GUID']
installation_detail = requests.get('https://api.solarcity.com/powerguide/v1.0/installations/'+installation_guid,
      headers=headers,
      params = {'IncludeDevices':'true'})

print 'INSTALLATION DETAIL'
pprint.pprint(installation_detail.json())

# Request Time Series Generation data by 15 minute interval
r = requests.get('https://api.solarcity.com/powerguide/v1.0/measurements/'+installation_guid,
      headers=headers,
      params = {'StartTime': '2014-10-1',
      'EndTime': '2014-10-2',
      'Period': 'QuarterHour',
      'IsByDevice': 'true'})
print '15 Minute MEASUREMENTS'
pprint.pprint(r.json())

# Request Time Series Generation data by daily interval
r = requests.get('https://api.solarcity.com/powerguide/v1.0/measurements/'+installation_guid,
      headers=headers,
      params = {'StartTime': '2014-10-1',
      'EndTime': '2014-10-31',
      'Period': 'Day',
      'IsByDevice': 'true'})
print 'Daily MEASUREMENTS'
pprint.pprint(r.json())