tts loop fix
This commit is contained in:
parent
4e394888b0
commit
d43c60aef2
|
|
@ -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
|
||||||
# ════════════════════════════════════════════════════════════════
|
# ════════════════════════════════════════════════════════════════
|
||||||
|
|
|
||||||
|
|
@ -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...")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue