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
git clone git@git.hnrx.net:homelab/home-bro-brain.git
cd home-bro-brain
2. Virtuelle Umgebung erstellen & aktivieren
python3 -m venv venv
source venv/bin/activate
3. Abhängigkeiten installieren
pip install -r requirements.txt
4. Konfiguration
Erstelle eine .env Datei (nutze .env.example als Vorlage):
cp .env.example .env
Füge deine Zugangsdaten für ggf. vorhandene Tapo-Kameras hinzu:
TAPO_USER: Dein Kamera-BenutzernameTAPO_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:
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:
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. |