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:
@@ -59,10 +59,14 @@ async def surveiller_dslr():
|
|||||||
log.warning("DSLR ne repond plus, reconnexion...")
|
log.warning("DSLR ne repond plus, reconnexion...")
|
||||||
_dslr_erreurs = 0
|
_dslr_erreurs = 0
|
||||||
camera.deconnecter()
|
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:
|
if len(dslrs) > 0:
|
||||||
camera.connecter(source="gphoto2")
|
camera.connecter(source="gphoto2")
|
||||||
else:
|
if camera.connectee:
|
||||||
camera.connecter() # fallback webcam
|
await diffuser_ws({"type": "camera_ok"})
|
||||||
elif len(dslrs) > 0:
|
elif len(dslrs) > 0:
|
||||||
log.info(f"DSLR detecte : {dslrs[0][0]}, bascule automatique")
|
log.info(f"DSLR detecte : {dslrs[0][0]}, bascule automatique")
|
||||||
camera.connecter(source="gphoto2")
|
camera.connecter(source="gphoto2")
|
||||||
|
|||||||
@@ -1215,6 +1215,39 @@ h3 {
|
|||||||
border-radius: 3px;
|
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 email === */
|
||||||
.clavier-virtuel {
|
.clavier-virtuel {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -11,6 +11,13 @@
|
|||||||
<body>
|
<body>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
|
|
||||||
|
<!-- Overlay erreur camera -->
|
||||||
|
<div id="camera-erreur" class="camera-erreur cache">
|
||||||
|
<div class="camera-erreur-icon">📷</div>
|
||||||
|
<p>Probleme de communication avec l'appareil photo</p>
|
||||||
|
<span class="camera-erreur-sub">Reconnexion en cours...</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Ecran d'accueil -->
|
<!-- Ecran d'accueil -->
|
||||||
<section id="ecran-accueil" class="ecran actif">
|
<section id="ecran-accueil" class="ecran actif">
|
||||||
<!-- Fond video/gif en boucle -->
|
<!-- Fond video/gif en boucle -->
|
||||||
|
|||||||
@@ -269,6 +269,15 @@ wsOnMessage('config_maj', (msg) => {
|
|||||||
appliquerConfig();
|
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 ===
|
// === WIZARD ===
|
||||||
|
|
||||||
let wizardStep = 1;
|
let wizardStep = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user