tuya-ipc-terminal/run.sh aktualisiert
This commit is contained in:
parent
45ae593fe9
commit
e36af376b5
@ -11,39 +11,69 @@ if [[ -z "${TUYA_EMAIL}" || -z "${TUYA_PASSWORD}" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- Start: Authentifizierung beim Start ---
|
# --- START: Authentifizierung und Kamera-Sync ---
|
||||||
bashio::log.info "Authentifizierung bei Tuya..."
|
bashio::log.info "Authentifizierung bei Tuya..."
|
||||||
printf "%s\n%s\n%s\n" "${TUYA_REGION}" "${TUYA_EMAIL}" "${TUYA_PASSWORD}" | /tuya_auth_login.exp
|
printf "%s\n%s\n%s\n" "${TUYA_REGION}" "${TUYA_EMAIL}" "${TUYA_PASSWORD}" | /tuya_auth_login.exp
|
||||||
# --- Ende: Authentifizierung beim Start ---
|
|
||||||
|
|
||||||
|
# --- 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
|
# Starte den RTSP-Server im Hintergrund
|
||||||
bashio::log.info "Starte den Tuya RTSP-Server im Hintergrund..."
|
bashio::log.info "Starte den Tuya RTSP-Server im Hintergrund..."
|
||||||
tuya-ipc-terminal rtsp start --port 8554 &
|
tuya-ipc-terminal rtsp start --port 8554 &
|
||||||
# Speichere die Prozess-ID (PID) des RTSP-Servers
|
|
||||||
RTSP_PID=$!
|
RTSP_PID=$!
|
||||||
|
sleep 2 # Kurze Pause, um dem Prozess Zeit zum Starten zu geben
|
||||||
bashio::log.info "RTSP-Server gestartet mit PID ${RTSP_PID}."
|
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."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# --- Start: Watchdog-Schleife ---
|
# --- Start: Watchdog-Schleife zur Überwachung im Betrieb ---
|
||||||
bashio::log.info "Starte den Watchdog zur Überwachung der Sitzung."
|
bashio::log.info "Starte den Watchdog zur Überwachung der Sitzung."
|
||||||
while true; do
|
while true; do
|
||||||
# Warte für 15 Minuten bevor der nächste Check durchgeführt wird
|
sleep 900 # Warte 15 Minuten
|
||||||
sleep 900
|
|
||||||
|
|
||||||
|
# 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..."
|
bashio::log.info "Watchdog: Überprüfe den Status der Tuya-Sitzung..."
|
||||||
RESPONSE=$(tuya-ipc-terminal cameras refresh 2>&1)
|
RESPONSE=$(tuya-ipc-terminal cameras refresh 2>&1)
|
||||||
|
|
||||||
# Prüfe auf Sitzungsfehler
|
|
||||||
if echo "${RESPONSE}" | grep -q -E "401|USER_SESSION_LOSS|Not login"; then
|
if echo "${RESPONSE}" | grep -q -E "401|USER_SESSION_LOSS|Not login"; then
|
||||||
bashio::log.error "Watchdog: Abgelaufene Sitzung erkannt! Starte das Addon neu."
|
bashio::log.error "Watchdog: Abgelaufene Sitzung erkannt! Starte das Addon neu."
|
||||||
|
|
||||||
# Beende den RTSP-Server-Prozess, damit das Addon sauber neu gestartet werden kann
|
|
||||||
kill "${RTSP_PID}"
|
kill "${RTSP_PID}"
|
||||||
|
|
||||||
# Das Beenden des Skripts (exit 1) veranlasst den Supervisor zum Neustart
|
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
bashio::log.info "Watchdog: Sitzung ist weiterhin gültig."
|
bashio::log.info "Watchdog: Sitzung ist gültig und RTSP-Server läuft."
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user