150 lines
5.6 KiB
PHP
150 lines
5.6 KiB
PHP
|
<?php
|
||
|
|
||
|
// Lettura file di configurazione
|
||
|
$config = parse_ini_file('../config.ini');
|
||
|
|
||
|
// Array per la risposta del web service
|
||
|
$result = [];
|
||
|
|
||
|
|
||
|
switch( $_POST['op'] ){
|
||
|
case 'get-last-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 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;
|
||
|
}
|