Some minor changes of Automation system
This commit is contained in:
		
							
								
								
									
										35
									
								
								api.php
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								api.php
									
									
									
									
									
								
							@@ -14,20 +14,6 @@ foreach (["class", "views"] as $dir) {
 | 
				
			|||||||
//DB Conector
 | 
					//DB Conector
 | 
				
			||||||
Db::connect (DBHOST, DBUSER, DBPASS, DBNAME);
 | 
					Db::connect (DBHOST, DBUSER, DBPASS, DBNAME);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Filtrování IP adress
 | 
					 | 
				
			||||||
/*if (DEBUGMOD != 1) {
 | 
					 | 
				
			||||||
if (!in_array($_SERVER['REMOTE_ADDR'], HOMEIP)) {
 | 
					 | 
				
			||||||
echo json_encode(array(
 | 
					 | 
				
			||||||
'state' => 'unsuccess',
 | 
					 | 
				
			||||||
'errorMSG' => "Using API from your IP insn´t alowed!",
 | 
					 | 
				
			||||||
));
 | 
					 | 
				
			||||||
header("HTTP/1.1 401 Unauthorized");
 | 
					 | 
				
			||||||
exit();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Read API data
 | 
					//Read API data
 | 
				
			||||||
$json = file_get_contents('php://input');
 | 
					$json = file_get_contents('php://input');
 | 
				
			||||||
$obj = json_decode($json, true);
 | 
					$obj = json_decode($json, true);
 | 
				
			||||||
@@ -36,10 +22,24 @@ if (isset($obj['user']) && $obj['user'] != ''){
 | 
				
			|||||||
	//user at home
 | 
						//user at home
 | 
				
			||||||
	$user = UserManager::getUser($obj['user']);
 | 
						$user = UserManager::getUser($obj['user']);
 | 
				
			||||||
	$userId = $user['user_id'];
 | 
						$userId = $user['user_id'];
 | 
				
			||||||
	UserManager::atHome($userId, $obj['location']);
 | 
						$keyWords = ['entered', 'connected', 'connected to'];
 | 
				
			||||||
 | 
						UserManager::atHome($userId, $obj['atHome']);
 | 
				
			||||||
 | 
						echo 'ssaved';
 | 
				
			||||||
	die();
 | 
						die();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//Filtrování IP adress
 | 
				
			||||||
 | 
					/*if (DEBUGMOD != 1) {
 | 
				
			||||||
 | 
						if (!in_array($_SERVER['REMOTE_ADDR'], HOMEIP)) {
 | 
				
			||||||
 | 
							echo json_encode(array(
 | 
				
			||||||
 | 
								'state' => 'unsuccess',
 | 
				
			||||||
 | 
								'errorMSG' => "Using API from your IP insn´t alowed!",
 | 
				
			||||||
 | 
							));
 | 
				
			||||||
 | 
							header("HTTP/1.1 401 Unauthorized");
 | 
				
			||||||
 | 
							exit();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//automationExecution
 | 
					//automationExecution
 | 
				
			||||||
AutomationManager::executeAll();
 | 
					AutomationManager::executeAll();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -117,7 +117,6 @@ if ($values != null || $values != "") {
 | 
				
			|||||||
			'state' => 'succes',
 | 
								'state' => 'succes',
 | 
				
			||||||
		));
 | 
							));
 | 
				
			||||||
		header("HTTP/1.1 200 OK");
 | 
							header("HTTP/1.1 200 OK");
 | 
				
			||||||
		die();
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		//Vypis
 | 
							//Vypis
 | 
				
			||||||
		//TODO: doděla uložení výpisu jinými slovy zda li byl comman vykonán
 | 
							//TODO: doděla uložení výpisu jinými slovy zda li byl comman vykonán
 | 
				
			||||||
@@ -145,5 +144,7 @@ if ($values != null || $values != "") {
 | 
				
			|||||||
				'value' => $subDeviceLastReordValue
 | 
									'value' => $subDeviceLastReordValue
 | 
				
			||||||
			));
 | 
								));
 | 
				
			||||||
			header("HTTP/1.1 200 OK");
 | 
								header("HTTP/1.1 200 OK");
 | 
				
			||||||
			die();
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Db::disconect();
 | 
				
			||||||
 | 
							die();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,13 +73,40 @@ class AutomationManager{
 | 
				
			|||||||
								$restart = true;
 | 
													$restart = true;
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										} else if ($onValue['type'] == 'outHome') {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					if ($onValue == 'outHome') {
 | 
										} else if ($onValue['type'] == 'inHome') {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					}
 | 
										} else if ($onValue['type'] == 'noOneHome') {
 | 
				
			||||||
 | 
											$users = UserManager::getUsers();
 | 
				
			||||||
					if ($onValue == 'inHome') {
 | 
											$membersHome = 0;
 | 
				
			||||||
 | 
											foreach ($users as $key => $user) {
 | 
				
			||||||
 | 
												if ($user['at_home'] == 'true'){
 | 
				
			||||||
 | 
													$membersHome++;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											if ($membersHome == 0 && $automation['executed'] == 0) {
 | 
				
			||||||
 | 
												$run = true;
 | 
				
			||||||
 | 
											} else if ($membersHome > 0 && $automation['executed'] == 1){
 | 
				
			||||||
 | 
												$restart = true;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										} else if ($onValue['type'] == 'someOneHome') {
 | 
				
			||||||
 | 
											$users = UserManager::getUsers();
 | 
				
			||||||
 | 
											$membersHome = 0;
 | 
				
			||||||
 | 
											foreach ($users as $key => $user) {
 | 
				
			||||||
 | 
												if ($user['at_home'] == 'true'){
 | 
				
			||||||
 | 
													$membersHome++;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											if ($membersHome == 0 && $automation['executed'] == 0) {
 | 
				
			||||||
 | 
												$restart = true;
 | 
				
			||||||
 | 
											} else if ($membersHome > 0 && $automation['executed'] == 1){
 | 
				
			||||||
 | 
												$run = true;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											/*echo "Someone Home". '<br>';
 | 
				
			||||||
 | 
											echo "at home" . $membersHome. '<br>';
 | 
				
			||||||
 | 
											echo "run" . $run. '<br>';
 | 
				
			||||||
 | 
											echo "restart" . $restart. '<br>';*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,10 @@ class Db{
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static function disconect(){
 | 
				
			||||||
 | 
							self::$join = null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static function loadOne ($sql, $values = array (), $numberKey = false) {
 | 
						public static function loadOne ($sql, $values = array (), $numberKey = false) {
 | 
				
			||||||
		$answer = self::$join->prepare ($sql);
 | 
							$answer = self::$join->prepare ($sql);
 | 
				
			||||||
		$answer->execute ($values);
 | 
							$answer->execute ($values);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,8 +63,12 @@ $lang = [
 | 
				
			|||||||
	'w_icon' => 'Ikona',
 | 
						'w_icon' => 'Ikona',
 | 
				
			||||||
	'w_no' => 'žádná',
 | 
						'w_no' => 'žádná',
 | 
				
			||||||
	'w_noOne' => 'Nikdo',
 | 
						'w_noOne' => 'Nikdo',
 | 
				
			||||||
 | 
						'w_someOne' => 'Někdo',
 | 
				
			||||||
	'w_room' => 'Místnost',
 | 
						'w_room' => 'Místnost',
 | 
				
			||||||
	'w_moduls' => 'Moduly',
 | 
						'w_moduls' => 'Moduly',
 | 
				
			||||||
 | 
						'w_home' => 'Doma',
 | 
				
			||||||
 | 
						'w_neni' => 'Není',
 | 
				
			||||||
 | 
						'w_is' => 'je',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//example
 | 
						//example
 | 
				
			||||||
	'' => '',
 | 
						'' => '',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,8 +63,12 @@ $lang = [
 | 
				
			|||||||
	'w_icon' => 'Icon',
 | 
						'w_icon' => 'Icon',
 | 
				
			||||||
	'w_no' => 'no',
 | 
						'w_no' => 'no',
 | 
				
			||||||
	'w_noOne' => 'noone',
 | 
						'w_noOne' => 'noone',
 | 
				
			||||||
 | 
						'w_someOne' => 'Some',
 | 
				
			||||||
	'w_room' => 'Room',
 | 
						'w_room' => 'Room',
 | 
				
			||||||
	'w_moduls' => 'Moduls',
 | 
						'w_moduls' => 'Moduls',
 | 
				
			||||||
 | 
						'w_home' => 'Home',
 | 
				
			||||||
 | 
						'w_neni' => 'At',
 | 
				
			||||||
 | 
						'w_is' => 'is',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//example
 | 
						//example
 | 
				
			||||||
	'' => '',
 | 
						'' => '',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@
 | 
				
			|||||||
				<i class="fa fa-times"></i>
 | 
									<i class="fa fa-times"></i>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
			<h4 class="mb-4">Modal bitch</h4>
 | 
								<h4 class="mb-4">Modal bitch</h4>
 | 
				
			||||||
			<form method="post" action="controls/dashboard.php">
 | 
								<form method="post">
 | 
				
			||||||
				<div class="field px-2">
 | 
									<div class="field px-2">
 | 
				
			||||||
					<div class="label">Zvolte zařízení:</div>
 | 
										<div class="label">Zvolte zařízení:</div>
 | 
				
			||||||
					<select class="input" name="devices[]" multiple>
 | 
										<select class="input" name="devices[]" multiple>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,10 +35,8 @@
 | 
				
			|||||||
		<div class="col-md-9 main-body">
 | 
							<div class="col-md-9 main-body">
 | 
				
			||||||
			<div class="label m-1">
 | 
								<div class="label m-1">
 | 
				
			||||||
				doma jsou: 
 | 
									doma jsou: 
 | 
				
			||||||
				<?php 
 | 
									<?php foreach ($USERS as $user) {
 | 
				
			||||||
				$keyWords = ['entered', 'connected', 'connected to'];
 | 
										if ($user['at_home'] == 'true') {
 | 
				
			||||||
				foreach ($USERS as $user) {
 | 
					 | 
				
			||||||
					if (in_array(trim($user['at_home']), $keyWords)) {
 | 
					 | 
				
			||||||
						echo $user['username'] . ' ';
 | 
											echo $user['username'] . ' ';
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				} ?>
 | 
									} ?>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,7 @@ function ajaxPost(path, params, self, reload = false) {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            console.log(msg);
 | 
					            console.log(msg);
 | 
				
			||||||
            if (reload){
 | 
					            if (reload){
 | 
				
			||||||
                //location.reload();
 | 
					                location.reload();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        error: function (request, status, error) {
 | 
					        error: function (request, status, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -182,36 +182,36 @@ $( '[name="room"]' ).change(function (e) {
 | 
				
			|||||||
});  
 | 
					});  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var windowLoc = $(location).attr('pathname');
 | 
					// var windowLoc = $(location).attr('pathname');
 | 
				
			||||||
windowLoc = windowLoc.substring(windowLoc.lastIndexOf("/"));
 | 
					// windowLoc = windowLoc.substring(windowLoc.lastIndexOf("/"));
 | 
				
			||||||
console.log();
 | 
					// console.log();
 | 
				
			||||||
if (windowLoc == "/") {
 | 
					// if (windowLoc == "/") {
 | 
				
			||||||
    var autoUpdate = setInterval(function(){
 | 
					//     var autoUpdate = setInterval(function(){
 | 
				
			||||||
        $.ajax({
 | 
					//         $.ajax({
 | 
				
			||||||
            url: 'ajax',
 | 
					//             url: 'ajax',
 | 
				
			||||||
            type: 'POST',
 | 
					//             type: 'POST',
 | 
				
			||||||
            dataType: 'json',
 | 
					//             dataType: 'json',
 | 
				
			||||||
            data: {
 | 
					//             data: {
 | 
				
			||||||
                "action": 'getState'
 | 
					//                 "action": 'getState'
 | 
				
			||||||
            },
 | 
					//             },
 | 
				
			||||||
            success: function(data){
 | 
					//             success: function(data){
 | 
				
			||||||
                // console.log('DATA: ', data);
 | 
					//                 // console.log('DATA: ', data);
 | 
				
			||||||
                for (const key in data) {
 | 
					//                 for (const key in data) {
 | 
				
			||||||
                    if (data.hasOwnProperty(key)) {
 | 
					//                     if (data.hasOwnProperty(key)) {
 | 
				
			||||||
                        const device = data[key];
 | 
					//                         const device = data[key];
 | 
				
			||||||
                        $('[data-sub-device-id="'+key+'"]')
 | 
					//                         $('[data-sub-device-id="'+key+'"]')
 | 
				
			||||||
                        .find('.device-button-value')
 | 
					//                         .find('.device-button-value')
 | 
				
			||||||
                        .text(device['value'])
 | 
					//                         .text(device['value'])
 | 
				
			||||||
                        .attr('title',device['time'])
 | 
					//                         .attr('title',device['time'])
 | 
				
			||||||
                    }
 | 
					//                     }
 | 
				
			||||||
                }
 | 
					//                 }
 | 
				
			||||||
            },
 | 
					//             },
 | 
				
			||||||
            error: function (request, status, error) {
 | 
					//             error: function (request, status, error) {
 | 
				
			||||||
                console.log("ERROR ajaxChart():", request, error);
 | 
					//                 console.log("ERROR ajaxChart():", request, error);
 | 
				
			||||||
            }
 | 
					//             }
 | 
				
			||||||
        });
 | 
					//         });
 | 
				
			||||||
    },2000);
 | 
					//     },2000);
 | 
				
			||||||
}
 | 
					// }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,10 @@
 | 
				
			|||||||
                        <option	value="inHome"><?php echo $LANG['l_inHome']?></option>
 | 
					                        <option	value="inHome"><?php echo $LANG['l_inHome']?></option>
 | 
				
			||||||
                        <option	value="outHome"><?php echo $LANG['l_outHome']?></option>
 | 
					                        <option	value="outHome"><?php echo $LANG['l_outHome']?></option>
 | 
				
			||||||
                        <option	value="time"><?php echo $LANG['l_time']?></option>
 | 
					                        <option	value="time"><?php echo $LANG['l_time']?></option>
 | 
				
			||||||
                        <option	value="atDeviceValue"><?php echo $LANG['l_deviceValue']?></option>
 | 
					                        <option	value="noOneHome"><?php echo $LANG['l_time']?></option>
 | 
				
			||||||
 | 
					                        <option	value="atDeviceValue"><?php echo $LANG['l_deviceValue'];?></option>
 | 
				
			||||||
 | 
					                        <option	value="noOneHome"><?php echo $LANG['w_noOne'] . $LANG['w_neni'] . $LANG['w_home'];?></option>
 | 
				
			||||||
 | 
					                        <option	value="someoOneHome"><?php echo $LANG['w_someOne'] . $LANG['w_is'] . $LANG['w_home'];?></option>
 | 
				
			||||||
                    </select>
 | 
					                    </select>
 | 
				
			||||||
                    <input class="input" type="time" name="atTime" id="atTime" disabled/>
 | 
					                    <input class="input" type="time" name="atTime" id="atTime" disabled/>
 | 
				
			||||||
                    <select class="input" name="atDeviceValue" id="atDeviceValue" disabled>
 | 
					                    <select class="input" name="atDeviceValue" id="atDeviceValue" disabled>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,7 @@ class Ajax extends Template
 | 
				
			|||||||
			$subDeviceData = SubDeviceManager::getSubDevice($subDeviceId);
 | 
								$subDeviceData = SubDeviceManager::getSubDevice($subDeviceId);
 | 
				
			||||||
			$deviceId = SubDeviceManager::getSubDeviceMaster($subDeviceId)['device_id'];
 | 
								$deviceId = SubDeviceManager::getSubDeviceMaster($subDeviceId)['device_id'];
 | 
				
			||||||
			if ($subDeviceData['type'] == 'on/off'){
 | 
								if ($subDeviceData['type'] == 'on/off'){
 | 
				
			||||||
 | 
									//TODO: Pridelat kontrolu změnit stav pouze pokud se poslední [executed] stav != novému
 | 
				
			||||||
				if (RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value'] == 0){
 | 
									if (RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value'] == 0){
 | 
				
			||||||
					RecordManager::create($deviceId, 'on/off', 1);
 | 
										RecordManager::create($deviceId, 'on/off', 1);
 | 
				
			||||||
					echo 'ON';
 | 
										echo 'ON';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,10 +20,10 @@ class Automation extends Template
 | 
				
			|||||||
		$automationsData = AutomationManager::getAll();
 | 
							$automationsData = AutomationManager::getAll();
 | 
				
			||||||
		foreach ($automationsData as $automationKey => $automationData) {
 | 
							foreach ($automationsData as $automationKey => $automationData) {
 | 
				
			||||||
			$doSomething = [];
 | 
								$doSomething = [];
 | 
				
			||||||
			foreach (json_decode($automationData['do_something']) as $subdeviceId => $subDeviceState) {
 | 
								foreach (json_decode($automationData['do_something']) as $deviceId => $subDeviceState) {
 | 
				
			||||||
				$subDeviceMasterDeviceData = SubDeviceManager::getSubDeviceMaster($subdeviceId);
 | 
									$subDeviceMasterDeviceData = DeviceManager::getDeviceById($deviceId);
 | 
				
			||||||
				$doSomething[$subdeviceId] = [
 | 
									$doSomething[$deviceId] = [
 | 
				
			||||||
					'name' => $subDeviceMasterDeviceData['name'],
 | 
										'name' => $subDeviceMasterDeviceData['name'] . $subDeviceMasterDeviceData['device_id'] ,
 | 
				
			||||||
					'state' => $subDeviceState,
 | 
										'state' => $subDeviceState,
 | 
				
			||||||
				];
 | 
									];
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -43,7 +43,7 @@ class Automation extends Template
 | 
				
			|||||||
			$allSubDevicesData = SubDeviceManager::getAllSubDevices($deviceValue['device_id']);
 | 
								$allSubDevicesData = SubDeviceManager::getAllSubDevices($deviceValue['device_id']);
 | 
				
			||||||
			foreach ($allSubDevicesData as $subDeviceKey => $subDeviceValue) {
 | 
								foreach ($allSubDevicesData as $subDeviceKey => $subDeviceValue) {
 | 
				
			||||||
				$approvedSubDevices[$subDeviceValue['subdevice_id']] = [
 | 
									$approvedSubDevices[$subDeviceValue['subdevice_id']] = [
 | 
				
			||||||
					'name' => $allDevicesData[$deviceKey]['name'],
 | 
										'name' => $allDevicesData[$deviceKey]['name'] . $allDevicesData[$deviceKey]['device_id'],
 | 
				
			||||||
					'type' => $subDeviceValue['type'],
 | 
										'type' => $subDeviceValue['type'],
 | 
				
			||||||
					'masterDevice' => $subDeviceValue['device_id'],
 | 
										'masterDevice' => $subDeviceValue['device_id'],
 | 
				
			||||||
				];
 | 
									];
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user