Skip to main content

Library for interacting with the Emporia Vue energy monitor.

Project description

PyEmVue

A Python Library for reading data from the Emporia Vue energy monitoring system.

The library can be invoked directly to pull back some basic info but requires your email and password to be added to a keys.json file, which is then replaced with the access tokens.

API documentation can be accessed here

keys.json

{
    "email": "you@email.com",
    "password": "password"
}

Usage

Log in with username/password

vue = PyEmVue()
vue.login(username='you@email.com', password='password', token_storage_file='keys.json')

token_storage_file is an optional file path where the access tokens will be written for reuse in later invocations. It will be updated whenever the tokens are automatically refreshed.

Log in with access tokens

with open('keys.json') as f:
    data = json.load(f)

vue = PyEmVue()
vue.login(id_token=data['id_token'],
    access_token=data['access_token'],
    refresh_token=data['refresh_token'],
    token_storage_file='keys.json')

Get customer details

vue = PyEmVue()
vue.login(id_token='id_token',
    access_token='access_token',
    refresh_token='refresh_token')

customer = vue.get_customer_details()

Returns a Customer object with email address, name, customer_gid, and creation date

Get devices

vue = PyEmVue()
vue.login(id_token='id_token',
    access_token='access_token',
    refresh_token='refresh_token')

vue.get_devices()

Returns a list of VueDevices with device information, including device_gid and list of VueDeviceChannels associated with the device. VueDeviceChannels are passed to other methods to get information for the specific channel.

Get total usage

vue = PyEmVue()
vue.login(id_token='id_token',
    access_token='access_token',
    refresh_token='refresh_token')

energy_usage = vue.get_total_usage(channel, timeFrame=TotalTimeFrame.ALL.value, unit=TotalUnit.WATTHOURS.value)

Returns the total usage over the time frame for the specified channel as a single float number. Generally energy over all time or month to date.

Arguments

  • channel: A VueDeviceChannel from the get_devices call. Key parts are the device_gid and channel_num.
  • timeFrame: Any value from the TotalTimeFrame enum. Either all time or month to date.
  • unit: Any value from the TotalUnit enum. Currently only watthours.

Get recent usage

vue = PyEmVue()
vue.login(id_token='id_token',
    access_token='access_token',
    refresh_token='refresh_token')

channel_usage_list = vue.get_recent_usage(scale=Scale.HOUR.value, unit=Unit.WATTS.value)
for channel in channel_usage_list:
    print(channel.usage)

Returns list of ViewDeviceChannelUsage objects giving usage over the scale timeframe in the unit specified. For a scale of under 1 hour this will give the average usage over the time frame (ie kW), for an hour or more it gives the total usage (ie kWh).

Arguments

  • scale: Any value from the Scale enum. From 1 second to 1 year.
  • unit: Any value from the Unit enum. Generally watts but there are options for dollars or trees or miles driven, etc.

Get usage over time

vue = PyEmVue()
vue.login(id_token='id_token',
    access_token='access_token',
    refresh_token='refresh_token')

usage_time = vue.get_usage_over_time(channel, start, end, scale=Scale.SECOND.value, unit=Unit.WATTS.value)

# Throw into matplotlib for plotting

Returns the energy used by the VueDeviceChannel between the start and end datetimes for each scale timeframe. In other words, if scale is seconds and there's a minute between start and end, you'll get 60 data points in the output.

Arguments

  • channel: A VueDeviceChannel from the get_devices call. Key parts are the device_gid and channel_num.
  • start: Starting datetime given in UTC.
  • end: Ending datetime given in UTC.
  • scale: Any value of Scale enum at HOUR or finer, DAY and higher is not supported. For 1 hour between start and end you'd get 3600 data points at SECOND, 60 at MINUTE, or 4 at MINUTE_15.
  • unit: Any value of Unit enum, generally watts.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyemvue, version 0.9.3
Filename, size File type Python version Upload date Hashes
Filename, size pyemvue-0.9.3-py3-none-any.whl (8.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pyemvue-0.9.3.tar.gz (7.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page