connect_error) { die("MySQL connection failed: " . $connection->connect_error); } // Parameter einlesen $limit = isset($_GET['limit']) ? intval($_GET['limit']) : 1650; if ($limit < 10) $limit = 1650; // Bodenfeuchte-Spalte prüfen $hasBodenfeuchte = false; $colCheck = $connection->query("SHOW COLUMNS FROM `outside` LIKE 'bodenfeuchte'"); if ($colCheck && $colCheck->num_rows > 0) { $hasBodenfeuchte = true; } // SQL-Abfrage $selectCols = "temp,feucht,timestamp,bar,radio,co2,wind"; if ($hasBodenfeuchte) { $selectCols .= ",bodenfeuchte"; } $sql = "SELECT $selectCols FROM outside ORDER BY id DESC LIMIT " . intval($limit); // Daten für Charts sammeln $temp = $feucht = $bar = $radio = $co2 = $wind = $boden = []; $count = 0; if ($result = $connection->query($sql)) { while ($row = $result->fetch_array(MYSQLI_ASSOC)) { $t = strtotime($row["timestamp"]) * 1000 - 3600000; $temp[$count] = ["x" => $t, "y" => floatval($row["temp"])]; $feucht[$count] = ["x" => $t, "y" => floatval($row["feucht"])]; $bar[$count] = ["x" => $t, "y" => floatval($row["bar"])]; $radio[$count] = ["x" => $t, "y" => floatval($row["radio"])]; $co2[$count] = ["x" => $t, "y" => floatval($row["co2"])]; $wind[$count] = ["x" => $t, "y" => floatval($row["wind"])]; if ($hasBodenfeuchte) { $boden[$count] = ["x" => $t, "y" => floatval($row["bodenfeuchte"] ?? 0)]; } $count++; } } $connection->close(); ?>