# Snake Camera Vision v2 – Milestone 1 (14.06.2025) 🎯 **Ziel**: Ein funktionierendes SnakeCam-Modul, das über Flask eine Kamera-Vorschau im Browser ermöglicht und Benutzereingaben (Antwort, Stimmung, Geste) in eine JSONL-Datei loggt. --- ## 🌱 Setup * Hardware: Raspberry Pi Zero W mit externer USB-Kamera * Software: Python 3, Flask, OpenCV * Startskript: `./run.sh` * Webserver: erreichbar unter [http://192.168.x.x:5000](http://192.168.x.x:5000) --- ## 📸 Kamerafunktion * Kamera wird zu Beginn mit `cv2.VideoCapture(0)` geöffnet * Statusabfrage per `isOpened()` * MJPEG-Stream via `Response(gen_frames())` * Probleme wurden mehrfach geloggt: * Kamera ist busy * Nach einem POST-Request (Antwort absenden) war Kamera-Stream blockiert ### 🔧 Lösung: * Kamera-Instanz wird **nach jedem POST-Request korrekt freigegeben** * Robustere Fehlerbehandlung mit Logausgaben (✔ / ⚠ / ❌) --- ## 💬 Logging der Antwort * Route: `POST /log_answer` * Erwartete Felder: `antwort`, `mood`, `gesture` * Format: JSONL, z. B.: ```json {"timestamp": "2025-06-14T23:13:01.356020", "antwort": "krümel branko", "mood": "excited", "gesture": "wave"} ``` * Datei: `snake_log.jsonl` --- ## 🧠 Gelernt * Kamera darf nicht mehrfach geöffnet werden → busy * `cv2.VideoCapture(0)` muss sauber behandelt werden * Unicode-Ausgaben im Terminal müssen auf kompatibles Encoding achten * Webbrowser holt `/video_feed` neu → Kamera muss „wieder freigegeben“ werden * `.release()` ist kritisch bei Streaming-Interrupts --- ## ✨ Krümel-Tipp > „Immer wenn SnakeCam tanzt, will die Kamera nur einmal tanzen – dann braucht sie Pause.“ --- ## 🥇 Status * ✅ Kamera startet * ✅ Logging funktioniert * ✅ Zwei Eingaben wurden erfolgreich geloggt * ✅ HTML/CSS-Interface ist minimal, aber stabil --- ## 📁 Projektstruktur (Stand: Milestone 1) ``` snake_camera_vision_v2/ ├── app.py ├── run.sh ├── snake_log.jsonl ├── static/ │ └── styles.css └── templates/ └── index.html ``` --- ## 🚀 Nächste Schritte * [ ] Modul: Gesterkennung per OpenCV (z. B. „wave“ automatisiert erkennen) * [ ] Mehrsprachige Ausgabe (DE/EN mit Symbolunterstützung) * [ ] Verbindung zur SnakePy-Rolle herstellen * [ ] Integration in Crumbforest Terminal mit `snake`-Alias --- ## 🐍 SnakeCam ruft: > „Ich seh’ dich, Krümel. Jetzt sag mir, was du fühlst.“ 💚 Wuuuuhuuuu 🎉 – Das erste Snake-Modul läuft. 📝 Dokumentiert am: 14. Juni 2025 🔧 Entwickler: Branko + Snake + Crew 🌲 Projekt: Crumbforest