# Home-Bro Brain (The Brain) 🧠 Das Gehirn des Home-Bro Projekts. Diese zentrale API ist für die Bildanalyse mittels YOLOv11 und die Generierung sarkastischer Kommentare zuständig. ## 🚀 Übersicht Home-Bro Brain empfängt Bilder von Satelliten (Raspberry Pi, Tapo-Kameras, ESP32), analysiert diese auf Unordnung (Tassen, Flaschen, etc.) und gibt daraufhin einen passiv-aggressiven Kommentar zurück. ## 🛠 Tech-Stack - **FastAPI**: Für die Bereitstellung der API. - **YOLOv11 (Ultralytics)**: Für die Objekterkennung. - **OpenCV**: Zur Verarbeitung von Kamera-Streams. - **Docker**: Optional für das Deployment in einem Container. --- ## 💻 Lokale Installation (Mac/PC) Folge diesen Schritten, um das Brain lokal auf deinem Rechner zu testen: ### 1. Repository klonen ```bash git clone git@git.hnrx.net:homelab/home-bro-brain.git cd home-bro-brain ``` ### 2. Virtuelle Umgebung erstellen & aktivieren ```bash python3 -m venv venv source venv/bin/activate ``` ### 3. Abhängigkeiten installieren ```bash pip install -r requirements.txt ``` ### 4. Konfiguration Erstelle eine `.env` Datei (nutze `.env.example` als Vorlage): ```bash cp .env.example .env ``` Füge deine Zugangsdaten für ggf. vorhandene Tapo-Kameras hinzu: - `TAPO_USER`: Dein Kamera-Benutzername - `TAPO_PASSWORD`: Dein Kamera-Passwort ### 5. Modell herunterladen Das YOLO-Modell (`yolo11n.pt`) wird beim ersten Start automatisch heruntergeladen und im Ordner `models/` abgelegt. --- ## 🏃‍♂️ Ausführung Starte den Server lokal: ```bash uvicorn app.main:app --host 0.0.0.0 --reload --reload-dir app ``` Das Brain ist nun unter `http://localhost:8000` erreichbar. ### Lokaler Test via Swagger UI Du kannst die API direkt im Browser testen. Öffne dazu: `http://localhost:8000/docs` Dort kannst du den Endpunkt `/analyze/pi` nutzen, um manuell ein Foto hochzuladen und die Reaktion des Home-Bro zu sehen. --- ## 🐳 Docker Deployment (Optional) Wenn du das Brain dauerhaft (z.B. auf einem Server) betreiben willst: ```bash docker-compose up -d --build ``` --- ## 📡 API Endpunkte | Methode | Endpunkt | Beschreibung | | :------ | :--------------------- | :--------------------------------------------- | | `GET` | `/` | Zeigt das Web-Dashboard an. | | `GET` | `/api/latest` | Gibt den letzten Analysestatus zurück. | | `POST` | `/analyze/pi` | Empfängt ein Bild von einem Pi-Satelliten. | | `GET` | `/analyze/tapo/{room}` | Triggert eine Analyse eines Tapo RTSP-Streams. |