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

📸 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.:
{"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