Compare commits

...

2 Commits

Author SHA1 Message Date
GamerClassN7
4b94ef29c1 Merge branch 'remastering' of https://gitea.steelants.cz/SH/PHP_SMART_HOME_V3 into remastering 2020-10-31 21:37:46 +01:00
GamerClassN7
8a00190850 Minor Tweeks 2020-10-31 21:37:29 +01:00
7 changed files with 44 additions and 18 deletions

View File

@ -28,13 +28,17 @@ $router->post('/api/login', 'AuthApi@login');
$router->post('/api/logout', 'AuthApi@logout'); $router->post('/api/logout', 'AuthApi@logout');
$router->get('/api/rooms', 'RoomsApi@default'); $router->get('/api/rooms', 'RoomsApi@default');
$router->get('/api/rooms/{roomId}/update', 'RoomsApi@update'); $router->get('/api/rooms/{roomId}/update', 'RoomsApi@update');
$router->get('/api/devices', 'DevicesApi@default'); $router->get('/api/devices', 'DevicesApi@default');
$router->get('/api/plugins', 'PluginsApi@default'); $router->get('/api/plugins', 'PluginsApi@default');
$router->get('/api/users', 'UsersApi@default'); $router->get('/api/users', 'UsersApi@default');
$router->get('/api/server', 'ServerApi@default'); $router->get('/api/server', 'ServerApi@default');
$router->get('/api/server/log', 'ServerApi@logStatus'); $router->get('/api/server/log', 'ServerApi@logStatus');
$router->post('/api/widgets/{widgetId}/run', 'WidgetApi@run'); $router->post('/api/widgets/{widgetId}/run', 'WidgetApi@run');
$router->get('/api/widgets/{widgetId}/detail', 'WidgetApi@detail'); $router->get('/api/widgets/{widgetId}/detail', 'WidgetApi@detail');
$router->get('/api/widgets/{widgetId}/detail/{period}', 'WidgetApi@detail');
//cron //cron
$router->post('/cron/clean', 'CronApi@clean'); $router->post('/cron/clean', 'CronApi@clean');

View File

@ -2,19 +2,18 @@
class RoomsApi extends ApiController class RoomsApi extends ApiController
{ {
public function public function default()
default()
{ {
//$this->requireAuth(); //$this->requireAuth();
$response = []; $response = [];
$roomIds = []; $roomIds = [];
$roomsData = RoomManager::getRoomsDefault(); $roomsData = RoomManager::getRoomsDefault();
foreach ($roomsData as $roomKey => $room) { foreach ($roomsData as $roomKey => $room) {
$roomIds[] = $room['room_id']; $roomIds[] = $room['room_id'];
} }
//Translation Of Numeric Walues //Translation Of Numeric Walues
$subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds); $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds);
foreach ($subDevicesData as $subDeviceKey => $subDevice) { foreach ($subDevicesData as $subDeviceKey => $subDevice) {
@ -27,7 +26,7 @@ class RoomsApi extends ApiController
} else { } else {
continue; continue;
} }
$cammelCaseClass = ""; $cammelCaseClass = "";
foreach (explode('-', $type) as $word) { foreach (explode('-', $type) as $word) {
$cammelCaseClass .= ucfirst($word); $cammelCaseClass .= ucfirst($word);
@ -42,7 +41,7 @@ class RoomsApi extends ApiController
$subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']); $subDevicesData[$subDeviceKey][$key]['value'] = $deviceClass->translate($subDevicesData[$subDeviceKey][$key]['value']);
} }
} }
foreach ($roomsData as $roomKey => $roomData) { foreach ($roomsData as $roomKey => $roomData) {
if ($roomData['device_count'] == 0) continue; if ($roomData['device_count'] == 0) continue;
$response[] = [ $response[] = [
@ -53,11 +52,11 @@ class RoomsApi extends ApiController
} }
$this->response($response); $this->response($response);
} }
public function update($roomId) public function update($roomId)
{ {
//$this->requireAuth(); //$this->requireAuth();
$subDevicesData = SubDeviceManager::getSubdevicesByRoomIds([$roomId]); $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds([$roomId]);
$this->response($subDevicesData); $this->response($subDevicesData);
} }

View File

