// 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); } });