Self-hosted monitoring platform for Growatt solar energy devices — NOAH 2000 batteries, inverters, and hybrid systems. Single Docker container — backend API + frontend UI combined.
/api/metrics endpoint for Grafanadocker run -d \
--name growtthub \
--restart unless-stopped \
-p 3000:3000 \
-p 4000:4000 \
-v /path/to/data:/app/data \
-e [email protected] \
-e GROWATT_PASSWORD=yourpassword \
-e NOAH_DEVICE_IDS=ABC123456 \
kroeberd/growtthub:latest
Or with docker-compose:
cp .env.example .env
# Edit .env with your credentials
docker compose up -d
Import the template manually: Docker → Add Container → Template → paste URL
https://raw.githubusercontent.com/kroeberd/GrowattHub/main/unraid/growtthub.xml
All settings via environment variables. See .env.example for full reference.
| Variable | Description |
|---|---|
GROWATT_USERNAME | Your Growatt account email |
GROWATT_PASSWORD | Your Growatt account password |
NOAH_DEVICE_IDS | Comma-separated NOAH 2000 serial numbers |
INVERTER_DEVICE_IDS | Comma-separated inverter serial numbers |
| Variable | Default | Description |
|---|---|---|
MQTT_BROKER_URL | — | e.g. mqtt://192.168.1.100:1883 |
MQTT_BASE_TOPIC | growtthub | Topic prefix |
MQTT_DISCOVERY_PREFIX | homeassistant | HA auto-discovery prefix |
| Variable | Default | Description |
|---|---|---|
DISCORD_WEBHOOK_URL | — | Webhook URL for notifications |
DISCORD_LOW_BATTERY_THRESHOLD | 15 | Alert threshold in % |
DISCORD_DAILY_REPORT_TIME | 20:00 | Daily report time (HH:MM) |
| Port | Service |
|---|---|
3000 | Web dashboard (Next.js) |
4000 | REST API + WebSocket (Fastify) |
growtthub/status → system online/offline (LWT)
growtthub/{siteId}/{deviceId}/telemetry → live sensor data (JSON)
growtthub/{siteId}/{deviceId}/availability → online / offline
homeassistant/sensor/{deviceId}_{sensor}/config → HA discovery
GET /api/health
GET /api/devices
GET /api/devices/:id
GET /api/devices/:id/telemetry?from&to&limit
GET /api/devices/:id/stats/daily?days
GET /api/devices/:id/stats/today
GET /api/events?limit
POST /api/events/acknowledge-all
GET /api/mqtt/status
POST /api/mqtt/rediscover
POST /api/discord/test
GET /api/metrics ← Prometheus
WS /ws ← Live telemetry stream
| Layer | Technology |
|---|---|
| Backend | Node.js 20, TypeScript, Fastify |
| ORM | Drizzle ORM + SQLite (WAL) |
| Frontend | Next.js 14, React, Recharts, Tailwind |
| Process manager | supervisord |
| MQTT | mqtt.js v5 |
| Containers | Docker, multi-arch (amd64 + arm64) |
MIT — kroeberd
Content type
Image
Digest
sha256:722ea2ee1…
Size
80.9 MB
Last updated
4 months ago
docker pull kroeberd/growatthub