From d719f4c100dad0c5b518636b8a19037adbfaf391 Mon Sep 17 00:00:00 2001 From: Jules Date: Wed, 8 Apr 2026 10:05:20 +0200 Subject: [PATCH] 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) --- backend/main.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/backend/main.py b/backend/main.py index 741584f..b8807db 100644 --- a/backend/main.py +++ b/backend/main.py @@ -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: