Fix surveillance DSLR: detecte perte de connexion et reconnecte

- Teste get_summary() pour verifier que le DSLR repond
- Reconnecte apres 2 echecs consecutifs
- Fallback webcam si DSLR plus disponible

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-08 10:05:20 +02:00
parent cb102c9e4b
commit d719f4c100

View File

@@ -36,17 +36,34 @@ clients_ws: list[WebSocket] = []
capture_en_cours = False
_dslr_erreurs = 0
async def surveiller_dslr():
"""Verifie periodiquement si un DSLR est branche et bascule dessus."""
global _dslr_erreurs
while True:
await asyncio.sleep(10)
await asyncio.sleep(5)
if capture_en_cours:
continue
try:
if camera.mode != "gphoto2" and GPHOTO2_DISPONIBLE:
if GPHOTO2_DISPONIBLE:
dslrs = gp.Camera.autodetect()
if len(dslrs) > 0:
if camera.mode == "gphoto2":
# Verifier que le DSLR repond encore
try:
camera.camera.get_summary()
_dslr_erreurs = 0
except Exception:
_dslr_erreurs += 1
if _dslr_erreurs >= 2:
log.warning("DSLR ne repond plus, reconnexion...")
_dslr_erreurs = 0
camera.deconnecter()
if len(dslrs) > 0:
camera.connecter(source="gphoto2")
else:
camera.connecter() # fallback webcam
elif len(dslrs) > 0:
log.info(f"DSLR detecte : {dslrs[0][0]}, bascule automatique")
camera.connecter(source="gphoto2")
except Exception: