esp32-claude-robbie/python_bridge/config.yaml

150 lines
5.0 KiB
YAML

# Claude's Eyes - Audio Bridge Konfiguration v2
#
# NEUE ARCHITEKTUR:
# - Claude (im Browser-Chat) steuert den Roboter SELBST via web_fetch
# - Diese Bridge macht NUR Audio (TTS/STT) und Heartbeat
#
# Kopiere zu config.local.yaml und passe an!
# ============================================================================
# Chat Interface (Selenium Browser)
# ============================================================================
chat:
# Die URL zu deinem Claude.ai Chat
# WICHTIG: Das muss die URL eines bestehenden Chats sein!
# Beispiel: https://claude.ai/chat/abc123-def456-...
url: "https://claude.ai/chat/21ac7549-1009-44cc-a143-3e4bd3c64b2d"
# Browser im Hintergrund? (false = du siehst das Fenster)
headless: false
# Chrome Profil-Ordner für persistente Sessions
# Wenn gesetzt, bleibt der Login gespeichert
user_data_dir: "./chrome_profile"
# Für Termux/Android: Pfad zur Chrome/Chromium Binary
# chrome_binary: "/data/data/com.termux/files/usr/bin/chromium"
# ============================================================================
# Heartbeat - Hält Claude am Leben
# ============================================================================
heartbeat:
# Automatische TICKs aktivieren?
# false = keine automatischen TICKs, du sendest [TICK] manuell im Chat (Debug-Modus)
# true = normale Funktion, TICKs werden automatisch gesendet
auto_tick: true
# Bilder mit TICKs hochladen?
# true = Bei jedem TICK wird ein Bild vom ESP32 geholt und in den Chat hochgeladen
# false = Nur [TICK] ohne Bild (für Debug ohne ESP32)
upload_images: true
# Ablauf: Warten bis Claude fertig → zufällige Pause → Bild holen → TICK senden
# So werden keine TICKs gesendet während Claude noch tippt!
# Pause nach Claudes Antwort (zufällig zwischen min und max)
min_pause: 2
max_pause: 4
# Wie oft prüfen ob Claude noch tippt (Sekunden)
check_interval: 1
# Nach wie vielen Fehlern in Folge stoppen?
max_consecutive_errors: 5
# Automatisch neuen Chat starten wenn Bilder-Limit erreicht?
# true = Bei 90+ Bildern automatisch neuen Chat starten
# false = Nur Warnung anzeigen, manuell mit 'N' neuen Chat starten
auto_new_chat: true
# Ab wie vielen Bildern neuen Chat starten (nur wenn auto_new_chat: true)
auto_new_chat_threshold: 90
# ============================================================================
# Text-to-Speech (Claudes Stimme)
# ============================================================================
tts:
# Engine: "pyttsx3" (offline) oder "gtts" (Google, online)
engine: "gtts"
# Sprache
language: "de"
# Sprechgeschwindigkeit (nur pyttsx3: Wörter pro Minute, 100-200)
rate: 150
# Lautstärke (nur pyttsx3)
volume: 0.9
# Stimme (nur pyttsx3) - null = System-Default
# Beispiel: "german" oder "de" für deutsche Stimme
voice: null
# ============================================================================
# Speech-to-Text (Stefans Mikrofon)
# ============================================================================
stt:
# Engine: "standard" (SpeechRecognition)
engine: "standard"
# Erkennungsdienst (nur für standard engine)
# "google" (online, gut) oder "sphinx" (offline, mäßig)
service: "google"
# Sprache
language: "de-DE"
# Energie-Schwelle für Spracherkennung
# Niedriger = empfindlicher (300 ist Standard)
energy_threshold: 300
# Pause-Schwelle in Sekunden
# Wie lange Stille bevor ein Satz als beendet gilt
pause_threshold: 0.8
# Maximale Aufnahmelänge pro Phrase in Sekunden
# Bei langen Sätzen höher setzen (max 2 Minuten = 120s)
phrase_time_limit: 120
# ============================================================================
# ESP32 Roboter (Referenz für Claude's web_fetch Aufrufe)
# ============================================================================
# HINWEIS: Diese Werte nutzt CLAUDE direkt im Chat, nicht die Bridge!
# Du musst Claude die URL und den API-Key im Chat mitteilen.
esp32:
# IP-Adresse oder Hostname des Roboters
host: "mobil.hacker-net.de"
port: 80
# API-Key für Authentifizierung
api_key: "claudes_eyes_secret_2025"
# Für Zugriff von außen: DynDNS, Tailscale, oder Port-Forward nötig
# external_url: "https://mein-roboter.dyndns.org"
# ============================================================================
# Mock ESP32 Server (für Tests ohne echte Hardware)
# ============================================================================
mock:
# Echte USB-Webcam nutzen statt Testbilder?
# true = Bilder von angeschlossener Webcam (benötigt opencv-python)
# false = Bilder aus ./test_images/ Ordner
use_real_webcam: false
# Webcam-Gerätenummer (0 = erste Webcam, 1 = zweite, etc.)
webcam_device: 0
# Webcam-Auflösung
webcam_width: 640
webcam_height: 480
# ============================================================================
# Logging
# ============================================================================
logging:
# Level: DEBUG, INFO, WARNING, ERROR
level: "INFO"
# Log-Datei (relativ zum Script-Verzeichnis)
file: "bridge.log"