Этот PHP-скрипт предназначен для получения исторических данных с IoT-датчиков за последние 24 часа из базы данных и предоставления их в формате JSON. Он используется, например, для построения графиков или анализа изменений показаний датчиков во времени.
topic (например, /data.php?topic=sensor/temperature), который определяет, данные какого датчика запрашиваются.topic не указан или пуст — возвращается пустой JSON-массив [].iot_db) с использованием учётных данных iot_user / 123456.sensor_history, выбирающий поля value (значение датчика) и timestamp (время записи) за последние 24 часа, отсортированные по возрастанию времени.Content-Type: application/json.Скрипт может использоваться в веб-интерфейсе системы мониторинга IoT, например, для отображения графика температуры, влажности или других параметров за сутки с помощью JavaScript-библиотек (Chart.js, Plotly и т.д.).
CREATE TABLE sensor_history (
id INT AUTO_INCREMENT PRIMARY KEY,
topic VARCHAR(255) NOT NULL,
value VARCHAR(255) NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
<?php
header("Content-Type: application/json");
$topic = filter_input(INPUT_GET, 'topic', FILTER_SANITIZE_STRING);
if (!$topic) {
echo json_encode([]);
exit;
}
try {
$pdo = new PDO("mysql:host=127.0.0.1;dbname=iot_db;charset=utf8mb4", "iot_user", "123456");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Запрашиваем данные за последние 24 часа
$stmt = $pdo->prepare("
SELECT value, timestamp
FROM sensor_history
WHERE topic = ?
AND timestamp >= NOW() - INTERVAL 24 HOUR
ORDER BY timestamp ASC
");
$stmt->execute([$topic]);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($data);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => $e->getMessage()]);
}
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!