diff --git a/ws/reader.php b/ws/reader.php new file mode 100644 index 0000000..c935197 --- /dev/null +++ b/ws/reader.php @@ -0,0 +1,150 @@ + 'ERR', + 'message' => mysqli_connect_error(), + ]; + } else { + // Lettura device fra le date richieste + $sql = "SELECT DISTINCT logs.mac, logs.ssid, logs.dbm, logs_data.received_at, devices.nome FROM logs LEFT JOIN devices ON logs.mac=devices.mac INNER JOIN (SELECT mac, MAX(received_at) AS received_at FROM logs GROUP BY mac) AS logs_data ON logs_data.mac=logs.mac WHERE logs_data.received_at BETWEEN ? AND ? ORDER BY logs_data.received_at DESC"; + $stmt = $mysqli->prepare($sql); + + // Errore nella preparazione query + if (!$stmt) { + $result = [ + 'status' => 'ERR', + 'message' => $mysqli->error, + ]; + } else { + + if ($stmt->bind_param('ss', $date_start, $date_end)) { + $date_start = $_POST['date_start']; + $date_end = $_POST['date_end']; + + // Esecuzione statement + $stmt->execute(); + + $rs = $stmt->get_result(); + + while ($row = $rs->fetch_assoc()) { + // Conversione del segnale in percentuale se richiesto + if ($_POST['signal_type'] == 'percent') { + if ($row['dbm'] <= -100) { + $row['dbm'] = 0; + } elseif ($row['dbm'] >= -50) { + $row['dbm'] = 100; + } else { + $row['dbm'] = 2 * ($row['dbm'] + 100); + } + } + + $records[] = $row; + } + + $result = [ + 'status' => 'OK', + 'records' => (array)$records, + ]; + } else { + $result = [ + 'status' => 'ERR', + 'message' => 'Errore durante l\'esecuzione query', + ]; + } + + } + } + + echo json_encode($result); + + $stmt->close(); + $mysqli->close(); + } + break; + + case 'get-online-devices': + if (!empty($_POST['date_start']) && !empty($_POST['date_end'])) { + // Connessione al database + $mysqli = mysqli_connect($config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name']); + + // Errore nella connessione a database + if (mysqli_connect_errno($mysqli)) { + + $result = [ + 'status' => 'ERR', + 'message' => mysqli_connect_error(), + ]; + } else { + // Lettura numero di device unico nell'intervallo di date + $sql = "SELECT DISTINCT logs.mac FROM logs WHERE received_at BETWEEN ? AND ?"; + $stmt = $mysqli->prepare($sql); + + // Errore nella preparazione query + if (!$stmt) { + $result = [ + 'status' => 'ERR', + 'message' => $mysqli->error, + ]; + } else { + + if ($stmt->bind_param('ss', $date_start, $date_end)) { + $date_start = $_POST['date_start']; + $date_end = $_POST['date_end']; + + // Esecuzione statement + $stmt->execute(); + + $rs = $stmt->get_result(); + + while ($row = $rs->fetch_assoc()) { + // Conversione del segnale in percentuale se richiesto + if ($_POST['signal_type'] == 'percent') { + if ($row['dbm'] <= -100) { + $row['dbm'] = 0; + } elseif ($row['dbm'] >= -50) { + $row['dbm'] = 100; + } else { + $row['dbm'] = 2 * ($row['dbm'] + 100); + } + } + + $records[] = $row; + } + + $result = [ + 'status' => 'OK', + 'records' => sizeof($records), + ]; + } else { + $result = [ + 'status' => 'ERR', + 'message' => 'Errore durante l\'esecuzione query', + ]; + } + + } + } + + echo json_encode($result); + + $stmt->close(); + $mysqli->close(); + } + break; +} \ No newline at end of file