Calcul moyenne base de données
Posté : 17 nov. 2023, 19:49
Bonjour,
Je suis lancé dans un projet ambitieux, une station météo.
Etant débutant j'ai travaillé avec des tutos à ce stade j'ai mon ESP32 qui remonter des données (temp/ hum...) dans une BD et ensuite j'affiche les infos sur une page web
Déjà à ce stade c'est pas mal pour moi :
Maintenant je voudrai pouvoir afficher des moyennes de la journée en cours et sur les 7 derniers jours.
J'ai déjà cela qui me calcule sur les x iéme dernières valeurs
Je suis lancé dans un projet ambitieux, une station météo.
Etant débutant j'ai travaillé avec des tutos à ce stade j'ai mon ESP32 qui remonter des données (temp/ hum...) dans une BD et ensuite j'affiche les infos sur une page web
Déjà à ce stade c'est pas mal pour moi :
Maintenant je voudrai pouvoir afficher des moyennes de la journée en cours et sur les 7 derniers jours.
J'ai déjà cela qui me calcule sur les x iéme dernières valeurs
Et mon affichage se fait avec :function avgReading($limit, $value) {
global $servername, $username, $password, $dbname;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT AVG(" . $value . ") AS avg_amount FROM (SELECT " . $value . " FROM SensorData order by reading_time desc limit " . $limit . ") AS avg";
if ($result = $conn->query($sql)) {
return $result->fetch_assoc();
}
else {
return false;
}
$conn->close();
}
et$avg_tempr = avgReading($readings_count, 'value4');
Voici ma structure de BD :<td><?php echo round($avg_temp['avg_amount'], 1); ?> °C</td>
CREATE TABLE SensorData (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
sensor VARCHAR(30) NOT NULL,
location VARCHAR(30) NOT NULL,
value1 VARCHAR(10),
value2 VARCHAR(10),
value3 VARCHAR(10),
reading_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)