6 Commits

Author SHA1 Message Date
admin 0295d5a584 deploy: Registry-Deploy für nuccy (collector + web)
- deploy.sh: baut & pusht beide Images (linux/amd64) nach docker.citysensor.de
- docker-compose.prod.yml: zieht Registry-Images, collector im smarthome-Netz
  (Broker-Container 'mqtt'), gemeinsames data-Volume
- .env.production.example: Vorlage für nuccy (.env neben der Compose-Datei)
- .gitignore: .claude/ ausschließen

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 16:10:56 +02:00
admin 5f695ebe2a fix: kein WAL mehr, damit die read-only Web-App die DB öffnen kann
Eine readonly-Verbindung (web-Container) kann eine WAL-Datenbank ohne aktiven
Writer/-shm nicht öffnen -> "attempt to write a readonly database", die Seite
blieb leer. Da collector (Writer) und web (Reader) getrennte Prozesse sind und
der collector keine Dauerverbindung hält, existiert im Ruhezustand kein -shm.

- collector/db.py + schema.sql: WAL entfernt (Rollback-Journal als Default);
  readonly-Reads sind damit jederzeit möglich.
- web/lib/db.ts: busy_timeout=5s, falls gerade geschrieben wird.

Bestehende DB einmalig umstellen: PRAGMA journal_mode=DELETE;

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 15:28:08 +02:00
admin ca708b5dda docs: Test-Abschnitt reparieren + sim_charge.py aufnehmen
- README: leerer Code-Block im Abschnitt "Test ohne Auto" ersetzt durch
  sim_charge.py-Beispiele und die mosquitto_pub-Sequenz.
- collector/sim_charge.py: Test-Skript zum Simulieren einer Ladung über MQTT.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 13:13:41 +02:00
admin 81ef0a82ce fix: Web sieht Collector-Daten; Collector-Robustheit + DB-Pfad im Container
- web/lib/db.ts: pro Request frische readonly-Verbindung statt langlebigem
  Singleton. Eine gecachte WAL-Verbindung bekommt Writes des Collectors über
  den Docker-FUSE-Mount nicht mit -> Seite blieb leer.
- collector.py: connect_async + reconnect_delay_set statt connect(), damit ein
  nicht erreichbarer Broker keinen Container-Crash-Loop auslöst, sondern
  in-process mit Backoff neu versucht wird.
- docker-compose.yml: DB_PATH=/data/charges.db für den collector-Service
  erzwungen, damit ein relatives DB_PATH aus .env (lokaler Lauf) im Container
  nicht neben das gemountete Volume schreibt.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 13:12:12 +02:00
admin 845ef67e6a .gitignore: Python-venv (.venv/, venv/) ausschließen
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 21:23:21 +02:00
admin 7dd3215520 Initial commit: Auto-Charger Logging Web-App
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>
2026-07-03 19:12:04 +02:00