diff --git a/tuya-ipc-terminal/run.sh b/tuya-ipc-terminal/run.sh index f77f8e1..5c6004d 100644 --- a/tuya-ipc-terminal/run.sh +++ b/tuya-ipc-terminal/run.sh @@ -1,79 +1,52 @@ #!/usr/bin/with-contenv bashio +bashio::log.info "--- START DES DEBUG-SKRIPTS ---" +bashio::log.info "Dieses Skript versucht NICHT, den RTSP-Server zu starten. Es dient nur zur Diagnose." + # Konfiguration lesen readonly TUYA_EMAIL=$(bashio::config 'TUYA_EMAIL') readonly TUYA_PASSWORD=$(bashio::config 'TUYA_PASSWORD') readonly TUYA_REGION=$(bashio::config 'TUYA_REGION') -# Prüfen, ob Konfiguration vorhanden ist -if [[ -z "${TUYA_EMAIL}" || -z "${TUYA_PASSWORD}" ]]; then - bashio::log.fatal "Tuya-E-Mail und Passwort müssen konfiguriert sein." - exit 1 -fi - -# --- START: Authentifizierung und Kamera-Sync --- -bashio::log.info "Authentifizierung bei Tuya..." +# --- 1. AUTHENTIFIZIERUNG --- +bashio::log.info "Schritt 1: Führe Authentifizierung aus..." printf "%s\n%s\n%s\n" "${TUYA_REGION}" "${TUYA_EMAIL}" "${TUYA_PASSWORD}" | /tuya_auth_login.exp +AUTH_EXIT_CODE=$? +bashio::log.info "Authentifizierungs-Skript beendet mit Exit-Code: ${AUTH_EXIT_CODE}" -# --- NEU & WICHTIG: Kamera-Refresh mit Wiederholungslogik --- -bashio::log.info "Synchronisiere Kameraliste mit Tuya-Cloud..." -RETRIES=5 -SUCCESS=false -for i in $(seq 1 $RETRIES); do - bashio::log.info "Versuch ${i}/${RETRIES}, die Kameraliste abzurufen..." - - # Führe den Refresh-Befehl aus und prüfe den Exit-Code - if tuya-ipc-terminal cameras refresh; then - bashio::log.info "Kameraliste erfolgreich synchronisiert." - SUCCESS=true - break # Die Schleife bei Erfolg verlassen - fi - - # Nur wenn der Befehl fehlschlägt, eine Warnung ausgeben und warten - bashio::log.warning "Fehler bei der Synchronisierung der Kameras. Warte 10 Sekunden vor dem nächsten Versuch." - sleep 10 -done - -# Wenn nach allen Versuchen kein Erfolg erzielt wurde, Addon beenden -if [ "$SUCCESS" = false ]; then - bashio::log.fatal "Konnte Kameraliste nach ${RETRIES} Versuchen nicht abrufen. Addon wird beendet." - exit 1 -fi -# --- ENDE NEU & WICHTIG --- - -# Starte den RTSP-Server im Hintergrund -bashio::log.info "Starte den Tuya RTSP-Server im Hintergrund..." -tuya-ipc-terminal rtsp start --port 8554 & -RTSP_PID=$! -sleep 2 # Kurze Pause, um dem Prozess Zeit zum Starten zu geben -bashio::log.info "RTSP-Server gestartet mit PID ${RTSP_PID}." - -# Überprüfe, ob der Prozess wirklich gestartet wurde -if ! ps -p "${RTSP_PID}" > /dev/null; then - bashio::log.fatal "RTSP-Server konnte nicht gestartet werden oder ist sofort abgestürzt. Bitte prüfen Sie das Log." +if [ "${AUTH_EXIT_CODE}" -ne 0 ]; then + bashio::log.fatal "Authentifizierung fehlgeschlagen. Breche Debug-Skript ab." exit 1 fi -# --- Start: Watchdog-Schleife zur Überwachung im Betrieb --- -bashio::log.info "Starte den Watchdog zur Überwachung der Sitzung." -while true; do - sleep 900 # Warte 15 Minuten +# --- 2. LANGE PAUSE --- +bashio::log.info "Schritt 2: Warte 30 Sekunden, um der Tuya-Cloud ausreichend Zeit zur Synchronisierung zu geben." +sleep 30 - # Prüfe zuerst, ob der Server-Prozess noch läuft - if ! ps -p "${RTSP_PID}" > /dev/null; then - bashio::log.error "Watchdog: RTSP-Server-Prozess nicht gefunden! Starte das Addon neu." - exit 1 - fi - - # Wenn der Prozess läuft, prüfe die Sitzung - bashio::log.info "Watchdog: Überprüfe den Status der Tuya-Sitzung..." - RESPONSE=$(tuya-ipc-terminal cameras refresh 2>&1) +# --- 3. CAMERA REFRESH TEST & LOGGING --- +bashio::log.info "Schritt 3: Führe 'cameras refresh' aus und fange die GESAMTE Ausgabe ab..." - if echo "${RESPONSE}" | grep -q -E "401|USER_SESSION_LOSS|Not login"; then - bashio::log.error "Watchdog: Abgelaufene Sitzung erkannt! Starte das Addon neu." - kill "${RTSP_PID}" - exit 1 - else - bashio::log.info "Watchdog: Sitzung ist gültig und RTSP-Server läuft." - fi -done +# Fängt stdout und stderr in eine Variable und gibt sie ins Log aus +REFRESH_OUTPUT=$(tuya-ipc-terminal cameras refresh 2>&1) +REFRESH_EXIT_CODE=$? + +bashio::log.info "-------------------- START DER ROH-AUSGABE VON 'cameras refresh' --------------------" +echo "==================================================================================" +echo "${REFRESH_OUTPUT}" +echo "==================================================================================" +bashio::log.info "-------------------- ENDE DER ROH-AUSGABE VON 'cameras refresh' ---------------------" +bashio::log.warning "'cameras refresh' wurde mit dem Exit-Code beendet: ${REFRESH_EXIT_CODE}" + +if [ "${REFRESH_EXIT_CODE}" -ne 0 ]; then + bashio::log.error "Der 'cameras refresh' Befehl ist fehlgeschlagen. Die obige Ausgabe enthält den Grund." +else + bashio::log.info "Der 'cameras refresh' Befehl war erfolgreich. Überprüfe die Kameraliste..." + # Wenn der Refresh erfolgreich war, versuchen wir, die Kameras aufzulisten + tuya-ipc-terminal cameras list +fi + +bashio::log.info "--- DEBUG-SKRIPT BEENDET ---" +bashio::log.warning "Das Addon wird nun stoppen. Bitte kopieren Sie das gesamte Log aus dem Addon-Tab und senden Sie es mir." + +# Wir beenden mit 'exit 0', um die Crash-Schleife während der Fehlersuche zu unterbrechen. +exit 0