tuya-ipc-terminal/run.sh aktualisiert
This commit is contained in:
parent
e36af376b5
commit
7c33197953
@ -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
|
||||
# --- 3. CAMERA REFRESH TEST & LOGGING ---
|
||||
bashio::log.info "Schritt 3: Führe 'cameras refresh' aus und fange die GESAMTE Ausgabe ab..."
|
||||
|
||||
# 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)
|
||||
# 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=$?
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user