Fix erreur DSLR: detection immediate + message clair a l'ecran
- Backend: detecte quand le preview DSLR echoue (fallback silencieux) et envoie camera_erreur au frontend (debounce 5s) - Frontend: overlay d'erreur avec message si preview DSLR indisponible - Frontend: si capture echoue, affiche le motif 3s avant retour accueil au lieu de retourner silencieusement Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,7 @@ clients_ws: list[WebSocket] = []
|
||||
|
||||
capture_en_cours = False
|
||||
_dslr_erreurs = 0
|
||||
_dernier_envoi_erreur_preview = 0.0 # timestamp du dernier camera_erreur envoye depuis le preview
|
||||
|
||||
async def surveiller_dslr():
|
||||
"""Verifie periodiquement si un DSLR est branche et bascule dessus."""
|
||||
@@ -529,6 +530,8 @@ async def traiter_message_ws(msg: dict, ws: WebSocket):
|
||||
if type_msg == "ping":
|
||||
await ws.send_json({"type": "pong"})
|
||||
elif type_msg == "preview":
|
||||
import time as _time
|
||||
global _dernier_envoi_erreur_preview
|
||||
# Pendant une capture DSLR, utiliser directement la webcam fallback
|
||||
donnees = None
|
||||
if capture_en_cours and camera._preview_webcam_fallback:
|
||||
@@ -541,6 +544,12 @@ async def traiter_message_ws(msg: dict, ws: WebSocket):
|
||||
if donnees:
|
||||
b64 = base64.b64encode(donnees).decode("ascii")
|
||||
await ws.send_json({"type": "preview", "image": f"data:image/jpeg;base64,{b64}"})
|
||||
# Si le DSLR est cense etre connecte mais le preview echoue, signaler l'erreur
|
||||
if camera.mode == "gphoto2" and not camera.preview_dslr_ok:
|
||||
now = _time.monotonic()
|
||||
if now - _dernier_envoi_erreur_preview > 5.0:
|
||||
_dernier_envoi_erreur_preview = now
|
||||
await ws.send_json({"type": "camera_erreur", "message": "Le DSLR ne repond pas au preview"})
|
||||
|
||||
|
||||
async def diffuser_ws(message: dict):
|
||||
|
||||
Reference in New Issue
Block a user