Commit Graph

17 Commits

Author SHA1 Message Date
5545d7d837 README: auf .env.example verweisen + echte Werte entfernen
- 'cp .env.example .env' als empfohlener Einstieg dokumentiert
- Broker-IP/Topic/Kamera-IP aus README und app.py-Default durch
  Platzhalter ersetzt (versehentlich aus lokalem Setup uebernommen)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:54:35 +02:00
9c325dbff3 .env.example mit dokumentierten Platzhaltern hinzugefuegt
Vorlage fuer die lokale .env (alle 16 Env-Variablen erklaert, nur
generische Platzhalter/Defaults). 'cp .env.example .env' zum Start.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:51:36 +02:00
2b930b3e47 MQTT per MQTT_ENABLED ein-/ausschaltbar (einsteigerfreundlich)
- MQTT_ENABLED=false -> App startet ohne Broker, keine Events/LWT
- publish_crossing wird zum No-Op, kein Reconnect-Rauschen
- README: optional gekennzeichnet, Env-Tabelle + .env-Beispiel ergaenzt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:49:18 +02:00
b20f4c582c Zaehllinie persistent speichern (ueberlebt Neustart)
- Linie wird beim Setzen atomar in counting_line.json gespeichert
- beim Start geladen -> Default fuer Session UND Webcam-Grabber
- Pfad per LINE_FILE-Env ueberschreibbar, Datei via .gitignore ausgeschlossen
- set_line-Route nutzt jetzt _valid_line (weniger Doppelcode)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:41:29 +02:00
394c72d6d9 MQTT: Birth-Message + Last Will auf {MQTT_TOPIC}/status
- "online" (retained) beim (Re-)Connect via on_connect-Callback
- "offline" automatisch durch Broker bei Verbindungsabbruch (LWT)
- Abnehmer (n8n / Home Assistant) sehen jederzeit den Live-Zustand
- README um Status-/Availability-Topic ergaenzt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:37:32 +02:00
d593f9e8af Fix: .env wird automatisch geladen (MQTT-Events kamen nicht an)
Ohne 'source .env' liefen Broker/Topic auf Defaults (127.0.0.1 statt
192.168.10.7, vehiclecounter/cam1 statt counter/cam1) -> keine Events.
Jetzt laedt app.py die .env per python-dotenv beim Start.

- load_dotenv() vor dem Auslesen von os.environ
- README: .env-Konfig + supervisord-Hinweis (directory=), python-dotenv

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:35:13 +02:00
bde547368d Modelle nicht mehr versionieren (Ultralytics laedt sie automatisch)
- yolo11s.pt aus Tracking entfernt, .gitignore auf *.pt erweitert
- README: Modelle werden beim ersten Start autom. geladen statt manuell

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:28:00 +02:00
b447d3e7c5 README: Voraussetzungen aktualisiert (CUDA-GPU, ESP32-CAM, MQTT)
- NVIDIA-GPU mit CUDA als Voraussetzung dokumentiert (FP16, CPU-Fallback)
- ESP32-CAM als MJPEG-Live-Quelle inkl. CAMERA_URL/Fan-out/Always-on
- MQTT-Broker fuer Crossing-Events (Topic, Payload, Env-Konfig)
- Installation um CUDA-PyTorch, requests und paho-mqtt ergaenzt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:16:54 +02:00
c09fd8948b Vehicle-Counter: MQTT-Crossing-Events, Motion-Gating & ESP32-Cam
- Linienueberquerungen werden als MQTT-Event publiziert (fuer n8n -> NocoDB)
- Motion-Gate: YOLO laeuft nur bei Bewegung -> weniger CPU-Last
- Always-on-Grabber (24/7-Zaehlung unabhaengig von Zuschauern)
- Konfigurierbare Inferenz per Env (Modell, imgsz, FP16, Kamera-URL)
- .gitignore ergaenzt (.env, uploads/, Modelle, __pycache__)
- Aufraeumen: alte app2/app3/app4/sudo-Dateien entfernt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:09:04 +02:00
fd1de272a6 new apps 2026-06-01 10:52:47 +02:00
b28d8965d5 Verbessere Streaming-Sicherheit 2025-12-14 12:02:58 +00:00
c8f49e41f9 YouTube-Demo-Video im README eingebettet
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-09 15:06:03 +00:00
12bc94a28a Fix: Zähllinie wird nicht mehr als Objekt erkannt
Problem: YOLO hat die gelbe Zähllinie als "Zahnbürste" erkannt
Lösung: Zähllinie wird jetzt NACH der YOLO-Erkennung gezeichnet

Änderungen:
- YOLO-Erkennung läuft auf dem Original-Frame
- Zähllinie wird erst danach als Overlay gezeichnet
- Linie ist jetzt etwas dicker (3px statt 2px) für bessere Sichtbarkeit

Resultat: Keine falschen Objekterkennungen mehr durch die Zähllinie

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-08 18:55:08 +00:00
87a6060a1a Verbesserte Debug-Visualisierung für Linienschnitt
Neue Debug-Features:
- Orange Bewegungslinien zeigen die Trajektorie jedes Fahrzeugs
- Größerer grüner Kreis (25px) beim Zählen für bessere Sichtbarkeit
- crossed_line() Helper-Funktion für bessere Code-Lesbarkeit

Hilft beim Debuggen:
- Bewegungslinien zeigen ob Fahrzeug sich bewegt
- Sichtbar ob Bewegungslinie die Zähllinie kreuzt
- Bestätigt visuell dass Tracking funktioniert

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-08 16:09:26 +00:00
dcb171f093 Debug-Visualisierung für Fahrzeugzählung hinzugefügt
Neue visuelle Features:
- Gelber Punkt am Zentrum jeder Bounding Box
- Grüner Kreis erscheint beim Zählen eines Fahrzeugs
- "✓" wird zum Label hinzugefügt wenn Fahrzeug gezählt wurde
- Grüne Boxen für zählbare Fahrzeuge, blaue für andere Objekte

Hilft beim Debuggen:
- Zeigt visuell welche Fahrzeuge bereits gezählt wurden
- Macht den Zenterpunkt sichtbar für Line-Intersection
- Bestätigt visuell erfolgreiche Zählung

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-08 15:49:48 +00:00
9145872ef1 Fix: Session-Zugriff außerhalb des Request-Kontexts behoben
Problem: RuntimeError beim Zugriff auf session in Generator-Funktionen
Lösung:
- Liniendaten werden vor dem Generator aus der Session gelesen
- Als Parameter an detect_objects_from_webcam() übergeben
- Als Parameter an detect_objects_from_video() übergeben
- Reset-Button lädt jetzt die Seite neu (mit Bestätigungsdialog)

Technische Details:
- Generator-Funktionen haben keinen Request-Kontext
- Session-Werte müssen vor Generator-Start erfasst werden
- Counter-Reset funktioniert durch Seiten-Reload

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-08 14:48:09 +00:00
504f8c0b69 Implementiere Fahrzeugzählung mit Linienüberquerung
- Linienschnitt-Algorithmus für präzise Fahrzeugzählung
- Interaktive Linienauswahl im Browser (Canvas-basiert)
- Session-Management für benutzerdefinierte Zähllinien
- Typ-spezifische Zähler (Autos, LKW, Busse, Motorräder)
- REST-API für Linienkonfiguration und Zähler-Reset
- Gestrichelte Zähllinie als Video-Overlay
- Detailliertes Zähler-Display im Video

Features:
- Linienüberquerung-Erkennung (beide Richtungen)
- Keine Mehrfachzählung durch Track-ID-Management
- Funktioniert für Webcam und Video-Upload
- Benutzerfreundliche UI mit Echtzeit-Feedback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-08 14:42:46 +00:00