generated from rmcguire/go-server-with-otel
remove rheemcloud pkg, implement against rest api only
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
# econet-exporter 🔥💧
|
||||
|
||||
An exporter for **Rheem EcoNet / Rheemcloud** water-heater data. It keeps a
|
||||
long-lived connection to the Rheem cloud (via
|
||||
[`rheemcloud-go`](https://github.com/kevinburke/rheemcloud-go)) and exposes device
|
||||
An exporter for **Rheem EcoNet / Rheemcloud** water-heater data. It polls the
|
||||
Rheem cloud REST API (ClearBlade backend) on an interval and exposes device
|
||||
state and usage three ways:
|
||||
|
||||
- **OTEL metrics** served for Prometheus scraping at `/metrics` (live state +
|
||||
@@ -25,7 +24,7 @@ go-app defaults. Custom fields (see `pkg/config/custom.go`):
|
||||
| `econetEmail` | `ECONET_EMAIL` | Rheem account email |
|
||||
| `econetPassword` | `ECONET_PASSWORD` | Prefer the env var; keep out of config.yaml |
|
||||
| `costPerKWH` | `ECONET_COST_PER_KWH` | **US dollars per kWh** (e.g. `0.18` = 18¢), not cents |
|
||||
| `usageInterval` | `ECONET_USAGE_INTERVAL` | Energy/water poll interval (default `5m`) |
|
||||
| `pollInterval` | `ECONET_POLL_INTERVAL` | How often device state + daily energy/water usage are re-fetched over REST (default `1m`) |
|
||||
|
||||
Everything under the go-app `AppConfig` (logging, otel, http, grpc) is also
|
||||
env-overridable with `APP_*` variables — see `env-sample`.
|
||||
@@ -47,20 +46,27 @@ Then:
|
||||
|
||||
Per-device gauges labeled `econet.serial`, `econet.device_id`,
|
||||
`econet.friendly_name`: `econet_setpoint_fahrenheit`, `econet_connected`,
|
||||
`econet_running`, `econet_enabled`, `econet_away`,
|
||||
`econet_hot_water_availability_percent`, `econet_alert_count`,
|
||||
`econet_wifi_signal_db`, `econet_device_info` (adds `type`/`generic_type`/`mode`).
|
||||
`econet_running` (adds a `running_state` label naming the active stage, e.g.
|
||||
`compressor-running` / `element-running` / `idle`), `econet_enabled`,
|
||||
`econet_away`, `econet_hot_water_availability_percent`, `econet_alert_count`,
|
||||
`econet_wifi_signal_db`, `econet_mode` (enum: `1` for the current mode, `0`
|
||||
otherwise, via a `mode` label), `econet_device_info` (adds
|
||||
`type`/`generic_type`/`mode`).
|
||||
Polled usage: `econet_energy_usage_kwh`, `econet_water_usage_gallons`,
|
||||
`econet_energy_cost_dollars`.
|
||||
|
||||
> Note: `econet_wifi_signal_db` is only delivered over Rheem's MQTT push stream,
|
||||
> which this exporter does not use — it stays at `0`.
|
||||
|
||||
## 📂 Project Structure
|
||||
- `proto/econet/v1alpha1/` - Protobuf definitions (source).
|
||||
- `api/econet/v1alpha1/` - Generated proto, grpc, grpc-gateway code.
|
||||
- `pkg/config/` - Custom config merged with go-app configuration.
|
||||
- `pkg/econet/` - `EconetService` (owns the rheemcloud client) plus:
|
||||
- `pkg/econet/` - `EconetService` (owns the REST client + poll ticker) plus:
|
||||
- `econetclient/` - minimal EcoNet REST client (auth, devices, usage).
|
||||
- `econetgrpc/` - gRPC `EconetService` implementation.
|
||||
- `econetmcp/` - MCP server + tools.
|
||||
- `econetmetrics/` - OTEL observable gauges + usage poller.
|
||||
- `econetmetrics/` - OTEL observable gauges.
|
||||
- `helm/` - Helm chart for Kubernetes deployment.
|
||||
- `.gitea/workflows/` - CI pipelines.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user