VH.php 15.3 KB
<?
header('refresh: 1800;url="http://127.0.0.1/C25104/VH.php"');
define ('INDEX','http://52.74.132.133/');
define ('SYSTEM_DBHOST','52.74.132.133:3306');
define ('SYSTEM_DBNAME','sanlien');
define ('SYSTEM_DBUSER','3944');
define ('SYSTEM_DBPWD','12345');
define ('USER_DEVICE_SENSOR','user_device_sensor');
define ('USER_DEVICE_SENSOR_LOAD','user_device_sensor_load');
define ('USER_CONTACT','user_contact');
define ('USER_DEVICE','user_device');
/************* 簡訊傳送設定 *******************/
include_once('Device.cls.php');
include_once('WADB.cls.php');
$Device = new Device();
$project_code = 'C25104';
?>
	<table width="100%" border="1" cellpadding="0" cellspacing="0" style="text-align:center">
                    <thead>
                        <tr>
                            <th style="text-align:center"><? echo '裝置名稱'; ?></th>
                            <th style="text-align:center"><? echo '時間'; ?></th>
                            <th style="text-align:center"><? echo '電壓'; ?></th>
                            <th style="text-align:center"><? echo '溫度'; ?></th>
                            <th style="text-align:center"><? echo '計算後'; ?></th>
                            <th style="text-align:center"><? echo '初始值'; ?></th>
                            <th style="text-align:center"><? echo '上-下行動值'; ?></th>
                            <th style="text-align:center"><? echo '上-下警戒值'; ?></th>
                            <th style="text-align:center"><? echo '擷取上-下值'; ?></th>
                            <th style="text-align:center"><? echo '通知者'; ?></th>

                        </tr>
                    </thead>
                    <?
					$sensor_data_load_info = $Device->get_sensor_load_data_list($project_code); //load檔資料
						foreach($sensor_data_load_info as $k => $v){
							if($sensor_data_load_info[$i]['load_data'] != ""){
								$load_data[$sensor_data_load_info[$i]['device_code']] = $sensor_data_load_info[$i]['load_data']; 
							}
						$i++;
						}
					$load_data = array_unique($load_data);
					foreach($load_data as $key => $filename){
					if($filename != ""){
					//讀取檔案 原始檔案
						$nn = 0;
						$handle = fopen($filename,"r");
						while(($data = @fgetcsv($handle,1000,",","'")) != false){
							$i = 0;	
							foreach($data as $k => $value){
								$aa[$nn][$i] = $value;
								$i++;
											
							}
						$nn++;
						}
						@fclose($handle);
						if(is_file('backup/'.$filename)){
							//讀取檔案 原始檔案
							$bb = 0;
							$handle = fopen('backup/'.$filename,"r");
							while(($data = @fgetcsv($handle,1000,",","'")) != false){
								$i = 0;	
								foreach($data as $k => $value){
									$backup[$bb][$i] = $value;
									$i++;			
								}
							$bb++;
							}
							@fclose($handle);
							$sensor_data_load_info_device = $Device->get_sensor_load_data_list_for_device($project_code,$key);
							foreach($sensor_data_load_info_device as $key => $value){
							$sensor_data = $Device->get_sensor_data($project_code,$value['device_code']);           //警告值.行動值.等等
									foreach($sensor_data as $k => $v){
										$top_active  = $v['top_active'];
										$down_active = $v['down_active']; 
										$top_alert   = $v['top_alert'];
										$down_alert  = $v['down_alert'];  
										$upper_limit = $v['limit_uper'];
										$lower_limit = $v['limit_lower']; 
										$unit		 = $v['unit'];
									}
								//echo $value['dat']."|".$value['formula']."|".$value['subsum']."<br>";
									$formula = $value['formula'];
									$dat = $value['dat'];
									$dat_1 = explode(',',$value['dat']);
									$start_val = $value['start_val'];
									$start_val_1 = explode(',',$value['start_val']);
									$subsum = $value['subsum'];
									$name = $value['name'];
									$project_code = $value['project_code'];
									$device_code = $value['device_code'];
									$formula_val = $value['formula_val'];
									$C5 = ($value['C5'] != '') ? $value['C5']:0;
									$C4 = ($value['C4'] != '') ? $value['C4']:0;
									$C3 = ($value['C3'] != '') ? $value['C3']:0;
									$C2 = ($value['C2'] != '') ? $value['C2']:0;
									$C1 = ($value['C1'] != '') ? $value['C1']:0;
									$C0 = ($value['C0'] != '') ? $value['C0']:0;
									$S2 = ($value['S2'] != '') ? $value['S2']:0;
									$S1 = ($value['S1'] != '') ? $value['S1']:0;
									$S0 = ($value['S0'] != '') ? $value['S0']:0;
									$F1 = ($value['F1'] != '') ? $value['F1']:0;
									$F0 = ($value['F0'] != '') ? $value['F0']:0;
									
									
									
									//fclose($filename);
									$search_final = count($aa) - 1;
									$total_default = 0;
									$j = 0;
									for($i=count($backup);$i<=$search_final;$i++){ //dat檔從第五列資料開始抓
									
									//欄位值有兩個時作為判斷
										if($dat_1[1] != ""){
											$mathself = $aa[$i][$dat_1[0]];
											$mathself_1 = $aa[$i][$dat_1[1]];
										}else{										
											//判斷溫度、日期、電壓
											switch($name){
												case "date":
													//日期初始化
													$start_time = strtotime("2015-01-01 00:00");
													switch(strlen($aa[$i][$dat+1])){
														case "1":
															$total_time = $start_time+($aa[$i][$dat+1]*60);
														break;
														
														case "2":
															$total_time = $start_time+($aa[$i][$dat+1]*60);
														break;
														
														case "3":
															$total_time = $start_time+(substr($aa[$i][$dat+1],0,1)*3600)+(substr($aa[$i][$dat+1],1,2)*60);
														break;
														
														case "4":
															$total_time = $start_time+(substr($aa[$i][$dat+1],0,2)*3600)+(substr($aa[$i][$dat+1],2,2)*60);
														break;
													}
													$sensor_date[] = $aa[$i][$dat]*86400+$total_time-86400;
												break;
												
												case "voltage":
													$sensor_voltage[] = $aa[$i][$dat];
												break;
												
												case "temperature":
													$sensor_temperature[] = $aa[$i][$dat];
													$temperature[] = $aa[$i][$dat];
												break;
												default:
													$mathself = $aa[$i][$dat];
												break;
											}
											//$mathself_1 = substr($aa[$i][$dat_1[1]],);
										}
										
										//初始值有兩個時作為判斷
										if($start_val_1[1] != ""){
											$default_val = $start_val_1[0];
											$default_val_1 = $start_val_1[1];
										}else{
											$default_val = $start_val;
											//$mathself_1 = substr($aa[$i][$dat_1[1]],);
										}
										
										//$mathself = 2;
										//$mathself_1 = 3;
										$total_sum = 0;
										
										
										
										//計算公式
										switch($formula_val){
											case '1':
												$total_sum = $C5*pow($mathself,5) + $C4*pow($mathself,4) + $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0;
												$total_default = $C5*pow($default_val,5) + $C4*pow($default_val,4) + $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0;
												//$total_sum += $val*$sum;
											break;
											
											case '2':
												$total_sum = $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0;
												$total_default = $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0;
											break;
											
											case '3':
												$total_sum =  $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0;
												$total_default = $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0;
											break;
											
											case '4':
												$total_sum = $C1*pow($mathself,1) + $C0;
												$total_default = $C1*pow($default_val,1) + $C0;
											break;
											
											case '5':
												$total_sum = $C5*pow($mathself_1,2) + $C4*$mathself*$mathself_1 + $C3*pow($mathself,2) + $C2*$mathself_1 + $C1*$mathself + $C0 + $val;
												$total_default = $C5*pow($default_val_1,2) + $C4*$default_val*$default_val_1 + $C3*pow($default_val,2) + $C2*$default_val_1 + $C1*$default_val + $C0 + $val;
											break;
											
											case '6':
												$total_sum = ($C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*$mathself + $C0)*($S2*pow($mathself_1,2) +  $S1*$mathself_1 + $S0)  + $F1*$mathself_1 + $F0 + $val;
												$total_default = ($C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*$default_val + $C0)*($S2*pow($default_val_1,2) +  $S1*$default_val_1 + $S0)  + $F1*$default_val_1 + $F0 + $val;
											break;
											
										}
										if($name != 'date' and $name != 'voltage' and $name != 'temperature'){
											$date = $sensor_date[$j];
											$total = $total_sum-$total_default;
											$Device->add_sensor_load_val($device_code,$name,$sensor_voltage[$i],$sensor_temperature[$i],$mathself,$total,$default_val,$top_alert,$down_alert,$top_active,$down_active,$upper_limit,$lower_limit,$date,$project_code,$filename,$mathself,time()+14400);
											$j++;
										}
										
									}
									
							}
							copy($filename, 'backup/'.$filename);
							
						}else{
							copy($filename, 'backup/'.$filename);
							$sensor_data_load_info_device = $Device->get_sensor_load_data_list_for_device($project_code,$key);
							foreach($sensor_data_load_info_device as $key => $value){
							$sensor_data = $Device->get_sensor_data($value['project_code'],$value['device_code']);           //警告值.行動值.等等
									foreach($sensor_data as $k => $v){
										$top_active  = $v['top_active'];
										$down_active = $v['down_active']; 
										$top_alert   = $v['top_alert'];
										$down_alert  = $v['down_alert'];  
										$upper_limit = $v['limit_uper'];
										$lower_limit = $v['limit_lower']; 
										$unit		 = $v['unit'];
									}
								//echo $value['dat']."|".$value['formula']."|".$value['subsum']."<br>";
									$formula = $value['formula'];
									$dat = $value['dat'];
									$dat_1 = explode(',',$value['dat']);
									$start_val = $value['start_val'];
									$start_val_1 = explode(',',$value['start_val']);
									$subsum = $value['subsum'];
									$name = $value['name'];
									$project_code = $value['project_code'];
									$device_code = $value['device_code'];
									$formula_val = $value['formula_val'];
									$C5 = ($value['C5'] != '') ? $value['C5']:0;
									$C4 = ($value['C4'] != '') ? $value['C4']:0;
									$C3 = ($value['C3'] != '') ? $value['C3']:0;
									$C2 = ($value['C2'] != '') ? $value['C2']:0;
									$C1 = ($value['C1'] != '') ? $value['C1']:0;
									$C0 = ($value['C0'] != '') ? $value['C0']:0;
									$S2 = ($value['S2'] != '') ? $value['S2']:0;
									$S1 = ($value['S1'] != '') ? $value['S1']:0;
									$S0 = ($value['S0'] != '') ? $value['S0']:0;
									$F1 = ($value['F1'] != '') ? $value['F1']:0;
									$F0 = ($value['F0'] != '') ? $value['F0']:0;
									
									
									
									//fclose($filename);
									$search_final = count($aa) - 1;
									$total_default = 0;
									$j = 0;
									for($i=0;$i<=$search_final;$i++){ //dat檔從第五列資料開始抓
									
									//欄位值有兩個時作為判斷
										if($dat_1[1] != ""){
											$mathself = $aa[$i][$dat_1[0]];
											$mathself_1 = $aa[$i][$dat_1[1]];
										}else{										
											//判斷溫度、日期、電壓
											switch($name){
												case "date":
													//日期初始化
													$start_time = strtotime("2015-01-01 00:00");
													switch(strlen($aa[$i][$dat+1])){
														case "1":
															$total_time = $start_time+($aa[$i][$dat+1]*60);
														break;
														
														case "2":
															$total_time = $start_time+($aa[$i][$dat+1]*60);
														break;
														
														case "3":
															$total_time = $start_time+(substr($aa[$i][$dat+1],0,1)*3600)+(substr($aa[$i][$dat+1],1,2)*60);
														break;
														
														case "4":
															$total_time = $start_time+(substr($aa[$i][$dat+1],0,2)*3600)+(substr($aa[$i][$dat+1],2,2)*60);
														break;
													}
													$sensor_date[] = $aa[$i][$dat]*86400+$total_time-86400;
												break;
												
												case "voltage":
													$sensor_voltage[] = $aa[$i][$dat];
												break;
												
												case "temperature":
													$sensor_temperature[] = $aa[$i][$dat];
													$temperature[] = $aa[$i][$dat];
												break;
												default:
													$mathself = $aa[$i][$dat];
												break;
											}
											//$mathself_1 = substr($aa[$i][$dat_1[1]],);
										}
										
										//初始值有兩個時作為判斷
										if($start_val_1[1] != ""){
											$default_val = $start_val_1[0];
											$default_val_1 = $start_val_1[1];
										}else{
											$default_val = $start_val;
											//$mathself_1 = substr($aa[$i][$dat_1[1]],);
										}
										
										//$mathself = 2;
										//$mathself_1 = 3;
										$total_sum = 0;
										
										
										
										//計算公式
										switch($formula_val){
											case '1':
												$total_sum = $C5*pow($mathself,5) + $C4*pow($mathself,4) + $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0;
												$total_default = $C5*pow($default_val,5) + $C4*pow($default_val,4) + $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0;
												//$total_sum += $val*$sum;
											break;
											
											case '2':
												$total_sum = $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0;
												$total_default = $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0;
											break;
											
											case '3':
												$total_sum =  $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0;
												$total_default = $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0;
											break;
											
											case '4':
												$total_sum = $C1*pow($mathself,1) + $C0;
												$total_default = $C1*pow($default_val,1) + $C0;
											break;
											
											case '5':
												$total_sum = $C5*pow($mathself_1,2) + $C4*$mathself*$mathself_1 + $C3*pow($mathself,2) + $C2*$mathself_1 + $C1*$mathself + $C0 + $val;
												$total_default = $C5*pow($default_val_1,2) + $C4*$default_val*$default_val_1 + $C3*pow($default_val,2) + $C2*$default_val_1 + $C1*$default_val + $C0 + $val;
											break;
											
											case '6':
												$total_sum = ($C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*$mathself + $C0)*($S2*pow($mathself_1,2) +  $S1*$mathself_1 + $S0)  + $F1*$mathself_1 + $F0 + $val;
												$total_default = ($C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*$default_val + $C0)*($S2*pow($default_val_1,2) +  $S1*$default_val_1 + $S0)  + $F1*$default_val_1 + $F0 + $val;
											break;
											
										}
										if($name != 'date' and $name != 'voltage' and $name != 'temperature'){
											$date = $sensor_date[$j];
											$total = $total_sum-$total_default;
											
											$Device->add_sensor_load_val($device_code,$name,$sensor_voltage[$i],$sensor_temperature[$i],$mathself,$total,$default_val,$top_alert,$down_alert,$top_active,$down_active,$upper_limit,$lower_limit,$date,$project_code,$filename,$mathself,time()+14400);
											$j++;
										}
										
									}
							}
						}
						
					}
						unset($aa);
						unset($backup);
					}				
                    ?>		
                </table>