MQTT-Collector (Python/paho-mqtt) speichert abgeschlossene go-e Wallbox-Ladungen in SQLite; Next.js-Web-App zeigt sie als Tabelle mit Energie-Summen (Monat/Jahr/gesamt) im werte-next-Design. Zwei Docker-Container mit gemeinsamem DB-Volume. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.9 KiB
Auto-Charger Log
Kleine Web-App, die die Ladevorgänge des Autos protokolliert. Die Daten kommen
per MQTT von der go-e Wallbox (Device-ID 310014), werden in einer
SQLite-Datenbank gespeichert und als Tabelle mit Energie-Summen angezeigt.
Läuft als zwei Docker-Container auf einem lokalen Server.
Architektur
| Container | Stack | Aufgabe |
|---|---|---|
collector |
Python + paho-mqtt |
MQTT abonnieren, abgeschlossene Ladungen → SQLite |
web |
Next.js 16 / React 19 / Tailwind 4 | SQLite (read-only) lesen, Tabelle + Summen anzeigen |
Beide teilen sich das Volume ./data mit der Datei charges.db. Der Collector
besitzt alle Schreibzugriffe, die Web-App liest nur.
MQTT-Daten (go-e API v2)
Basis-Topic go-eCharger/310014/<key>:
car— Fahrzeug-Status (1=Idle,2=Charging,3=WaitCar,4=Complete). Steuert die Session-Erkennung: Start bei Wechsel nach2, Abschluss bei Wechsel nach1oder4.wh— geladene Energie der aktuellen Ladung in Wh.cdi— Objekt{"type":1,"value":<ms>}mit der Ladedauer in Millisekunden.
Einrichtung
cp .env.example .env
# MQTT_USER / MQTT_PASS in .env eintragen
docker compose up --build
Web-App danach unter http://<server>:8082/ (Port via WEB_PORT in .env).
Konfiguration (.env)
| Variable | Bedeutung | Default |
|---|---|---|
MQTT_HOST |
MQTT-Broker | nuccy |
MQTT_PORT |
MQTT-Port | 1883 |
MQTT_USER/PASS |
MQTT-Credentials | – |
MQTT_TOPIC_BASE |
Basis-Topic der Wallbox | go-eCharger/310014 |
DB_PATH |
Pfad der SQLite-DB im Container | /data/charges.db |
TZ |
Zeitzone (für Monats-/Jahres-Summen) | Europe/Berlin |
WEB_PORT |
Host-Port der Web-App | 8082 |
Test ohne Auto
Eine Ladung lässt sich per mosquitto_pub simulieren (Reihenfolge beachten):
mosquitto_pub -h nuccy -t go-eCharger/310014/car -m 2
mosquitto_pub -h nuccy -t go-eCharger/310014/wh -m 7350
mosquitto_pub -h nuccy -t go-eCharger/310014/cdi -m '{"type":1,"value":3600000}'
mosquitto_pub -h nuccy -t go-eCharger/310014/car -m 4
Erwartung: eine neue Zeile (Dauer 1:00, Energie 7,35 kWh); die Summen aktualisieren sich beim Neuladen der Seite.
Bekannte Einschränkung
Der Collector hält den Session-Zustand nur im Speicher. Startet er mitten in einer laufenden Ladung, wird genau diese eine Ladung ggf. nicht (vollständig) erfasst.