#!/usr/bin/with-contenv bashio # Konfiguration lesen readonly TUYA_EMAIL=$(bashio::config 'TUYA_EMAIL') readonly TUYA_PASSWORD=$(bashio::config 'TUYA_PASSWORD') readonly TUYA_REGION=$(bashio::config 'TUYA_REGION') 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..." printf "%s\n%s\n%s\n" "${TUYA_REGION}" "${TUYA_EMAIL}" "${TUYA_PASSWORD}" | /tuya_auth_login.exp 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..." if tuya-ipc-terminal cameras refresh; then bashio::log.info "Kameraliste erfolgreich synchronisiert." SUCCESS=true break fi bashio::log.warning "Fehler bei der Synchronisierung der Kameras. Warte 10 Sekunden." sleep 10 done if [ "$SUCCESS" = false ]; then bashio::log.fatal "Konnte Kameraliste nach ${RETRIES} Versuchen nicht abrufen. Addon wird beendet." exit 1 fi # --- Starte den RTSP-Server und den Watchdog --- bashio::log.info "Starte den Tuya RTSP-Server im Hintergrund..." tuya-ipc-terminal rtsp start --port 8554 & RTSP_PID=$! sleep 2 bashio::log.info "RTSP-Server gestartet mit PID ${RTSP_PID}." # --- KORRIGIERTE PRÜFUNG (OHNE 'ps') --- if [ ! -d "/proc/${RTSP_PID}" ]; then bashio::log.fatal "RTSP-Server konnte nicht gestartet werden oder ist sofort abgestürzt." exit 1 fi bashio::log.info "Starte den Watchdog zur Überwachung der Sitzung." while true; do sleep 900 # --- KORRIGIERTE PRÜFUNG (OHNE 'ps') --- if [ ! -d "/proc/${RTSP_PID}" ]; then bashio::log.error "Watchdog: RTSP-Server-Prozess nicht gefunden! Starte das Addon neu." exit 1 fi bashio::log.info "Watchdog: Überprüfe den Status der Tuya-Sitzung..." RESPONSE=$(tuya-ipc-terminal cameras refresh 2>&1) 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