Commit Graph

11 Commits

Author SHA1 Message Date
Julian Vollmer fa9888f83e Reduce audio stream latency
- fflags nobuffer + flags low_delay: ffmpeg Input-Buffer deaktiviert
- frame_duration 20ms + page_duration 20ms: kleinste Ogg-Pages
- flush_packets 1: sofortiges Schreiben nach jedem Frame
- HTTP Header no-cache + X-Accel-Buffering no: kein Proxy/Flask-Buffering

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:19:34 +02:00
Julian Vollmer a53eceb83a Add audio streaming via USB microphone
- Neuer Endpunkt GET /audio: ffmpeg liest von plughw:2,0 (USB-Soundkarte CM108)
  und streamt Ogg/Opus mit 16kHz Mono 24kbps
- live.html: Ton-Button (🔇/🔊) startet/stoppt Audio-Stream on demand
- setup.sh: ffmpeg installieren, pi zur audio-Gruppe hinzufügen
- pi zur audio-Gruppe hinzugefügt (war nötig für /dev/snd Zugriff)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:15:21 +02:00
Julian Vollmer 73faa66535 Support 3 parallel stream clients via CameraBroadcaster
Vorher: pro Client ein eigener rpicam-vid-Prozess → 2. und 3. Client schlagen fehl.
Jetzt: CameraBroadcaster startet rpicam-vid einmal in einem Hintergrund-Thread,
alle Clients lesen denselben aktuellen Frame. Flask läuft mit threaded=True.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 16:54:15 +02:00
Julian Vollmer 6f0aa41f9e Fix camera access: add pi to video group
rpicam benötigt Zugriff auf /dev/dma_heap/ (crw-rw---- root:video).
pi war nicht in der video-Gruppe → usermod -aG video pi in setup.sh ergänzt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 16:45:52 +02:00
Julian Vollmer 30180e5923 Persist AP override across reboots
/tmp/babycam-ap-override → /var/lib/babycam/ap-override
setup.sh legt /var/lib/babycam mit chown pi:pi an

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 15:58:14 +02:00
Julian Vollmer 7cfc958cf0 Add manual AP mode override via web UI
- State Machine prüft /tmp/babycam-ap-override: 'on'/'off' = manuell, fehlt = Automatik
- Neue API-Endpunkte: POST /ap/on, /ap/off, /ap/auto
- Access-Point-Karte zeigt jetzt 3 Buttons (An / Aus / Auto) + aktuellen Modus
- Manuell überschreibt die Automatik, Auto gibt Kontrolle zurück an die State Machine

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 15:54:53 +02:00
Julian Vollmer d9514e23d7 Add fullscreen live view at /live
- Schwarzer Hintergrund, Stream füllt den ganzen Bildschirm (object-fit: cover)
- Overlay mit Uhrzeit und Einstellungs-Link erscheint bei Tap/Klick, blendet sich nach 3s aus
- Vollbild-Button nutzt Fullscreen API
- Auf Handys wird automatisch Landscape angefragt
- Stream-Box auf Hauptseite ist jetzt klickbar und verlinkt auf /live

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 15:49:33 +02:00
Julian Vollmer 496215c61a babycam initial 2026-05-18 15:47:02 +02:00
Julian Vollmer ef858f9040 Add complete babycam setup: install script, Flask app, state machine, configs
- setup.sh: vollständiges Install- und Konfigurationsscript für Raspberry Pi OS Trixie
- app/main.py: Flask Webinterface mit MJPEG-Stream, WLAN-Verwaltung und Statusseite
- app/templates/index.html: Dark-Mode UI mit Live-Stream, WLAN-Scan und Verbinden
- scripts/network_state.py: State Machine für Modus A (Heimnetz) / B (Access Point)
- config/hostapd.conf: Access Point BabyCam (192.168.50.0/24)
- config/dnsmasq.conf: DHCP-Server für AP-Netzwerk
- systemd/: babycam-web und babycam-network als autostart Services
- README.md: Schnellstart-Anleitung und Projektstruktur ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 14:38:26 +02:00
Julian 476922f440 README.md aktualisiert 2026-05-18 07:02:25 +00:00
Julian Vollmer d6f3b92eeb add readme 2026-05-18 08:59:51 +02:00