Bonjour à toutes et à tous,
Dans un précédent fil, j'ai évoqué mes problème pour afficher plusieurs courbes sur un même graphique. Je l'ai résolu d'un certaine manière.
Maintenant, avec le code que j'ai, dès lors que j'envoie l'adresse du serveur dans mon navigateur, l'affichage des courbes se fait automatiquement et récursivement, je suppose grâce à la fonction setInterval(updateChart, 5000);
Ce que je voudrais, est qu'il n'y ait pas de récursivité, mais un simple affichage , c'est tout. Comment faire ?
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/html", R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ESP32 Routeur photovoltaïque</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<h1 style="text-align: center;">ESP32 Routeur photovoltaïque</h1>
<canvas id="myChart" width="800" height="300"></canvas>
<script>
const ctx = document.getElementById('myChart').getContext('2d');
const chart = new Chart(ctx, {
type: 'line',
data: {
labels: [],
datasets: [{
label: 'Forme d\'onde 1',
data: [],
borderColor: 'rgb(75, 192, 192)',
tension: 0.5 // Filtrage du signal ; doit être compris entre 0 (pas de filtrage) et 1 (filtrage max)
},{
label: 'Forme d\'onde 2',
data: [],
borderColor: 'rgb(192, 192, 75)',
tension: 0.1
}]
}
});
function updateChart() {
fetch('/data')
.then(response => response.text())
.then(data => {
const rows = data.split('\n');
const labels = [];
const values0 = [];
const values1 = [];
rows.forEach(row => {
const [label, value0, value1] = row.split(',');
labels.push(label);
values0.push(parseFloat(value0));
values1.push(parseFloat(value1));
});
chart.data.labels = labels;
chart.data.datasets[0].data = values0;
chart.data.datasets[1].data = values1;
chart.update();
});
}
setInterval(updateChart, 5000); // Mise à jour toutes les 5 secondes
</script>
</body>
</html>
)rawliteral");
});
server.on("/data", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(LittleFS, "/Onde2.csv", "text/csv");
});
Cordialement.
Pierre.