You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.5 KiB
75 lines
2.5 KiB
// Application principale pour l'application web ESP32 |
|
|
|
// Formater le temps de fonctionnement |
|
function formatUptime(seconds) { |
|
const days = Math.floor(seconds / 86400); |
|
const hours = Math.floor((seconds % 86400) / 3600); |
|
const minutes = Math.floor((seconds % 3600) / 60); |
|
const secs = seconds % 60; |
|
|
|
let result = ''; |
|
if (days > 0) result += `${days}j `; |
|
if (hours > 0) result += `${hours}h `; |
|
if (minutes > 0) result += `${minutes}m `; |
|
result += `${secs}s`; |
|
|
|
return result; |
|
} |
|
|
|
// Formater la mémoire |
|
function formatMemory(bytes) { |
|
if (bytes < 1024) return bytes + ' B'; |
|
if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB'; |
|
return (bytes / (1024 * 1024)).toFixed(1) + ' MB'; |
|
} |
|
|
|
// Formater le signal WiFi |
|
function formatRSSI(rssi) { |
|
if (rssi >= -50) return `${rssi} dBm (Excellent)`; |
|
if (rssi >= -60) return `${rssi} dBm (Bon)`; |
|
if (rssi >= -70) return `${rssi} dBm (Moyen)`; |
|
if (rssi >= -80) return `${rssi} dBm (Faible)`; |
|
return `${rssi} dBm (Très faible)`; |
|
} |
|
|
|
// Rafraîchir les statistiques |
|
async function refreshStats() { |
|
try { |
|
const stats = await api.getStats(); |
|
|
|
// Mettre à jour l'affichage |
|
document.getElementById('uptime').textContent = formatUptime(stats.uptime); |
|
document.getElementById('memory').textContent = formatMemory(stats.heap_free) + ' / ' + formatMemory(stats.heap_total); |
|
document.getElementById('rssi').textContent = formatRSSI(stats.wifi_rssi); |
|
document.getElementById('ip').textContent = stats.ip; |
|
|
|
} catch (error) { |
|
console.error('Erreur de récupération des statistiques:', error); |
|
showMessage('Erreur de récupération des statistiques', 'error'); |
|
} |
|
} |
|
|
|
// Afficher un message |
|
function showMessage(text, type = 'info') { |
|
const messageDiv = document.getElementById('message'); |
|
if (messageDiv) { |
|
messageDiv.className = `message ${type}`; |
|
messageDiv.textContent = text; |
|
|
|
setTimeout(() => { |
|
messageDiv.className = 'message'; |
|
messageDiv.textContent = ''; |
|
}, 5000); |
|
} |
|
} |
|
|
|
// Initialisation au chargement de la page |
|
document.addEventListener('DOMContentLoaded', () => { |
|
// Rafraîchir les stats si on est sur la page d'accueil |
|
if (window.location.pathname.includes('index.html') || window.location.pathname === '/') { |
|
refreshStats(); |
|
|
|
// Rafraîchir automatiquement toutes les 5 secondes |
|
setInterval(refreshStats, 5000); |
|
} |
|
});
|
|
|