tts loop fix

This commit is contained in:
duffyduck 2025-12-29 00:54:34 +01:00
parent 4e394888b0
commit d43c60aef2
2 changed files with 15 additions and 3 deletions

View File

@ -553,7 +553,8 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
# Warte auf [READY] - KEIN Timeout-Fallback! # Warte auf [READY] - KEIN Timeout-Fallback!
# Heartbeat startet NUR wenn Claude wirklich [READY] sendet # Heartbeat startet NUR wenn Claude wirklich [READY] sendet
if self.chat.wait_for_ready_signal(timeout=300): # 5 Minuten max # stop_check prüft ob Q gedrückt wurde (self.running = False)
if self.chat.wait_for_ready_signal(timeout=300, stop_check=lambda: not self.running): # 5 Minuten max
# ════════════════════════════════════════════════════════════════ # ════════════════════════════════════════════════════════════════
# Chat-ID ermitteln und gespeicherten TTS-State laden # Chat-ID ermitteln und gespeicherten TTS-State laden
# ════════════════════════════════════════════════════════════════ # ════════════════════════════════════════════════════════════════

View File

@ -997,7 +997,7 @@ class ClaudeChatInterface:
logger.debug(f"Fehler bei typing-check: {e}") logger.debug(f"Fehler bei typing-check: {e}")
return False return False
def wait_for_ready_signal(self, timeout: int = 120) -> bool: def wait_for_ready_signal(self, timeout: int = 120, stop_check: callable = None) -> bool:
""" """
Wartet bis Claude [READY] sendet. Wartet bis Claude [READY] sendet.
@ -1006,9 +1006,11 @@ class ClaudeChatInterface:
Args: Args:
timeout: Maximale Wartezeit in Sekunden timeout: Maximale Wartezeit in Sekunden
stop_check: Optionale Funktion die True zurückgibt wenn abgebrochen werden soll
(z.B. lambda: not bridge.running)
Returns: Returns:
True wenn [READY] empfangen, False bei Timeout True wenn [READY] empfangen, False bei Timeout oder Abbruch
""" """
logger.info(f"Warte auf [READY] Signal in letzter Claude-Nachricht (max {timeout}s)...") logger.info(f"Warte auf [READY] Signal in letzter Claude-Nachricht (max {timeout}s)...")
start_time = time.time() start_time = time.time()
@ -1018,10 +1020,19 @@ class ClaudeChatInterface:
logger.debug(f"Initiale Claude-Nachrichten: {initial_count}") logger.debug(f"Initiale Claude-Nachrichten: {initial_count}")
while time.time() - start_time < timeout: while time.time() - start_time < timeout:
# Prüfe ob abgebrochen werden soll (z.B. Q gedrückt)
if stop_check and stop_check():
logger.info("wait_for_ready abgebrochen (stop_check)")
return False
# Warte bis Claude fertig ist mit Tippen # Warte bis Claude fertig ist mit Tippen
typing_wait_start = time.time() typing_wait_start = time.time()
while self.is_claude_typing(): while self.is_claude_typing():
time.sleep(0.5) time.sleep(0.5)
# Prüfe auch hier auf Abbruch
if stop_check and stop_check():
logger.info("wait_for_ready abgebrochen während typing-wait")
return False
# Timeout für typing-wait (max 60s) # Timeout für typing-wait (max 60s)
if time.time() - typing_wait_start > 60: if time.time() - typing_wait_start > 60:
logger.debug("Typing-Wait Timeout, prüfe trotzdem...") logger.debug("Typing-Wait Timeout, prüfe trotzdem...")