get_sensor_load_data_list($project_code); $sensor_data_load_info_device = $Device->get_sensor_load_data_list($project_code); //print_r($sensor_data_load_info_device); //讀取檔案 $nn = 0; $handle = @fopen($filename ,"r"); while(($data = fgetcsv($handle,1000,",","'")) != false){ $i = 0; foreach($data as $key => $value){ $aa[$nn][$i] = $value; $i++; } $nn++; } fclose($handle); $packet = (@str_replace('"','',$aa[4][0]) == "") ? $aa[5][0]:$aa[4][0]; $number_of_key = (str_replace('"','',$aa[4][0]) == "") ? '5':'4'; $var = strtotime(str_replace('"','',$packet)); //copy($filename, 'backup/'.$filename); $bb=0; $handle_1 = @fopen('backup/'.$filename ,"r"); while(($data_1 = fgetcsv($handle_1,1000,",","'")) != false){ $i = 0; foreach($data_1 as $k => $v_2){ $back[$bb][$i] = $v_2; $i++; } $nn++; } fclose($handle_1); copy($filename, 'backup/'.$filename); if(!is_file('backup/'.$filename)){ $v_n = 0; foreach($sensor_data_load_info_device as $key => $value){ //判斷檔案是否有符合 if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature" or $filename == $value['load_data']) { $sensor_data = $Device->get_sensor_data($project_code,$value['device_code']); //警告值.行動值.等等 foreach($sensor_data as $k => $v){ $top_active[$v['sensor_id']] = $v['top_active']; $down_active[$v['sensor_id']]= $v['down_active']; $top_alert[$v['sensor_id']] = $v['top_alert']; $down_alert[$v['sensor_id']] = $v['down_alert']; $upper_limit[$v['sensor_id']] = $v['limit_uper']; $lower_limit[$v['sensor_id']] = $v['limit_lower']; $upper[$v['sensor_id']] = $v['upper_limit']; $lower[$v['sensor_id']] = $v['lower_limit']; $unit[$v['sensor_id']] = $v['unit']; } //echo $value['dat']."|".$value['formula']."|".$value['subsum']."
"; $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']; (@$sensor_data[$v_n]['device_code'] != $value['device_code']) ? $v_n = 0:''; if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature"){ $name = $value['name']; }else{ $name = $sensor_data[$v_n]['sensor_id']; $v_n++; } $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=$number_of_key;$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": $sensor_date[] = $aa[$i][$value['dat']]; break; case "voltage": $sensor_voltage[] = $aa[$i][$value['dat']]; break; case "temperature": $sensor_temperature[] = $aa[$i][$value['dat']]; $temperature[] = $aa[$i][$value['dat']]; break; default: $mathself = $aa[$i][$value['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; case '7': $total_sum = 0; break; case '8': $total_sum = 0; break; case '9': $total_sum = 0; break; case '0': $total_sum = 0; break; } //判斷sensor_name 如果是日期,電壓,溫度 不存入資料庫 if($name != 'date' and $name != 'voltage' and $name != 'temperature'){ $device_name = $Device->get_device_data($device_code); $Calculat = $total_sum - $total_default + $subsum; $notify_str = $project_name.$device_name['device_name'].$name; $notify_number = "於".str_replace('"','',$sensor_date[$j])."量測值".number_format($Calculat,2)."/".$unit[$value['name']]; ?> add_sensor_load_val($device_code,$value['name'],$sensor_voltage[$j],$sensor_temperature[$j],$mathself,$total,$default_val,$top_alert[$value['name']],$down_alert[$value['name']],$top_active[$value['name']],$down_active[$value['name']],$upper_limit[$value['name']],$lower_limit[$value['name']],$date,$project_code,$filename,$mathself,time()+14400); $j++; } }//for迴圈終點 } $num++; } }else{ $v_n = 0; foreach($sensor_data_load_info_device as $key => $value){ //判斷檔案是否有符合 if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature" or $filename == $value['load_data']) { $sensor_data = $Device->get_sensor_data($project_code,$value['device_code']); //警告值.行動值.等等 foreach($sensor_data as $k => $v){ $top_active[$v['sensor_id']] = $v['top_active']; $down_active[$v['sensor_id']]= $v['down_active']; $top_alert[$v['sensor_id']] = $v['top_alert']; $down_alert[$v['sensor_id']] = $v['down_alert']; $upper_limit[$v['sensor_id']] = $v['limit_uper']; $lower_limit[$v['sensor_id']] = $v['limit_lower']; $upper[$v['sensor_id']] = $v['upper_limit']; $lower[$v['sensor_id']] = $v['lower_limit']; $unit[$v['sensor_id']] = $v['unit']; } //echo $value['dat']."|".$value['formula']."|".$value['subsum']."
"; $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']; (@$sensor_data[$v_n]['device_code'] != $value['device_code']) ? $v_n = 0:''; if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature"){ $name = $value['name']; }else{ $name = $sensor_data[$v_n]['sensor_id']; $v_n++; } $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($back);$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": $sensor_date[] = $aa[$i][$value['dat']]; break; case "voltage": $sensor_voltage[] = $aa[$i][$value['dat']]; break; case "temperature": $sensor_temperature[] = $aa[$i][$value['dat']]; $temperature[] = $aa[$i][$value['dat']]; break; default: $mathself = $aa[$i][$value['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; case '7': $total_sum = 0; break; case '8': $total_sum = 0; break; case '9': $total_sum = 0; break; case '0': $total_sum = 0; break; } //判斷sensor_name 如果是日期,電壓,溫度 不存入資料庫 if($name != 'date' and $name != 'voltage' and $name != 'temperature'){ $device_name = $Device->get_device_data($device_code); $Calculat = $total_sum - $total_default + $subsum; $notify_str = $project_name.$device_name['device_name'].$name; $notify_number = "於".str_replace('"','',$sensor_date[$j])."量測值".number_format($Calculat,2)."/".$unit[$value['name']]; ?> add_sensor_load_val($device_code,$value['name'],$sensor_voltage[$j],$sensor_temperature[$j],$mathself,$total,$default_val,$top_alert[$value['name']],$down_alert[$value['name']],$top_active[$value['name']],$down_active[$value['name']],$upper_limit[$value['name']],$lower_limit[$value['name']],$date,$project_code,$filename,$mathself,time()+14400); $j++; } }//for迴圈終點 } $num++; } } } ?>