Téléverser les fichiers vers "/"
This commit is contained in:
48
app.py
Normal file
48
app.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
from flask import Flask, jsonify
|
||||||
|
import psutil
|
||||||
|
|
||||||
|
# Crée l'application web
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route("/api/data")
|
||||||
|
def get_system_data():
|
||||||
|
"""Cette fonction est appelée quand le navigateur visite /api/data"""
|
||||||
|
|
||||||
|
# 1. Obtenir CPU et RAM
|
||||||
|
cpu = psutil.cpu_percent(interval=None)
|
||||||
|
ram = psutil.virtual_memory().percent
|
||||||
|
|
||||||
|
# 2. Obtenir les températures
|
||||||
|
temps_data = psutil.sensors_temperatures()
|
||||||
|
|
||||||
|
# 'temps_data' est complexe. On cherche la température principale.
|
||||||
|
# Souvent, elle est dans 'coretemp' ou 'k10temp'.
|
||||||
|
current_temp = None
|
||||||
|
if 'coretemp' in temps_data:
|
||||||
|
# Prend la première température "Package"
|
||||||
|
current_temp = temps_data['coretemp'][0].current
|
||||||
|
elif 'k10temp' in temps_data:
|
||||||
|
# Pour les processeurs AMD
|
||||||
|
current_temp = temps_data['k10temp'][0].current
|
||||||
|
else:
|
||||||
|
current_temp = "N/A" # Non trouvé
|
||||||
|
|
||||||
|
# 3. Renvoyer les données au format JSON
|
||||||
|
return jsonify(
|
||||||
|
cpu_percent=cpu,
|
||||||
|
ram_percent=ram,
|
||||||
|
cpu_temp=current_temp
|
||||||
|
)
|
||||||
|
|
||||||
|
@app.route("/")
|
||||||
|
def home():
|
||||||
|
"""Cette fonction sert la page web principale (le frontend)"""
|
||||||
|
# On dit à Flask de renvoyer le fichier 'index.html'
|
||||||
|
# Ce fichier doit se trouver dans un dossier 'static'
|
||||||
|
return app.send_static_file('index.html')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Lance le serveur sur http://127.0.0.1:5000
|
||||||
|
print("Serveur lancé ! Ouvrez http://127.0.0.1:5000 dans votre navigateur.")
|
||||||
|
app.run(debug=True, port=5000)
|
||||||
61
index.html
Normal file
61
index.html
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Moniteur Système</title>
|
||||||
|
<style>
|
||||||
|
/* Un peu de style pour que ce soit joli */
|
||||||
|
body { font-family: sans-serif; background: #222; color: #eee; }
|
||||||
|
.container { max-width: 600px; margin: 40px auto; padding: 20px; background: #333; border-radius: 8px; }
|
||||||
|
.stat { margin-bottom: 15px; font-size: 1.5em; }
|
||||||
|
.label { display: inline-block; width: 150px; color: #aaa; }
|
||||||
|
.value { color: #fff; font-weight: bold; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>Statut du Système</h1>
|
||||||
|
|
||||||
|
<div class="stat">
|
||||||
|
<span class="label">Température CPU:</span>
|
||||||
|
<span class="value" id="temp">-- °C</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="stat">
|
||||||
|
<span class="label">Usage CPU:</span>
|
||||||
|
<span class="value" id="cpu">-- %</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="stat">
|
||||||
|
<span class="label">Usage RAM:</span>
|
||||||
|
<span class="value" id="ram">-- %</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Ce script s'exécute dans le navigateur
|
||||||
|
|
||||||
|
async function updateData() {
|
||||||
|
try {
|
||||||
|
// 1. Appelle notre backend Python
|
||||||
|
const response = await fetch('/api/data');
|
||||||
|
const data = await response.json();
|
||||||
|
|
||||||
|
// 2. Met à jour les valeurs dans le HTML
|
||||||
|
document.getElementById('temp').innerText = data.cpu_temp.toFixed(1) + " °C";
|
||||||
|
document.getElementById('cpu').innerText = data.cpu_percent.toFixed(1) + " %";
|
||||||
|
document.getElementById('ram').innerText = data.ram_percent.toFixed(1) + " %";
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Erreur de rafraîchissement:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Met à jour les données toutes les 2 secondes (2000 ms)
|
||||||
|
setInterval(updateData, 2000);
|
||||||
|
|
||||||
|
// Lance une première fois au chargement
|
||||||
|
updateData();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user