Bonjour,
Je travaille sur un projet de station meteo des capteurs branchés qui remontent des données vers une base SQL via un ESP32 et ensuite j'exploite cela pour un affichage sur une page html.
- Je reçois des infos de la température pression humidité toutes les 10mn et je peux donc faire une moyenne calculer les max les min, ça marche
Je reçois également des valeurs de particules d'air mais toutes les 30mn ce qui signifie que dans ma BD j'ai 2 enregistrements sur 3 sans valeurs
Donc ma moyenne des particules se fait sur les valeurs réelles (un nombre) mais prend en compte les valeurs null qui sont considérées à 0 j'ai donc essayé avec IS NOT NULL mais maintenant le resultat de la moyenne est à 0.
Voici la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 function avgReadingpm($value) { global $servername, $username, $password, $dbname; $value = (float)$value; var_dump($value); // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT AVG(CAST(" . $value . " AS SIGNED)) AS avg_amount FROM SensorData WHERE (" . $value . " IS NOT NULL ) AND (reading_time BETWEEN NOW() - INTERVAL 6 HOUR AND NOW()) "; if ($result = $conn->query($sql)) { return $result->fetch_assoc(); } else { return false; } $conn->close(); }
Pour info le retour de var_dump($value) est float(0) lorsqu'il n'y a pas de valeurs
Petite info supplémentaire j'ai suivi un tuto pour la création de ma BD et les valeurs sont en varchar.
Merci
Partager