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: