Commit Graph

11 Commits

Author SHA1 Message Date
f9ce2e2dc1 Webcam: Zaehler-Box im "LIVE COUNT"-Design (farbige Icons + Total)
Reines Restyling der bestehenden verschiebbaren HTML-Box: dunkles Panel,
LIVE-COUNT-Header, farbige Fahrzeug-Icons (SVG) + farbige Zahlen, TOTAL-
Zeile. Gleiche /api/counts-Daten, gleiche IDs, gleiches Drag/Polling.
Keine Aenderung an der Video-Pipeline -> kein Performance-Einfluss.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 17:40:57 +02:00
7a522f8927 Webcam: Zaehler-Box als verschiebbares HTML-Overlay (per Maus)
Statt ins Bild gebrannt ist der Zaehler jetzt ein HTML-Overlay, das frei
mit der Maus positioniert werden kann; Position wird in localStorage
gemerkt. Werte kommen ueber /api/counts (Live-Polling).

- draw_overlay/render_static/process_frame: draw_counter-Flag
  (Webcam laesst Box weg, Video-Upload behaelt sie eingebrannt)
- Grabber-State auf self.state -> /api/counts liest live mit
- Drag-Logik + Counts-Polling im Frontend

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 17:15:54 +02:00
07c0e44cd8 Webcam: Buttons fuer Kamera-Aufloesung (VGA/SVGA)
Schaltet die ESP32-CAM-Aufloesung per Button um (VGA 640x480 = mehr FPS,
SVGA 800x600 = mehr Detail). Server proxyt den /control-Aufruf an die
Kamera (Host automatisch aus CAMERA_URL, Port 80).

- /api/cam_framesize (Whitelist 10=VGA, 11=SVGA)
- zwei Buttons + Status-Feedback im Frontend

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 17:09:46 +02:00
85747d7a42 Webcam: Button zum Freigeben/Uebernehmen der Kamera (ESP32-Slot)
Trotz GRABBER_ALWAYS_ON=1 kann der ESP32-Slot per Button manuell
freigegeben werden (z.B. um die Cam woanders direkt zu oeffnen).
Freigegeben = Slot frei + Zaehlung pausiert; uebernehmen = wieder zaehlen.

- Grabber: paused-Flag, hat Vorrang vor ALWAYS_ON/Karenzzeit
- /api/grabber_toggle + paused-Feld in /api/webcam_status
- Button + eigener Overlay-Text ("Kamera freigegeben") im Frontend

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 10:59:25 +02:00
264b2b3e3b Fix: Offline-Erkennung loeste Reconnect-Resets aus (Zaehlung gestoert)
Bei GRABBER_ALWAYS_ON=0 kappte kurzes Zuschauer-Aus (<img>-Reload der
Auto-Recovery) die Kameraverbindung -> Reconnect -> Tracker/Zaehlzustand
wurde zurueckgesetzt. Bei ~1 FPS riss das die Zaehlung auseinander.

- Grabber: Karenzzeit (VIEWER_GRACE_SEC, Default 15s) bevor die Kamera
  bei fehlenden Zuschauern freigegeben wird -> kein Reconnect-Churn
- Frontend: Overlay/Reload erst nach ~6s echtem Ausfall (3 Polls),
  nicht bei einzelnen langsamen Frames -> kein Verbindungs-Churn

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 10:53:46 +02:00
d7e1b17a60 Webcam: "Kamera offline"-Overlay + Auto-Recovery des Streams
ESP32-CAM haengt sich gelegentlich auf -> Bild blieb leer ohne Hinweis.

- Grabber merkt sich last_frame_ts; /api/webcam_status liefert online-Flag
  (online = letzter Frame < 5s her)
- webcam.html pollt alle 2s und blendet ein Offline-Overlay ein
- Auto-Recovery: kommt die Kamera zurueck, wird der MJPEG-Stream neu
  angestossen (<img> reconnectet sonst nach Abbruch nicht von selbst)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 19:54:04 +02:00
b8298e584f Dark Mode fuer alle Seiten (Toggle + System-Default)
- CSS-Variablen fuer Hell/Dunkel, Umschalter (🌙/☀️) oben rechts
- Default folgt prefers-color-scheme, Wahl wird in localStorage gemerkt
- Theme wird vor dem Rendern gesetzt -> kein Flackern
- index, webcam und play_video konsistent

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 19:44:49 +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
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