Skip to content

Commit

Permalink
Flesh out readme, add dashboard panel info, example config
Browse files Browse the repository at this point in the history
- Change influx config to use AuthToken instead of User + Password (match influx client)
  • Loading branch information
tedpearson committed Mar 3, 2024
1 parent eab09df commit 1bc8625
Show file tree
Hide file tree
Showing 6 changed files with 790 additions and 9 deletions.
59 changes: 58 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,59 @@
# electric-usage-downloader
Import smart meter metrics from NOVEC into VictoriaMetrics

This project reverse engineers the api at the electric co-op Novec, https://novec.smarthub.coop/ to allow
downloading 15-minute resolution electic usage and cost data for your personal account if you have a smart meter.

Data is imported into InfluxDB or VictoriaMetrics.

## Config

Download [config.example.yaml](config.example.yaml) and fill in your own values.

- `extract_days` is how many days to look back from the current day. Max is 45.
if specific `--start` and `--end` flags are not specified.
- `account` is your account number, available on your bill and on the
Novec smart hub website.
- `password` is hashed or encrypted in some unknown way, and must be retrieved from your browser:
- Navigate to https://novec.smarthub.coop/ui/#/login
- Open the Developer tools to the Network tab
- Login.
- Find a call to `https://novec.smarthub.coop/services/oauth/auth/v2` in the Network tab
- Open the call, and copy the `password` field from the Payload tab.
- `service_location` is an internal Novec number. and must be retrieved from your browser:
- Open the Developer tools to the Network tab
- Navigate to [Usage Explorer](https://novec.smarthub.coop/ui/#/usageExplorer)
- Find a call to `https://novec.smarthub.coop/services/secured/utility-usage/poll` in the Network tab
- Open the call, and copy the `serviceLocationNumber` field from the Payload tab.
- `influxdb.insecure` allows connecting to a server with certificate issues.
- The other fields should be fairly self-explanatory.

## Running

- To download and insert the last `extract_days`, run like this arguments: `electric-usage-downloader --config config.yaml`
- To download and insert a specific date range, run with arguments:
`electric-usage-downloader --config config.yaml --start 2024-01-16 --end 2024-01-17`

## Details

The Novec api currently supports 15-minute resolution of data. This could change in the future; it used to be available
as downloaded CSV files as well, but now only hourly information is available that way.

Measurement: **electric**

Fields:
- **cost** (in US cents)
- **usage** (in watts)

## Dashboard

I have included my [Grafana dashboard panel definition](dashboard/panel.json) in the repo.

Features:
- Electric usage graphed in watts
- Trailing 1d and 7d averages
- Cumulative usage (right x axis)
- Integrated with data from my Ecobee thermostat, showing when my heat pump or aux oil heat is running.
- See https://github.com/tedpearson/ecobeemetrics for how I get this data

Here's a screenshot of the dashboard panel in action:
![Dashboard panel](dashboard/dashboard.png)
12 changes: 12 additions & 0 deletions config.example.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
extract_days: 10
utility:
api_url: https://novec.smarthub.coop/
username: [email protected]
password: novec_password
account: 1234567001
service_location: 123456
influxdb:
host: https://localhost:8428
auth_token: johndoe:influx_password
database: db_name
insecure: false
Binary file added dashboard/dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 1bc8625

Please sign in to comment.