# 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"