This project reverse engineers the NISC SmartHub api, which is used by hundreds of utility co-ops throughout the United States. This allows downloading 15-minute resolution electic usage and cost data for your personal account if you have a smart meter.
In prior versions of SmartHub, it was possible to download CSV exports of 15-minute interval usage data by specifying an "hourly" interval, but since January 2024 only hourly data has been available via CSV. That's why I reverse engineered the API instead of automating a download of the CSV as I had previously done.
Data can be imported into InfluxDB or VictoriaMetrics.
Download 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 SmartHub website.service_location
is an internal SmartHub number, and must be retrieved from your browser:- Open the Developer tools to the Network tab
- Navigate to Usage Explorer (example: https://novec.smarthub.coop/ui/#/usageExplorer)
- Find a call to
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.
- 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
- The
--debug
flag can be used to log responses from the API for assistance debugging issues.
The SmartHub api currently supports 15-minute resolution of data. This could change in the future; 15-minute interval usage data used to be available via CSV export, but that ability was removed in January 2024.
Measurement: electric
Fields:
- cost (in US cents)
- usage (in watts)
I have included my Grafana dashboard panel definition 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