Admin WiFi : scan réseaux, connexion, mots de passe mémorisés
- Module backend/wifi.py : scan nmcli, connexion, mots de passe persistés dans data/wifi_passwords.json
- Gère la locale FR (oui/non), déduplique les AP multiples, prend le meilleur signal
- Onglet WiFi dans le menu admin avec statut, scan, clavier virtuel AZERTY complet
- Réseaux enregistrés avec bouton connecter/oublier et affichage temporaire du mdp
- API: /api/wifi/status, /api/wifi/scan, /api/wifi/connect, /api/wifi/saved, /api/wifi/password/{ssid}
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
||||
<meta name="google" content="notranslate">
|
||||
<meta http-equiv="Content-Language" content="fr">
|
||||
<link rel="stylesheet" href="/css/style.css?v=9">
|
||||
<link rel="stylesheet" href="/css/style.css?v=10">
|
||||
<link rel="stylesheet" href="/css/themes.css?v=2">
|
||||
</head>
|
||||
<body>
|
||||
@@ -374,6 +374,7 @@
|
||||
<button class="onglet" data-onglet="evenement">Evenement</button>
|
||||
<button class="onglet" data-onglet="fonctions">Fonctions</button>
|
||||
<button class="onglet" data-onglet="eclairage" onclick="demarrerEclairageLive()">Eclairage</button>
|
||||
<button class="onglet" data-onglet="wifi" onclick="chargerWifi()">WiFi</button>
|
||||
<button class="onglet" data-onglet="infos" onclick="chargerInfosSysteme()">Infos</button>
|
||||
</div>
|
||||
|
||||
@@ -691,6 +692,112 @@
|
||||
<button class="btn-danger" onclick="confirmerExtinction()">Eteindre le systeme</button>
|
||||
</div>
|
||||
|
||||
<!-- Panneau WiFi -->
|
||||
<div class="admin-panneau" id="panneau-wifi">
|
||||
<div class="wifi-statut" id="wifi-statut">
|
||||
<div class="wifi-statut-icon" id="wifi-statut-icon">📶</div>
|
||||
<div class="wifi-statut-info">
|
||||
<div id="wifi-ssid" class="wifi-ssid">--</div>
|
||||
<div id="wifi-detail" class="wifi-detail">Non connecté</div>
|
||||
</div>
|
||||
<div id="wifi-signal-bars" class="wifi-signal-bars"></div>
|
||||
</div>
|
||||
|
||||
<div class="champ-row" style="margin:1rem 0">
|
||||
<button class="btn-action" onclick="scannerWifi()">🔍 Scanner les réseaux</button>
|
||||
</div>
|
||||
|
||||
<div id="wifi-scan-loading" class="cache" style="text-align:center;padding:1rem;color:#888">
|
||||
<div class="capture-spinner" style="display:inline-block;width:24px;height:24px"></div>
|
||||
Recherche en cours...
|
||||
</div>
|
||||
|
||||
<div id="wifi-liste-reseaux" class="wifi-liste"></div>
|
||||
|
||||
<h3 style="margin-top:1.5rem">Réseaux enregistrés</h3>
|
||||
<div id="wifi-liste-enregistres" class="wifi-liste"></div>
|
||||
</div>
|
||||
|
||||
<!-- Popup saisie mot de passe WiFi -->
|
||||
<div id="popup-wifi-mdp" class="popup-overlay cache">
|
||||
<div class="popup-box popup-box-pave" style="max-width:600px">
|
||||
<h3 id="wifi-mdp-titre">Mot de passe WiFi</h3>
|
||||
<input type="text" id="wifi-mdp-input" placeholder="Mot de passe" autocomplete="off" readonly style="font-size:1.1rem;padding:.8rem;width:100%;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.05);color:#fff;margin-bottom:.5rem">
|
||||
<div id="wifi-mdp-erreur" class="mdp-erreur cache">Echec connexion</div>
|
||||
<div class="clavier-virtuel" id="clavier-wifi">
|
||||
<div class="clavier-ligne">
|
||||
<button onclick="wifiTape('1')">1</button>
|
||||
<button onclick="wifiTape('2')">2</button>
|
||||
<button onclick="wifiTape('3')">3</button>
|
||||
<button onclick="wifiTape('4')">4</button>
|
||||
<button onclick="wifiTape('5')">5</button>
|
||||
<button onclick="wifiTape('6')">6</button>
|
||||
<button onclick="wifiTape('7')">7</button>
|
||||
<button onclick="wifiTape('8')">8</button>
|
||||
<button onclick="wifiTape('9')">9</button>
|
||||
<button onclick="wifiTape('0')">0</button>
|
||||
</div>
|
||||
<div class="clavier-ligne" id="wifi-kb-row1">
|
||||
<button onclick="wifiTape('a')">a</button>
|
||||
<button onclick="wifiTape('z')">z</button>
|
||||
<button onclick="wifiTape('e')">e</button>
|
||||
<button onclick="wifiTape('r')">r</button>
|
||||
<button onclick="wifiTape('t')">t</button>
|
||||
<button onclick="wifiTape('y')">y</button>
|
||||
<button onclick="wifiTape('u')">u</button>
|
||||
<button onclick="wifiTape('i')">i</button>
|
||||
<button onclick="wifiTape('o')">o</button>
|
||||
<button onclick="wifiTape('p')">p</button>
|
||||
</div>
|
||||
<div class="clavier-ligne" id="wifi-kb-row2">
|
||||
<button onclick="wifiTape('q')">q</button>
|
||||
<button onclick="wifiTape('s')">s</button>
|
||||
<button onclick="wifiTape('d')">d</button>
|
||||
<button onclick="wifiTape('f')">f</button>
|
||||
<button onclick="wifiTape('g')">g</button>
|
||||
<button onclick="wifiTape('h')">h</button>
|
||||
<button onclick="wifiTape('j')">j</button>
|
||||
<button onclick="wifiTape('k')">k</button>
|
||||
<button onclick="wifiTape('l')">l</button>
|
||||
<button onclick="wifiTape('m')">m</button>
|
||||
</div>
|
||||
<div class="clavier-ligne" id="wifi-kb-row3">
|
||||
<button onclick="wifiTape('w')">w</button>
|
||||
<button onclick="wifiTape('x')">x</button>
|
||||
<button onclick="wifiTape('c')">c</button>
|
||||
<button onclick="wifiTape('v')">v</button>
|
||||
<button onclick="wifiTape('b')">b</button>
|
||||
<button onclick="wifiTape('n')">n</button>
|
||||
<button onclick="wifiTape('!')">!</button>
|
||||
<button onclick="wifiTape('.')">.</button>
|
||||
<button onclick="wifiTape('-')">-</button>
|
||||
<button onclick="wifiTape('_')">_</button>
|
||||
</div>
|
||||
<div class="clavier-ligne clavier-speciales">
|
||||
<button class="clavier-wide" onclick="wifiToggleMaj()" id="wifi-btn-maj">⇧ MAJ</button>
|
||||
<button class="clavier-wide clavier-espace" onclick="wifiTape(' ')">Espace</button>
|
||||
<button class="clavier-wide" onclick="wifiEffacer()">⌫</button>
|
||||
</div>
|
||||
<div class="clavier-ligne clavier-speciales">
|
||||
<button onclick="wifiTape('@')">@</button>
|
||||
<button onclick="wifiTape('#')">#</button>
|
||||
<button onclick="wifiTape('$')">$</button>
|
||||
<button onclick="wifiTape('%')">%</button>
|
||||
<button onclick="wifiTape('&')">&</button>
|
||||
<button onclick="wifiTape('*')">*</button>
|
||||
<button onclick="wifiTape('+')" >+</button>
|
||||
<button onclick="wifiTape('=')">=</button>
|
||||
<button onclick="wifiTape('/')">/</button>
|
||||
<button onclick="wifiTape('?')">?</button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex;gap:1rem;margin-top:.8rem">
|
||||
<button class="btn-action" onclick="validerWifiMdp()" id="wifi-btn-connecter">Connecter</button>
|
||||
<button class="btn-secondaire" onclick="fermerPopupWifi()">Annuler</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Panneau Infos systeme -->
|
||||
<div class="admin-panneau" id="panneau-eclairage">
|
||||
<div style="display:flex;gap:1rem;align-items:flex-start;flex-wrap:wrap">
|
||||
@@ -809,6 +916,6 @@
|
||||
<script src="/js/effects.js?v=4"></script>
|
||||
<script src="/js/gallery.js?v=3"></script>
|
||||
<script src="/js/share.js?v=7"></script>
|
||||
<script src="/js/admin.js?v=8"></script>
|
||||
<script src="/js/admin.js?v=9"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user