connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connection succeed!
";
$data = json_decode(file_get_contents("php://input"));
$datetime = $data->datetime;
$deviceid = $data->device_id;
$temp = $data->temp;
$humidity = $data->humidity;
$h2s = $data->h2s;
$tvoc = $data->tvoc;
$eco2 = $data->eco2;
$nh3 = $data->nh3;
$co = $data->co;
$ch4 = $data->ch4;
$pm1_0 = $data->pm1_0;
$pm2_5 = $data->pm2_5;
$pm10 = $data->pm10;
$ver = $data->ver;
$lat = $data->lat;
$lng = $data->lng;
$alt = $data->alt;
if ($temp < -20) $temp = -20;
if (!isset($lat) || $lat === null) $lat = 37.854;
if (!isset($lng) || $lng === null) $lng = 127.726;
if (!isset($alt) || $alt === null) $alt = 75;
date_default_timezone_set('Asia/Seoul');
$date = date('Y-m-d H:i:s', time());
$sql_time = "SELECT datetime FROM ns40_1 WHERE deviceid='$deviceid' ORDER BY num DESC LIMIT 1";
$result_time = mysqli_query($conn, $sql_time);
$row_time = mysqli_fetch_array($result_time);
$gapMin = 999;
if ($row_time) {
$gapMin = (int)((strtotime($date) - strtotime($row_time['datetime'])) / 60);
}
if ($gapMin > 4) {
// ============================
// 1️⃣ 실제 장치 INSERT
// ============================
$sql = "INSERT INTO ns40_1
(num, datetime, deviceid, temp, humidity, h2s, tvoc, eco2, nh3, co, ch4, pm1_0, pm2_5, pm10, ver, lat, lng, alt)
VALUES
(NULL, '$datetime', '$deviceid', '$temp', '$humidity', '$h2s', '$tvoc', '$eco2',
'$nh3', '$co', '$ch4', '$pm1_0', '$pm2_5', '$pm10', '$ver', '$lat', '$lng', '$alt')";
mysqli_query($conn, $sql);
echo "Real device inserted!
";
// ======================================================
// 2️⃣ 실제 장치가 ns40_IjQ8242 일 경우 가상 3개 생성
// ======================================================
if ($deviceid == "ns40_IjQ8242") {
$virtualDevices = [
["id"=>"ns40_exT1234", "lat"=>37.8540, "lng"=>127.7285, "alt"=>75],
["id"=>"ns40_NgT2345", "lat"=>37.8549, "lng"=>127.7460, "alt"=>75],
["id"=>"ns40_ItQ3456", "lat"=>37.8545, "lng"=>127.7410, "alt"=>95]
];
function randomize($value) {
if ($value == -9999) return -9999;
$percent = rand(1,5) / 100;
$direction = rand(0,1) ? 1 : -1;
return $value + ($value * $percent * $direction);
}
foreach ($virtualDevices as $vd) {
$v_temp = randomize($temp);
$v_humidity = randomize($humidity);
$v_h2s = randomize($h2s);
$v_tvoc = randomize($tvoc);
$v_eco2 = randomize($eco2);
$v_nh3 = randomize($nh3);
$v_co = randomize($co);
$v_ch4 = randomize($ch4);
$v_pm1_0 = randomize($pm1_0);
$v_pm2_5 = randomize($pm2_5);
$v_pm10 = randomize($pm10);
$sql_virtual = "INSERT INTO ns40_1
(num, datetime, deviceid, temp, humidity, h2s, tvoc, eco2, nh3, co, ch4, pm1_0, pm2_5, pm10, ver, lat, lng, alt)
VALUES
(NULL, '$datetime', '{$vd['id']}', '$v_temp', '$v_humidity', '$v_h2s',
'$v_tvoc', '$v_eco2', '$v_nh3', '$v_co', '$v_ch4',
'$v_pm1_0', '$v_pm2_5', '$v_pm10', '$ver',
'{$vd['lat']}', '{$vd['lng']}', '{$vd['alt']}')";
mysqli_query($conn, $sql_virtual);
}
echo "3 virtual devices inserted!";
}
}
$conn->close();
?>