# 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
