From 5de771b9f9d2ec7d536533399c9d8247d34b27b2 Mon Sep 17 00:00:00 2001 From: Jules Date: Wed, 8 Apr 2026 10:07:09 +0200 Subject: [PATCH] Erreur camera: overlay plein ecran + pas de fallback webcam Page splash au boot pour eviter l'erreur Firefox Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/main.py | 8 ++++++-- frontend/css/style.css | 33 +++++++++++++++++++++++++++++++++ frontend/index.html | 7 +++++++ frontend/js/app.js | 9 +++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) diff --git a/backend/main.py b/backend/main.py index b8807db..430fd9f 100644 --- a/backend/main.py +++ b/backend/main.py @@ -59,10 +59,14 @@ async def surveiller_dslr(): log.warning("DSLR ne repond plus, reconnexion...") _dslr_erreurs = 0 camera.deconnecter() + camera.connectee = False + camera.mode = "erreur" + await diffuser_ws({"type": "camera_erreur", "message": "Probleme de communication avec l'appareil photo"}) + # Tenter de reconnecter en boucle if len(dslrs) > 0: camera.connecter(source="gphoto2") - else: - camera.connecter() # fallback webcam + if camera.connectee: + await diffuser_ws({"type": "camera_ok"}) elif len(dslrs) > 0: log.info(f"DSLR detecte : {dslrs[0][0]}, bascule automatique") camera.connecter(source="gphoto2") diff --git a/frontend/css/style.css b/frontend/css/style.css index 08301f4..f927c0e 100644 --- a/frontend/css/style.css +++ b/frontend/css/style.css @@ -1215,6 +1215,39 @@ h3 { border-radius: 3px; } +/* === Erreur camera === */ +.camera-erreur { + position: fixed; + top: 0; left: 0; + width: 100%; height: 100%; + background: rgba(0, 0, 0, 0.9); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 999; + gap: 1.5rem; +} + +.camera-erreur-icon { + font-size: 6rem; + opacity: 0.5; +} + +.camera-erreur p { + font-size: 1.8rem; + font-weight: 600; + color: #fff; + text-align: center; + padding: 0 2rem; +} + +.camera-erreur-sub { + font-size: 1.1rem; + color: #888; + animation: pulse 1.5s infinite; +} + /* === Clavier virtuel email === */ .clavier-virtuel { display: flex; diff --git a/frontend/index.html b/frontend/index.html index 38c92fb..5a32e63 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -11,6 +11,13 @@
+ +
+
📷
+

Probleme de communication avec l'appareil photo

+ Reconnexion en cours... +
+
diff --git a/frontend/js/app.js b/frontend/js/app.js index 5458ece..2481897 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -269,6 +269,15 @@ wsOnMessage('config_maj', (msg) => { appliquerConfig(); }); +// Erreur camera +wsOnMessage('camera_erreur', (msg) => { + document.getElementById('camera-erreur').classList.remove('cache'); +}); + +wsOnMessage('camera_ok', () => { + document.getElementById('camera-erreur').classList.add('cache'); +}); + // === WIZARD === let wizardStep = 1;