@ -12,16 +12,24 @@ class ServerApi extends ApiController {
return $meminfo; return $meminfo;
} }
private function getProcessorUsage(){
$loads=sys_getloadavg();
$core_nums=trim(shell_exec("grep -P '^physical id' /proc/cpuinfo|wc -l"));
$load = round($loads[0]/($core_nums + 1)*100, 2);
return $load;
}
public function default(){ public function default(){
//$this->requireAuth(); //$this->requireAuth();
$response = [ $response = [
"cpu_load" => sys_getloadavg()[0], "cpu_load" => $this->getProcessorUsage(),
"uptime" => shell_exec('uptime -p'), "uptime" => shell_exec('uptime -p'),
"ramFree" => $this->getSystemMemInfo()["MemFree"], "ramFree" => $this->getSystemMemInfo()["MemFree"],
"ramTotal" => $this->getSystemMemInfo()["MemTotal"], "ramTotal" => $this->getSystemMemInfo()["MemTotal"],
"diskFree" => disk_free_space("/"), "diskFree" => disk_free_space("/"),
"diskTotal" => disk_total_space("/"), "diskTotal" => disk_total_space("/"),
"serverTime" => date('m. d. Y H:i:s - e'), "serverTime" => date('m. d. Y H:i:s'),
"serverTimeZone" => date('e'),
]; ];
$this->response($response); $this->response($response);
} }

View File

@ -32,9 +32,17 @@ class WidgetApi extends ApiController
$this->response(['value' => $response]); $this->response(['value' => $response]);
} }
public function detail($subDeviceId) public function detail($subDeviceId, $period = "day")
{ {
//$this->requireAuth(); //$this->requireAuth();
$groupBy = [
"year" => "month",
"month" => "day",
"day" => "hour",
"hout" => "minute",
];
$response = null; $response = null;
$connectionError = true; $connectionError = true;
@ -42,11 +50,18 @@ class WidgetApi extends ApiController
$deviceData = DeviceManager::getDeviceById($subDeviceData['device_id']); $deviceData = DeviceManager::getDeviceById($subDeviceData['device_id']);
//TODO: zeptat se @Patrik Je Graf Dobře Seřazený na DESC ? //TODO: zeptat se @Patrik Je Graf Dobře Seřazený na DESC ?
$events = RecordManager::getAllRecordForGraph($subDeviceId); $events = RecordManager::getAllRecordForGraph($subDeviceId, $period, $groupBy[$period]);
if ( count($events) == 0){ if ( count($events) == 0){
throw new Exception("No Records", 404); throw new Exception("No Records", 404);
} }
//Striping executed value from dataset if pasiv device such as Senzor ETC
if ($subDeviceData['type'] != "on/off") {
foreach ($events as $key => $event) {
unset($events[$key]['execuded']);
}
}
$LastRecordTime = new DateTime(reset($events)['time']); $LastRecordTime = new DateTime(reset($events)['time']);
$niceTime = Utilities::ago($LastRecordTime); $niceTime = Utilities::ago($LastRecordTime);
@ -115,7 +130,7 @@ class WidgetApi extends ApiController
//TODO: Make Cleaner //TODO: Make Cleaner
if (isset(RANGES[$subDeviceData['type']])){ if (isset(RANGES[$subDeviceData['type']])){
$response['graph']['options']['options']['scales']['yAxes'] = [[ $response['graph']['options']['scales']['yAxes'] = [[
'ticks' => [ 'ticks' => [
'min' => RANGES[$subDeviceData['type']]['min'], 'min' => RANGES[$subDeviceData['type']]['min'],
'max' => RANGES[$subDeviceData['type']]['max'], 'max' => RANGES[$subDeviceData['type']]['max'],

View File

@ -86,7 +86,7 @@ class RecordManager{
$dateTime = $dateTime->modify($periodLocal); $dateTime = $dateTime->modify($periodLocal);
$dateTime = $dateTime->format('Y-m-d H:i:s'); $dateTime = $dateTime->format('Y-m-d H:i:s');
$groupBy = strtoupper($groupBy).'(time)'; $groupBy = strtoupper($groupBy).'(time)';
$sql = 'SELECT value, time FROM records $sql = 'SELECT value, time, execuded FROM records
WHERE WHERE
subdevice_id = ? subdevice_id = ?
AND AND

View File

@ -77,7 +77,7 @@ class SubDeviceManager
//TODO: @Patrik Check line 89 //TODO: @Patrik Check line 89
$rows = Db::loadAll(" $rows = Db::loadAll("
SELECT d.room_id, sd.subdevice_id, sd.device_id, d.name, sd.type, sd.unit, r.value FROM subdevices sd SELECT d.room_id, sd.subdevice_id, sd.device_id, d.icon, d.name, sd.type, sd.unit, r.value FROM subdevices sd
JOIN devices d ON sd.device_id = d.device_id JOIN devices d ON sd.device_id = d.device_id
JOIN records r ON r.subdevice_id = sd.subdevice_id JOIN records r ON r.subdevice_id = sd.subdevice_id
WHERE d.room_id IN (".str_repeat("?,", count($roomIds)-1)."?) WHERE d.room_id IN (".str_repeat("?,", count($roomIds)-1)."?)

View File

@ -23,8 +23,8 @@ class Server extends Template
return $load; return $load;
} }
function __construct() function __construct()
{ {
$userManager = new UserManager(); $userManager = new UserManager();
$langMng = new LanguageManager('en'); $langMng = new LanguageManager('en');