Files

2.6 KiB

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-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:

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.