Compare commits
6 Commits
5ad11cbb10
...
ac43bdaf64
Author | SHA1 | Date | |
---|---|---|---|
|
ac43bdaf64 | ||
|
e65b046d47 | ||
|
50a0d3036c | ||
|
fffaf0e237 | ||
|
e9b8e0a453 | ||
|
0e3f571a0d |
@ -19,6 +19,7 @@ $router->any('/logout', 'Logout');
|
||||
$router->any('/automation', 'Automation');
|
||||
$router->any('/setting', 'Setting');
|
||||
$router->any('/device', 'Device');
|
||||
$router->get('/device/{sortBy}/{sortType}', 'Device');
|
||||
$router->any('/plugins', 'Plugins');
|
||||
$router->any('/ajax', 'Ajax');
|
||||
$router->any('/oauth', 'Oauth');
|
||||
|
@ -70,11 +70,6 @@ class EndpointsApi extends ApiController{
|
||||
$data['firmware_hash'] = $obj['settings']["firmware_hash"];
|
||||
}
|
||||
DeviceManager::editByToken($obj['token'], $data);
|
||||
$this->response([
|
||||
'state' => 'succes',
|
||||
'command' => $command,
|
||||
], 200);
|
||||
die();
|
||||
}
|
||||
|
||||
//Log Data Save
|
||||
@ -115,6 +110,7 @@ class EndpointsApi extends ApiController{
|
||||
if (!SubDeviceManager::getSubDeviceByMaster($device['device_id'], $key)) {
|
||||
SubDeviceManager::create($device['device_id'], $key, UNITS[$key]);
|
||||
}
|
||||
|
||||
$subDeviceLastReordValue[$key] = $value['value'];
|
||||
RecordManager::create($device['device_id'], $key, round($value['value'],3));
|
||||
$logManager->write("[API] Device_ID " . $device['device_id'] . " writed value " . $key . ' ' . $value['value'], LogRecordTypes::INFO);
|
||||
@ -170,14 +166,15 @@ class EndpointsApi extends ApiController{
|
||||
foreach ($subDevicesData as $key => $subDeviceData) {
|
||||
$subDeviceId = $subDeviceData['subdevice_id'];
|
||||
$subDeviceLastReord = RecordManager::getLastRecord($subDeviceId);
|
||||
if (!empty ($subDeviceLastReord)) {
|
||||
$subDeviceLastReordValue[$subDeviceData['type']] = $subDeviceLastReord['value'];
|
||||
|
||||
if ($subDeviceLastReord['execuded'] == 0){
|
||||
$logManager->write("[API] subDevice_ID " . $subDeviceId . " executed comand with value " . json_encode($subDeviceLastReordValue) . " executed " . $subDeviceLastReord['execuded'], LogRecordTypes::INFO);
|
||||
RecordManager::setExecuted($subDeviceLastReord['record_id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$hostname = "";
|
||||
$hostname = strtolower($device['name']);
|
||||
|
@ -3,10 +3,12 @@ class DeviceManager{
|
||||
public static $devices;
|
||||
|
||||
static function getAllDevices () {
|
||||
return Db::loadAll ("SELECT devices.* FROM devices
|
||||
return Db::loadAll ("SELECT * FROM devices
|
||||
WHERE approved != ?", Array(2));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static function getAllDevicesInRoom ($roomId = "") {
|
||||
return Db::loadAll ("SELECT * FROM devices WHERE room_id = ? AND approved != ?", Array($roomId, 2));
|
||||
}
|
||||
|
@ -26,7 +26,13 @@ class RecordManager{
|
||||
};
|
||||
|
||||
//Ochrana proti duplicitním hodnotám zapisují se jen změny
|
||||
if (self::getLastRecord($subDeviceId, 1)['value'] == $value){
|
||||
$lastRecord = self::getLastRecord($subDeviceId, 1);
|
||||
|
||||
if (!$lastRecord){
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($lastRecord['value'] == $value){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,8 @@
|
||||
|
||||
class Device extends Template
|
||||
{
|
||||
function __construct () {
|
||||
function __construct($sortBy = null, $sortType = null)
|
||||
{
|
||||
$userManager = new UserManager();
|
||||
$deviceManager = new DeviceManager();
|
||||
$subDeviceManager = new SubDeviceManager();
|
||||
@ -18,74 +19,51 @@ class Device extends Template
|
||||
$template = new Template('device');
|
||||
$template->prepare('title', $langMng->get("m_devices"));
|
||||
|
||||
if (!empty ($_GET['sort']) && !empty ($_SESSION['sort']) && $_SESSION['sort'] != $_GET['sort']) {
|
||||
unset($_SESSION['sort']);
|
||||
header('Location: device?sort=' . $_GET["sort"] . "&sortType=ASC");
|
||||
die();
|
||||
}
|
||||
$sortWordBook = [
|
||||
"id" => "device_id",
|
||||
"name" => "name",
|
||||
"room" => "room_id",
|
||||
"ip" => "ip_address",
|
||||
"mac" => "mac",
|
||||
"token" => "token",
|
||||
"signal" => "signal",
|
||||
"firmware" => "firmware_hash",
|
||||
"icon" => "icon"
|
||||
];
|
||||
|
||||
if (isset ($_GET['sortType'])) {
|
||||
switch ($_GET['sortType']) {
|
||||
case "DESC":
|
||||
$sortType = "";
|
||||
$sortIcon = "";
|
||||
break;
|
||||
case "ASC":
|
||||
$sortType = "DESC";
|
||||
$sortIcon = "";
|
||||
break;
|
||||
case "":
|
||||
unset($_GET["sort"]);
|
||||
unset($_GET["sortType"]);
|
||||
header('Location: device');
|
||||
die();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$sortType = "ASC";
|
||||
}
|
||||
$sortIcons = [
|
||||
"ASC" => "",
|
||||
"DESC" => "",
|
||||
];
|
||||
|
||||
$nextSort = [
|
||||
"ASC" => "DESC",
|
||||
"DESC" => "ASC",
|
||||
];
|
||||
|
||||
if (!empty ($_GET['sort']) && !empty ($_GET['sortType'])) {
|
||||
$template->prepare ('sortIcon', array ($_GET['sort'] => $sortIcon));
|
||||
$actualSort = "devices.device_id";
|
||||
switch ($_GET['sort']) {
|
||||
case "name":
|
||||
$actualSort = "devices.name";
|
||||
break;
|
||||
case "room":
|
||||
$actualSort = "rooms.name";
|
||||
break;
|
||||
case "ip":
|
||||
$actualSort = "devices.ip_address";
|
||||
break;
|
||||
case "mac":
|
||||
$actualSort = "devices.mac";
|
||||
break;
|
||||
case "token":
|
||||
$actualSort = "devices.token";
|
||||
break;
|
||||
}
|
||||
$devices = $deviceManager->getAllDevicesSorted ($actualSort, $_GET['sortType']);
|
||||
} else {
|
||||
$devices = $deviceManager->getAllDevices();
|
||||
|
||||
if (empty($sortBy) && empty($sortType)) {
|
||||
$sortBy = "id";
|
||||
$sortType = "DESC";
|
||||
}
|
||||
|
||||
if (!empty ($_GET['sort'])) {
|
||||
$_SESSION['sort'] = $_GET['sort'];
|
||||
}
|
||||
$template->prepare('sortIcon', [$sortBy => $sortIcons[$sortType]]);
|
||||
|
||||
foreach ($devices as $key => $device) {
|
||||
//Signal Stenght
|
||||
$subdevice = $subDeviceManager->getSubDeviceByMasterAndType($device['device_id'], "wifi");
|
||||
$devices[$key]['signal'] = "";
|
||||
if (!empty($subdevice['subdevice_id'])) {
|
||||
$record = $recordManager->getLastRecord($subdevice['subdevice_id']);
|
||||
if (!empty($record)) {
|
||||
$devices[$key]['signal'] = $record['value'] . " " . $subdevice['unit'];
|
||||
}
|
||||
}
|
||||
if (empty ($devices[$key]['signal'])) {
|
||||
$devices[$key]['signal'] = "";
|
||||
}
|
||||
|
||||
//Firmware Status
|
||||
$localBinary = "../updater/" . str_replace(':', '', $device['mac']) . ".bin";
|
||||
$devices[$key]['firmware_hash'] = "";
|
||||
if (file_exists($localBinary)) {
|
||||
$hash = md5_file($localBinary);
|
||||
if ($hash == $device['firmware_hash']) {
|
||||
@ -96,32 +74,19 @@ class Device extends Template
|
||||
} else {
|
||||
$devices[$key]['firmware_hash'] = "false";
|
||||
}
|
||||
if (empty ($device['mac'])) {
|
||||
$devices[$key]['firmware_hash'] = "";
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty ($_GET['sort']) && !empty ($_GET['sortType']) && $_GET['sort'] == "firmware") {
|
||||
if ($_GET['sortType'] == "DESC") {
|
||||
return Utilities::sortArrayByKey($devices, 'firmware_hash', "desc");
|
||||
} else if ($_GET['sortType'] == "ASC") {
|
||||
return Utilities::sortArrayByKey($devices, 'firmware_hash', "asc");
|
||||
}
|
||||
} else if (!empty ($_GET['sort']) && !empty ($_GET['sortType']) && $_GET['sort'] == "signal") {
|
||||
if ($_GET['sortType'] == "DESC") {
|
||||
return Utilities::sortArrayByKey($devices, 'signal', "desc");
|
||||
} else if ($_GET['sortType'] == "ASC") {
|
||||
return Utilities::sortArrayByKey($devices, 'signal', "asc");
|
||||
}
|
||||
}
|
||||
$devices = Utilities::sortArrayByKey($devices, $sortWordBook[$sortBy], strtolower($sortType));
|
||||
|
||||
$rooms = $roomManager->getAllRooms();
|
||||
|
||||
$template->prepare('baseUrl', BASEURL);
|
||||
$template->prepare('baseDir', BASEDIR);
|
||||
|
||||
$template->prepare('debugMod', DEBUGMOD);
|
||||
$template->prepare('logToLiveTime', LOGTIMOUT);
|
||||
$template->prepare('rooms', $rooms);
|
||||
$template->prepare ('sortType', $sortType);
|
||||
$template->prepare('sortType', $nextSort[$sortType]);
|
||||
$template->prepare('devices', $devices);
|
||||
$template->prepare('langMng', $langMng);
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
<?php
|
||||
$partial = new Partial('head');
|
||||
$partial->prepare('baseDir', $BASEDIR);
|
||||
$partial->prepare('baseUrl', $BASEURL);
|
||||
$partial->render();
|
||||
?>
|
||||
<title><?php echo $TITLE ?></title>
|
||||
|
@ -5,6 +5,7 @@
|
||||
<?php
|
||||
$partial = new Partial('head');
|
||||
$partial->prepare('baseDir', $BASEDIR);
|
||||
$partial->prepare('baseUrl', $BASEURL);
|
||||
$partial->render();
|
||||
?>
|
||||
<title><?php echo $TITLE ?></title>
|
||||
@ -25,15 +26,15 @@
|
||||
<div class="col-md-9 main-body">
|
||||
<table class="table is-fluid">
|
||||
<tr>
|
||||
<th><a href="device">#</a></th>
|
||||
<th><a href="device?sort=name&sortType=<?php echo $SORTTYPE; ?>">Name</a><i class="fa"><?php echo (!empty($SORTICON['name']) ? $SORTICON['name'] : ""); ?></i></th>
|
||||
<th><a href="device?sort=room&sortType=<?php echo $SORTTYPE; ?>">Room</a><i class="fa"><?php echo (!empty($SORTICON['room']) ? $SORTICON['room'] : ""); ?></i></th>
|
||||
<th><a href="device?sort=signal&sortType=<?php echo $SORTTYPE; ?>">Signal</a><i class="fa"><?php echo (!empty($SORTICON['signal']) ? $SORTICON['signal'] : ""); ?></i></th>
|
||||
<th><a href="device?sort=firmware&sortType=<?php echo $SORTTYPE; ?>">Firmware</a><i class="fa"><?php echo (!empty($SORTICON['firmware']) ? $SORTICON['firmware'] : ""); ?></i></th>
|
||||
<th><a href="device/icon/<?php echo $SORTTYPE; ?>">#</a><i class="fa"><?php echo (!empty($SORTICON['icon']) ? $SORTICON['icon'] : ""); ?></i></th>
|
||||
<th><a href="device/name/<?php echo $SORTTYPE; ?>">Name</a><i class="fa"><?php echo (!empty($SORTICON['name']) ? $SORTICON['name'] : ""); ?></i></th>
|
||||
<th><a href="device/room/<?php echo $SORTTYPE; ?>">Room</a><i class="fa"><?php echo (!empty($SORTICON['room']) ? $SORTICON['room'] : ""); ?></i></th>
|
||||
<th><a href="device/signal/<?php echo $SORTTYPE; ?>">Signal</a><i class="fa"><?php echo (!empty($SORTICON['signal']) ? $SORTICON['signal'] : ""); ?></i></th>
|
||||
<th><a href="device/firmware/<?php echo $SORTTYPE; ?>">Firmware</a><i class="fa"><?php echo (!empty($SORTICON['firmware']) ? $SORTICON['firmware'] : ""); ?></i></th>
|
||||
<th>
|
||||
<a href="device?sort=ip&sortType=<?php echo $SORTTYPE; ?>">IP Address</a><i class="fa"><?php echo (!empty($SORTICON['ip']) ? $SORTICON['ip'] : ""); ?></i><br>
|
||||
<a href="device?sort=mac&sortType=<?php echo $SORTTYPE; ?>">(Mac)</a><i class="fa"><?php echo (!empty($SORTICON['mac']) ? $SORTICON['mac'] : ""); ?></i><br>
|
||||
<a href="device?sort=token&sortType=<?php echo $SORTTYPE; ?>">Token</a><i class="fa"><?php echo (!empty($SORTICON['token']) ? $SORTICON['token'] : ""); ?></i>
|
||||
<a href="/device/ip/<?php echo $SORTTYPE; ?>">IP Address</a><i class="fa"><?php echo (!empty($SORTICON['ip']) ? $SORTICON['ip'] : ""); ?></i><br>
|
||||
<a href="/device/mac/<?php echo $SORTTYPE; ?>">(Mac)</a><i class="fa"><?php echo (!empty($SORTICON['mac']) ? $SORTICON['mac'] : ""); ?></i><br>
|
||||
<a href="/device/token/<?php echo $SORTTYPE; ?>">Token</a><i class="fa"><?php echo (!empty($SORTICON['token']) ? $SORTICON['token'] : ""); ?></i>
|
||||
</th>
|
||||
<th>Action
|
||||
<form method="post" action="">
|
||||
@ -45,7 +46,7 @@
|
||||
<?php if (!empty($DEVICES)) : ?>
|
||||
<?php foreach ($DEVICES as $device) : ?>
|
||||
<tr>
|
||||
<td><i class="fa">&#x<?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?></i></td>
|
||||
<td><i class="fa <?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?>"></i></td>
|
||||
<td>
|
||||
<form method="post" action="">
|
||||
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
|
||||
@ -87,12 +88,12 @@
|
||||
?>
|
||||
|
||||
<i class="fa <?php echo $icon; ?>" style="color: <?php echo $color; ?>;"></i>
|
||||
<?php echo $device['firmware_hash'] ?>
|
||||
<button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php echo $device['device_id'] ?>').click();"></button>
|
||||
<form style="display: none;" method="POST" action="" enctype="multipart/form-data">
|
||||
<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>">
|
||||
<input type="file" onchange="this.form.submit();" name="deviceFirmware" id="deviceFirmware-<?php echo $device['device_id'] ?>" value="">
|
||||
</form>
|
||||
<!--<button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php //echo $device['device_id'] ?>').click();"></button>-->
|
||||
<?php endif; ?>
|
||||
<div type="float: clear;"></div>
|
||||
</td>
|
||||
|
@ -4,6 +4,7 @@
|
||||
<?php
|
||||
$partial = new Partial('head');
|
||||
$partial->prepare('baseDir', $BASEDIR);
|
||||
$partial->prepare('baseUrl', $BASEURL);
|
||||
$partial->render();
|
||||
?>
|
||||
<title><?php echo $TITLE ?></title>
|
||||
|
@ -1,5 +1,7 @@
|
||||
<link rel="manifest" href="manifest.json">
|
||||
|
||||
<base href="<?php echo $BASEURL; ?>">
|
||||
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="application-name" content="Home">
|
||||
@ -18,6 +20,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
|
||||
<link rel="stylesheet" href="<?php echo $BASEDIR; ?>css/main.css?v2">
|
||||
<link rel="stylesheet" href="<?php echo $BASEDIR; ?>css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="<?php echo $BASEDIR; ?>css/modal.css">
|
||||
|
@ -15,7 +15,7 @@
|
||||
<input class="" type="checkbox" name="remember" value="true"/>
|
||||
</div>
|
||||
<?php if (!empty ($_SESSION['msg'])): ?>
|
||||
<label class="message"><?php echo $_SESSION['msg']; ?></label><br/><br/>
|
||||
<label class="alert"><?php echo $_SESSION['msg']; ?></label><br/><br/>
|
||||
<?php unset ($_SESSION['msg']); ?>
|
||||
<?php endif; ?>
|
||||
<input type="submit" class="button" name="login" value="Login"/>
|
||||
|
@ -4,6 +4,7 @@
|
||||
<?php
|
||||
$partial = new Partial('head');
|
||||
$partial->prepare('baseDir', $BASEDIR);
|
||||
$partial->prepare('baseUrl', $BASEURL);
|
||||
$partial->render();
|
||||
?>
|
||||
<title><?php echo $TITLE ?></title>
|
||||
|
@ -4,6 +4,7 @@
|
||||
<?php
|
||||
$partial = new Partial('head');
|
||||
$partial->prepare('baseDir', $BASEDIR);
|
||||
$partial->prepare('baseUrl', $BASEURL);
|
||||
$partial->render();
|
||||
?>
|
||||
<title><?php echo $TITLE ?></title>
|
||||
|
Loading…
Reference in New Issue
Block a user