| Crates.io | homewizard-p1-exporter |
| lib.rs | homewizard-p1-exporter |
| version | 0.1.7 |
| created_at | 2025-07-14 19:02:56.796381+00 |
| updated_at | 2025-07-23 18:05:00.81307+00 |
| description | Prometheus exporter for HomeWizard P1 electricity meter |
| homepage | https://github.com/rvben/homewizard-p1-exporter |
| repository | https://github.com/rvben/homewizard-p1-exporter |
| max_upload_size | |
| id | 1752176 |
| size | 141,025 |
A Rust-based Prometheus exporter for the HomeWizard P1 Meter, providing real-time electricity and gas consumption metrics.
# Using Docker
docker run -d -p 9898:9898 -e HOMEWIZARD_HOST=192.168.1.100 rvben/homewizard-p1-exporter:latest
# Or using pre-built binary
wget https://github.com/rvben/homewizard-p1-exporter/releases/latest/download/homewizard-p1-exporter-$(uname -m)-linux.tar.gz
tar -xzf homewizard-p1-exporter-*.tar.gz
HOMEWIZARD_HOST=192.168.1.100 ./homewizard-p1-exporter
# From Docker Hub
docker run -d \
--name homewizard-p1-exporter \
-p 9898:9898 \
-e HOMEWIZARD_HOST=192.168.1.100 \
rvben/homewizard-p1-exporter:latest
# From GitHub Container Registry
docker run -d \
--name homewizard-p1-exporter \
-p 9898:9898 \
-e HOMEWIZARD_HOST=192.168.1.100 \
ghcr.io/rvben/homewizard-p1-exporter:latest
Download the latest release for your platform from the releases page.
# Example for Linux x86_64
wget https://github.com/rvben/homewizard-p1-exporter/releases/latest/download/homewizard-p1-exporter-x86_64-linux.tar.gz
tar -xzf homewizard-p1-exporter-x86_64-linux.tar.gz
chmod +x homewizard-p1-exporter
HOMEWIZARD_HOST=192.168.1.100 ./homewizard-p1-exporter
cargo install homewizard-p1-exporter
HOMEWIZARD_HOST=192.168.1.100 homewizard-p1-exporter
# Clone the repository
git clone https://github.com/rvben/homewizard-p1-exporter
cd homewizard-p1-exporter
# Build the binary
cargo build --release
# Run the exporter
HOMEWIZARD_HOST=192.168.1.100 ./target/release/homewizard-p1-exporter
The exporter can be configured via command-line arguments or environment variables:
| Environment Variable | CLI Flag | Default | Description |
|---|---|---|---|
HOMEWIZARD_HOST |
--host |
Required | IP address or hostname of HomeWizard P1 Meter |
METRICS_PORT |
--port |
9898 |
Port to expose Prometheus metrics |
POLL_INTERVAL |
--poll-interval |
10 |
Seconds between API polls |
LOG_LEVEL |
--log-level |
info |
Log level (trace, debug, info, warn, error) |
HTTP_TIMEOUT |
--http-timeout |
5 |
HTTP request timeout in seconds |
The exporter provides the following Prometheus metrics:
| Metric | Type | Description |
|---|---|---|
homewizard_p1_power_import_total_kwh |
Counter | Total power imported in kWh |
homewizard_p1_power_import_tariff_kwh{tariff} |
Counter | Power imported per tariff (1/2) |
homewizard_p1_power_export_total_kwh |
Counter | Total power exported in kWh |
homewizard_p1_power_export_tariff_kwh{tariff} |
Counter | Power exported per tariff (1/2) |
homewizard_p1_active_power_watts |
Gauge | Current active power in watts |
homewizard_p1_active_power_l1_watts |
Gauge | Current active power L1 in watts |
homewizard_p1_active_current_amperes |
Gauge | Current active current in amperes |
homewizard_p1_active_tariff |
Gauge | Currently active tariff (1 or 2) |
homewizard_p1_gas_total_m3 |
Counter | Total gas consumption in m³ |
homewizard_p1_gas_timestamp |
Gauge | Timestamp of last gas meter reading |
homewizard_p1_gas_meter_info{unique_id} |
Gauge | Gas meter information |
homewizard_p1_wifi_strength_percent |
Gauge | WiFi signal strength percentage |
homewizard_p1_voltage_sag_count_total |
Counter | Total voltage sag events |
homewizard_p1_voltage_swell_count_total |
Counter | Total voltage swell events |
homewizard_p1_power_failures_any_total |
Counter | Total power failures |
homewizard_p1_power_failures_long_total |
Counter | Total long power failures |
homewizard_p1_meter_info{meter_id,meter_model,smr_version,wifi_ssid} |
Gauge | Meter information |
homewizard_p1_external_sensor_value{unique_id,type,unit} |
Gauge | External sensor value |
homewizard_p1_external_sensor_timestamp{unique_id,type} |
Gauge | External sensor timestamp |
Add the following to your prometheus.yml:
scrape_configs:
- job_name: 'homewizard'
static_configs:
- targets: ['localhost:9898']
scrape_interval: 30s
An example Grafana dashboard is included in grafana-dashboard.json. To import:
The dashboard includes:
# Show all available make targets
make help
# Build the binary
make build
# Run tests
make test
# Check code formatting and linting
make check
# Run the exporter locally
HOMEWIZARD_HOST=192.168.1.100 make run
# Build Docker image
make docker-build
# Run in Docker
HOMEWIZARD_HOST=192.168.1.100 make docker-run
MIT License - see LICENSE file for details
Contributions are welcome! Please feel free to submit a Pull Request.