Skip to content

oleggtro/go-e-prometheus-exporter

Repository files navigation

Go-E Controller Prometheus Exporter

A Rust-based Prometheus exporter for Go-E Controller devices. This exporter fetches power usage data from your Go-E Controller and exposes it as Prometheus metrics for monitoring and alerting.

Features

  • 🔌 Real-time power usage monitoring from Go-E Controller
  • 📊 Exposes Prometheus metrics for home, grid, car, and solar power
  • 🐳 Docker support with multi-architecture builds (amd64, arm64)
  • ⚡ Lightweight and efficient (built with Rust)
  • 🔄 Configurable polling interval (default: 30 seconds)
  • 📈 Perfect for integration with Grafana dashboards

Supported Metrics

The exporter provides the following Prometheus metrics:

Metric Name Description Unit
home_power_usage Total home power consumption Watts
grid_power_usage Power drawn from/fed to the grid Watts
car_power_usage Power used for EV charging Watts
solar_power_gauge Solar power generation Watts

Quick Start

Using Docker (Recommended)

docker run -d \
  --name go-e-exporter \
  -p 9186:9186 \
  -e GOE_CONTROLLER_IP=192.168.1.100 \
  ghcr.io/oleggtro/go-e-prometheus-exporter:v0.1.0

Using Docker Compose

version: '3.8'
services:
  go-e-exporter:
    image: ghcr.io/oleggtro/go-e-prometheus-exporter:v0.1.0
    container_name: go-e-exporter
    ports:
      - "9186:9186"
    environment:
      - GOE_CONTROLLER_IP=192.168.1.100
    restart: unless-stopped

Configuration

Environment Variables

Variable Required Description Default
GOE_CONTROLLER_IP IP address of your Go-E Controller -
RUST_LOG Log level (error, warn, info, debug, trace) info

Example Configuration

export GOE_CONTROLLER_IP=192.168.1.100
export RUST_LOG=debug

Building from Source

Prerequisites

  • Rust 1.70+ (2024 edition)
  • Cargo

Build Steps

# Clone the repository
git clone https://github.com/oleggtro/go-e-prometheus-exporter.git
cd go-e-prometheus-exporter

# Build the project
cargo build --release

# Run the exporter
GOE_CONTROLLER_IP=192.168.1.100 ./target/release/go-e-prometheus-exporter

Building Docker Image

# Build for multiple architectures
chmod +x build-docker-image.sh
./build-docker-image.sh

Prometheus Configuration

Add the following job to your prometheus.yml:

scrape_configs:
  - job_name: 'go-e-controller'
    static_configs:
      - targets: ['localhost:9186']
    scrape_interval: 30s
    scrape_timeout: 10s

Grafana Integration

The exported metrics work perfectly with Grafana dashboards. Here's a sample query to get you started:

# Home power consumption over time
home_power_usage

# Solar generation vs home consumption
home_power_usage + solar_power_gauge

# Grid power (positive = import, negative = export)
grid_power_usage

API Endpoint

The exporter exposes metrics on:

  • URL: http://localhost:9186/metrics
  • Format: Prometheus text format

Example output:

# HELP home_power_usage shows the whole home power usage
# TYPE home_power_usage gauge
home_power_usage 2450.5

# HELP grid_power_usage shows the power taken from the grid
# TYPE grid_power_usage gauge
grid_power_usage 1200.3

# HELP car_power_usage shows the power used by the car charging
# TYPE car_power_usage gauge
car_power_usage 7400.0

# HELP solar_power_gauge shows the power generated by solar
# TYPE solar_power_gauge gauge
solar_power_gauge 3800.2

Supported Go-E Controller Categories

The exporter supports all Go-E Controller power categories:

  • Home: Total household consumption
  • Grid: Grid import/export
  • Car: EV charging power
  • Solar: Solar panel generation
  • Akku: Battery storage
  • Custom 1-10: Custom power categories

Troubleshooting

Common Issues

Exporter won't start

# Check if the Go-E Controller IP is reachable
curl http://192.168.1.100/api/status

# Verify environment variable
echo $GOE_CONTROLLER_IP

No metrics appearing

# Check exporter logs
docker logs go-e-exporter

# Test metrics endpoint
curl http://localhost:9186/metrics

Connection refused

  • Ensure your Go-E Controller is on the same network
  • Verify the IP address is correct
  • Check firewall settings

Logging

Enable debug logging for troubleshooting:

# Docker
docker run -e RUST_LOG=debug -e GOE_CONTROLLER_IP=192.168.178.xx ghcr.io/oleggtro/go-e-prometheus-exporter:v0.1.0

# Binary
RUST_LOG=debug GOE_CONTROLLER_IP=192.168.178.xx ./go-e-prometheus-exporter

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

a prometheus exporter for the go-e home solar controller

Resources

License

Stars

Watchers

Forks

Packages