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) <noreply@anthropic.com>
This commit is contained in:
2026-04-08 10:07:09 +02:00
parent d719f4c100
commit 5de771b9f9
4 changed files with 55 additions and 2 deletions

View File

@@ -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")

View File

@@ -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;

View File

@@ -11,6 +11,13 @@
<body>
<div id="app">
<!-- Overlay erreur camera -->
<div id="camera-erreur" class="camera-erreur cache">
<div class="camera-erreur-icon">&#128247;</div>
<p>Probleme de communication avec l'appareil photo</p>
<span class="camera-erreur-sub">Reconnexion en cours...</span>
</div>
<!-- Ecran d'accueil -->
<section id="ecran-accueil" class="ecran actif">
<!-- Fond video/gif en boucle -->

View File

@@ -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;