provident
Unofficial Rust client for the Provident (MeterConnex) utility metering portal: sign in, list your meters, and fetch consumption history and billing-period reports for electricity, water, heating, cooling, and gas.
Not affiliated with or endorsed by Provident or QMC. The portal has no public API; this crate talks to the same endpoints its web pages use, which may change without notice.
Installation
[]
= "0.1"
The client is async by default and runtime-agnostic (any executor that can drive
reqwest). For a blocking client, disable default features:
[]
= { = "0.1", = false, = ["blocking"] }
async and blocking are mutually exclusive: enable exactly one. TLS uses the platform's
native stack (OpenSSL on Linux), because the portal only offers cipher suites rustls does not
support.
Usage
use ;
use Client;
use QuickGraphsRequest;
use Utility;
use ProcessLoginRequest;
async
With the blocking feature the same calls exist without .await.
What's available
| Area | Calls | Portal endpoint |
|---|---|---|
client.auth |
login, verify |
LoginService.aspx |
client.account |
meters, meter, meter_by_serial, utilities, location, details, api_key |
meter tree, AccountInfo.aspx |
client.usage |
series (hourly/daily consumption), report (start/end readings and totals) |
Quick Graphs, Quick Reports |
Request and response types live in provident::models,
laid out to mirror the portal's URLs. Things worth knowing:
- Time zones. Dates are calendar days with no zone. Hourly buckets for electricity behave
like local time; water meters appear to use a fixed offset about two hours earlier in
winter. See the
quick_graphsmodule docs for details. - Missing readings. Hourly series report
0.0for missing hours; reports flag them witherrorand leave values empty. - Deliberately not wrapped. The dashboard's
GetUtilities,UpdateCard, andGetChartDatapage methods intermittently answer with another account's data, so this crate derives utilities from the per-account meter tree instead.
Minimum supported Rust version
Rust 1.99.1 (edition 2024).