Commit 1ee0c71778693591e957adb4846a3de947d85593
0 parents
Exists in
master
first
Showing
7 changed files
with
1684 additions
and
0 deletions
 
Show diff stats
CR.php
| ... | ... | @@ -0,0 +1,450 @@ | 
| 1 | +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
| 2 | +<?PHP | |
| 3 | +define ('INDEX','http://52.74.132.133/'); | |
| 4 | +define ('SYSTEM_DBHOST','52.74.132.133:3306'); | |
| 5 | +define ('SYSTEM_DBNAME','sanlien'); | |
| 6 | +define ('SYSTEM_DBUSER','3944'); | |
| 7 | +define ('SYSTEM_DBPWD','12345'); | |
| 8 | +define ('USER_DEVICE_SENSOR','user_device_sensor'); | |
| 9 | +define ('USER_DEVICE_SENSOR_LOAD','user_device_sensor_load'); | |
| 10 | +define ('USER_CONTACT','user_contact'); | |
| 11 | +define ('USER_DEVICE','user_device'); | |
| 12 | +/************* 簡訊傳送設定 *******************/ | |
| 13 | +include_once('Device.cls.php'); | |
| 14 | +include_once('WADB.cls.php'); | |
| 15 | +$Device = new Device(); | |
| 16 | +?> | |
| 17 | + <table width="100%" border="1" cellpadding="0" cellspacing="0" style="text-align:center"> | |
| 18 | + <thead> | |
| 19 | + <tr> | |
| 20 | + <th style="text-align:center"><?PHP echo '裝置名稱'; ?></th> | |
| 21 | + <th style="text-align:center"><?PHP echo '欄位'; ?></th> | |
| 22 | + <th style="text-align:center"><?PHP echo '時間'; ?></th> | |
| 23 | + <th style="text-align:center"><?PHP echo '電壓'; ?></th> | |
| 24 | + <th style="text-align:center"><?PHP echo '溫度'; ?></th> | |
| 25 | + <th style="text-align:center"><?PHP echo '計算後'; ?></th> | |
| 26 | + <th style="text-align:center"><?PHP echo '初始值'; ?></th> | |
| 27 | + <th style="text-align:center"><?PHP echo '上-下行動值'; ?></th> | |
| 28 | + <th style="text-align:center"><?PHP echo '上-下警戒值'; ?></th> | |
| 29 | + <th style="text-align:center"><?PHP echo '擷取上-下值'; ?></th> | |
| 30 | + <th style="text-align:center"><?PHP echo '原始上-下值'; ?></th> | |
| 31 | + <th style="text-align:center"><?PHP echo '通知者'; ?></th> | |
| 32 | + | |
| 33 | + </tr> | |
| 34 | + </thead> | |
| 35 | + <?PHP | |
| 36 | + $filename = "CR1000_TNBR_Table1.dat"; | |
| 37 | + $project_code = 'C25104'; | |
| 38 | + if($filename != ""){ | |
| 39 | + $num = 0; | |
| 40 | + $sensor_data_load_info = $Device->get_sensor_load_data_list($project_code); | |
| 41 | + $sensor_data_load_info_device = $Device->get_sensor_load_data_list($project_code); | |
| 42 | + //print_r($sensor_data_load_info_device); | |
| 43 | + | |
| 44 | + //讀取檔案 | |
| 45 | + $nn = 0; | |
| 46 | + $handle = @fopen($filename ,"r"); | |
| 47 | + while(($data = fgetcsv($handle,1000,",","'")) != false){ | |
| 48 | + $i = 0; | |
| 49 | + foreach($data as $key => $value){ | |
| 50 | + $aa[$nn][$i] = $value; | |
| 51 | + $i++; | |
| 52 | + | |
| 53 | + } | |
| 54 | + $nn++; | |
| 55 | + } | |
| 56 | + fclose($handle); | |
| 57 | + $packet = (@str_replace('"','',$aa[4][0]) == "") ? $aa[5][0]:$aa[4][0]; | |
| 58 | + $number_of_key = (str_replace('"','',$aa[4][0]) == "") ? '5':'4'; | |
| 59 | + $var = strtotime(str_replace('"','',$packet)); | |
| 60 | + //copy($filename, 'backup/'.$filename); | |
| 61 | + | |
| 62 | + $bb=0; | |
| 63 | + $handle_1 = @fopen('backup/'.$filename ,"r"); | |
| 64 | + while(($data_1 = fgetcsv($handle_1,1000,",","'")) != false){ | |
| 65 | + $i = 0; | |
| 66 | + foreach($data_1 as $k => $v_2){ | |
| 67 | + $back[$bb][$i] = $v_2; | |
| 68 | + $i++; | |
| 69 | + | |
| 70 | + } | |
| 71 | + $nn++; | |
| 72 | + } | |
| 73 | + fclose($handle_1); | |
| 74 | + copy($filename, 'backup/'.$filename); | |
| 75 | + if(!is_file('backup/'.$filename)){ | |
| 76 | + | |
| 77 | + $v_n = 0; | |
| 78 | + foreach($sensor_data_load_info_device as $key => $value){ | |
| 79 | + //判斷檔案是否有符合 | |
| 80 | + | |
| 81 | + if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature" or $filename == $value['load_data']) { | |
| 82 | + $sensor_data = $Device->get_sensor_data($project_code,$value['device_code']); //警告值.行動值.等等 | |
| 83 | + foreach($sensor_data as $k => $v){ | |
| 84 | + $top_active[$v['sensor_id']] = $v['top_active']; | |
| 85 | + $down_active[$v['sensor_id']]= $v['down_active']; | |
| 86 | + $top_alert[$v['sensor_id']] = $v['top_alert']; | |
| 87 | + $down_alert[$v['sensor_id']] = $v['down_alert']; | |
| 88 | + $upper_limit[$v['sensor_id']] = $v['limit_uper']; | |
| 89 | + $lower_limit[$v['sensor_id']] = $v['limit_lower']; | |
| 90 | + $upper[$v['sensor_id']] = $v['upper_limit']; | |
| 91 | + $lower[$v['sensor_id']] = $v['lower_limit']; | |
| 92 | + $unit[$v['sensor_id']] = $v['unit']; | |
| 93 | + } | |
| 94 | + //echo $value['dat']."|".$value['formula']."|".$value['subsum']."<br>"; | |
| 95 | + $formula = $value['formula']; | |
| 96 | + $dat = $value['dat']; | |
| 97 | + $dat_1 = explode(',',$value['dat']); | |
| 98 | + $start_val = $value['start_val']; | |
| 99 | + $start_val_1 = explode(',',$value['start_val']); | |
| 100 | + $subsum = $value['subsum']; | |
| 101 | + (@$sensor_data[$v_n]['device_code'] != $value['device_code']) ? $v_n = 0:''; | |
| 102 | + if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature"){ | |
| 103 | + $name = $value['name']; | |
| 104 | + }else{ | |
| 105 | + $name = $sensor_data[$v_n]['sensor_id']; | |
| 106 | + $v_n++; | |
| 107 | + } | |
| 108 | + $project_code = $value['project_code']; | |
| 109 | + $device_code = $value['device_code']; | |
| 110 | + $formula_val = $value['formula_val']; | |
| 111 | + $C5 = ($value['C5'] != '') ? $value['C5']:0; | |
| 112 | + $C4 = ($value['C4'] != '') ? $value['C4']:0; | |
| 113 | + $C3 = ($value['C3'] != '') ? $value['C3']:0; | |
| 114 | + $C2 = ($value['C2'] != '') ? $value['C2']:0; | |
| 115 | + $C1 = ($value['C1'] != '') ? $value['C1']:0; | |
| 116 | + $C0 = ($value['C0'] != '') ? $value['C0']:0; | |
| 117 | + $S2 = ($value['S2'] != '') ? $value['S2']:0; | |
| 118 | + $S1 = ($value['S1'] != '') ? $value['S1']:0; | |
| 119 | + $S0 = ($value['S0'] != '') ? $value['S0']:0; | |
| 120 | + $F1 = ($value['F1'] != '') ? $value['F1']:0; | |
| 121 | + $F0 = ($value['F0'] != '') ? $value['F0']:0; | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + //fclose($filename); | |
| 126 | + $search_final = count($aa) - 1; | |
| 127 | + $total_default = 0; | |
| 128 | + $j = 0; | |
| 129 | + for($i=$number_of_key;$i<=$search_final;$i++){ //dat檔從第五列資料開始抓 | |
| 130 | + //欄位值有兩個時作為判斷 | |
| 131 | + if(@$dat_1[1] != ""){ | |
| 132 | + $mathself = $aa[$i][$dat_1[0]]; | |
| 133 | + $mathself_1 = $aa[$i][$dat_1[1]]; | |
| 134 | + }else{ | |
| 135 | + //判斷溫度、日期、電壓 | |
| 136 | + switch($name){ | |
| 137 | + case "date": | |
| 138 | + $sensor_date[] = $aa[$i][$value['dat']]; | |
| 139 | + break; | |
| 140 | + | |
| 141 | + case "voltage": | |
| 142 | + $sensor_voltage[] = $aa[$i][$value['dat']]; | |
| 143 | + break; | |
| 144 | + | |
| 145 | + case "temperature": | |
| 146 | + $sensor_temperature[] = $aa[$i][$value['dat']]; | |
| 147 | + $temperature[] = $aa[$i][$value['dat']]; | |
| 148 | + break; | |
| 149 | + default: | |
| 150 | + $mathself = $aa[$i][$value['dat']]; | |
| 151 | + break; | |
| 152 | + } | |
| 153 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 154 | + } | |
| 155 | + | |
| 156 | + //初始值有兩個時作為判斷 | |
| 157 | + if(@$start_val_1[1] != ""){ | |
| 158 | + $default_val = $start_val_1[0]; | |
| 159 | + $default_val_1 = $start_val_1[1]; | |
| 160 | + }else{ | |
| 161 | + $default_val = $start_val; | |
| 162 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 163 | + } | |
| 164 | + | |
| 165 | + //$mathself = 2; | |
| 166 | + //$mathself_1 = 3; | |
| 167 | + $total_sum = 0; | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + //計算公式 | |
| 172 | + switch($formula_val){ | |
| 173 | + case '1': | |
| 174 | + $total_sum = $C5*pow($mathself,5) + $C4*pow($mathself,4) + $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 175 | + $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; | |
| 176 | + //$total_sum += $val*$sum; | |
| 177 | + break; | |
| 178 | + | |
| 179 | + case '2': | |
| 180 | + $total_sum = $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 181 | + $total_default = $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 182 | + break; | |
| 183 | + | |
| 184 | + case '3': | |
| 185 | + $total_sum = $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 186 | + $total_default = $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 187 | + break; | |
| 188 | + | |
| 189 | + case '4': | |
| 190 | + $total_sum = $C1*pow($mathself,1) + $C0; | |
| 191 | + $total_default = $C1*pow($default_val,1) + $C0; | |
| 192 | + break; | |
| 193 | + | |
| 194 | + case '5': | |
| 195 | + $total_sum = $C5*pow($mathself_1,2) + $C4*$mathself*$mathself_1 + $C3*pow($mathself,2) + $C2*$mathself_1 + $C1*$mathself + $C0 + $val; | |
| 196 | + $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; | |
| 197 | + break; | |
| 198 | + | |
| 199 | + case '6': | |
| 200 | + $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; | |
| 201 | + $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; | |
| 202 | + break; | |
| 203 | + | |
| 204 | + case '7': | |
| 205 | + $total_sum = 0; | |
| 206 | + break; | |
| 207 | + | |
| 208 | + case '8': | |
| 209 | + $total_sum = 0; | |
| 210 | + break; | |
| 211 | + | |
| 212 | + case '9': | |
| 213 | + $total_sum = 0; | |
| 214 | + break; | |
| 215 | + | |
| 216 | + case '0': | |
| 217 | + $total_sum = 0; | |
| 218 | + break; | |
| 219 | + | |
| 220 | + } | |
| 221 | + | |
| 222 | + //判斷sensor_name 如果是日期,電壓,溫度 不存入資料庫 | |
| 223 | + if($name != 'date' and $name != 'voltage' and $name != 'temperature'){ | |
| 224 | + $device_name = $Device->get_device_data($device_code); | |
| 225 | + $Calculat = $total_sum - $total_default + $subsum; | |
| 226 | + $notify_str = $project_name.$device_name['device_name'].$name; | |
| 227 | + $notify_number = "於".str_replace('"','',$sensor_date[$j])."量測值".number_format($Calculat,2)."/".$unit[$value['name']]; | |
| 228 | + ?> | |
| 229 | + <tr data-gt="<?php echo $name ?>" class="<?php echo ($key % 2 == 0) ? 'aa' : 'bb'; ?>"> | |
| 230 | + <td><?php echo $value['name'] ?></td> | |
| 231 | + <td><?php echo $value['dat'] ?></td> | |
| 232 | + <td><?php echo $sensor_date[$j] = ($sensor_date[$j] != "") ? $sensor_date[$j]:$sensor_date[$j+1];?></td> | |
| 233 | + <td><?php echo $sensor_voltage[$j] = ($sensor_voltage[$j] != "") ? $sensor_voltage[$j]:$sensor_voltage[$j+1]; ?></td> | |
| 234 | + <td><?php echo $sensor_temperature[$j] = ($sensor_temperature[$j] != "") ? $sensor_temperature[$j]:$sensor_temperature[$j+1]; ?></td> | |
| 235 | + <td><?php echo $Calculat; ?></td> | |
| 236 | + <td><?php echo $default_val ?></td> | |
| 237 | + <td><?php echo $top_active[$value['name']]." - " .$down_active[$value['name']]; ?></td> | |
| 238 | + <td><?php echo $top_alert[$value['name']]." - " .$down_alert[$value['name']]; ?></td> | |
| 239 | + <td><?php echo $upper_limit[$value['name']]." - " .$lower_limit[$value['name']]; ?></td> | |
| 240 | + <td><?php echo $upper[$value['name']]." - " .$lower[$value['name']]; ?></td> | |
| 241 | + <td> | |
| 242 | + | |
| 243 | + | |
| 244 | + </td> | |
| 245 | + </tr> | |
| 246 | + <?PHP | |
| 247 | + //檔案內時間欄位$sensor_date[$i] | |
| 248 | + | |
| 249 | + $date = strtotime(str_replace('"','',$sensor_date[$j])); | |
| 250 | + $total = $total_sum-$total_default+$subsum; | |
| 251 | + $Device->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); | |
| 252 | + $j++; | |
| 253 | + } | |
| 254 | + | |
| 255 | + }//for迴圈終點 | |
| 256 | + | |
| 257 | + } | |
| 258 | + $num++; | |
| 259 | + } | |
| 260 | + }else{ | |
| 261 | + $v_n = 0; | |
| 262 | + foreach($sensor_data_load_info_device as $key => $value){ | |
| 263 | + //判斷檔案是否有符合 | |
| 264 | + | |
| 265 | + if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature" or $filename == $value['load_data']) { | |
| 266 | + $sensor_data = $Device->get_sensor_data($project_code,$value['device_code']); //警告值.行動值.等等 | |
| 267 | + foreach($sensor_data as $k => $v){ | |
| 268 | + $top_active[$v['sensor_id']] = $v['top_active']; | |
| 269 | + $down_active[$v['sensor_id']]= $v['down_active']; | |
| 270 | + $top_alert[$v['sensor_id']] = $v['top_alert']; | |
| 271 | + $down_alert[$v['sensor_id']] = $v['down_alert']; | |
| 272 | + $upper_limit[$v['sensor_id']] = $v['limit_uper']; | |
| 273 | + $lower_limit[$v['sensor_id']] = $v['limit_lower']; | |
| 274 | + $upper[$v['sensor_id']] = $v['upper_limit']; | |
| 275 | + $lower[$v['sensor_id']] = $v['lower_limit']; | |
| 276 | + $unit[$v['sensor_id']] = $v['unit']; | |
| 277 | + } | |
| 278 | + //echo $value['dat']."|".$value['formula']."|".$value['subsum']."<br>"; | |
| 279 | + $formula = $value['formula']; | |
| 280 | + $dat = $value['dat']; | |
| 281 | + $dat_1 = explode(',',$value['dat']); | |
| 282 | + $start_val = $value['start_val']; | |
| 283 | + $start_val_1 = explode(',',$value['start_val']); | |
| 284 | + $subsum = $value['subsum']; | |
| 285 | + (@$sensor_data[$v_n]['device_code'] != $value['device_code']) ? $v_n = 0:''; | |
| 286 | + if ($value['name'] == "voltage" or $value['name'] == "date" or $value['name'] == "temperature"){ | |
| 287 | + $name = $value['name']; | |
| 288 | + }else{ | |
| 289 | + $name = $sensor_data[$v_n]['sensor_id']; | |
| 290 | + $v_n++; | |
| 291 | + } | |
| 292 | + $project_code = $value['project_code']; | |
| 293 | + $device_code = $value['device_code']; | |
| 294 | + $formula_val = $value['formula_val']; | |
| 295 | + $C5 = ($value['C5'] != '') ? $value['C5']:0; | |
| 296 | + $C4 = ($value['C4'] != '') ? $value['C4']:0; | |
| 297 | + $C3 = ($value['C3'] != '') ? $value['C3']:0; | |
| 298 | + $C2 = ($value['C2'] != '') ? $value['C2']:0; | |
| 299 | + $C1 = ($value['C1'] != '') ? $value['C1']:0; | |
| 300 | + $C0 = ($value['C0'] != '') ? $value['C0']:0; | |
| 301 | + $S2 = ($value['S2'] != '') ? $value['S2']:0; | |
| 302 | + $S1 = ($value['S1'] != '') ? $value['S1']:0; | |
| 303 | + $S0 = ($value['S0'] != '') ? $value['S0']:0; | |
| 304 | + $F1 = ($value['F1'] != '') ? $value['F1']:0; | |
| 305 | + $F0 = ($value['F0'] != '') ? $value['F0']:0; | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + //fclose($filename); | |
| 310 | + $search_final = count($aa) - 1; | |
| 311 | + $total_default = 0; | |
| 312 | + $j = 0; | |
| 313 | + for($i=count($back);$i<=$search_final;$i++){ //dat檔從第五列資料開始抓 | |
| 314 | + //欄位值有兩個時作為判斷 | |
| 315 | + if(@$dat_1[1] != ""){ | |
| 316 | + $mathself = $aa[$i][$dat_1[0]]; | |
| 317 | + $mathself_1 = $aa[$i][$dat_1[1]]; | |
| 318 | + }else{ | |
| 319 | + //判斷溫度、日期、電壓 | |
| 320 | + switch($name){ | |
| 321 | + case "date": | |
| 322 | + $sensor_date[] = $aa[$i][$value['dat']]; | |
| 323 | + break; | |
| 324 | + | |
| 325 | + case "voltage": | |
| 326 | + $sensor_voltage[] = $aa[$i][$value['dat']]; | |
| 327 | + break; | |
| 328 | + | |
| 329 | + case "temperature": | |
| 330 | + $sensor_temperature[] = $aa[$i][$value['dat']]; | |
| 331 | + $temperature[] = $aa[$i][$value['dat']]; | |
| 332 | + break; | |
| 333 | + default: | |
| 334 | + $mathself = $aa[$i][$value['dat']]; | |
| 335 | + break; | |
| 336 | + } | |
| 337 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 338 | + } | |
| 339 | + | |
| 340 | + //初始值有兩個時作為判斷 | |
| 341 | + if(@$start_val_1[1] != ""){ | |
| 342 | + $default_val = $start_val_1[0]; | |
| 343 | + $default_val_1 = $start_val_1[1]; | |
| 344 | + }else{ | |
| 345 | + $default_val = $start_val; | |
| 346 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 347 | + } | |
| 348 | + | |
| 349 | + //$mathself = 2; | |
| 350 | + //$mathself_1 = 3; | |
| 351 | + $total_sum = 0; | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + //計算公式 | |
| 356 | + switch($formula_val){ | |
| 357 | + case '1': | |
| 358 | + $total_sum = $C5*pow($mathself,5) + $C4*pow($mathself,4) + $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 359 | + $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; | |
| 360 | + //$total_sum += $val*$sum; | |
| 361 | + break; | |
| 362 | + | |
| 363 | + case '2': | |
| 364 | + $total_sum = $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 365 | + $total_default = $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 366 | + break; | |
| 367 | + | |
| 368 | + case '3': | |
| 369 | + $total_sum = $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 370 | + $total_default = $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 371 | + break; | |
| 372 | + | |
| 373 | + case '4': | |
| 374 | + $total_sum = $C1*pow($mathself,1) + $C0; | |
| 375 | + $total_default = $C1*pow($default_val,1) + $C0; | |
| 376 | + break; | |
| 377 | + | |
| 378 | + case '5': | |
| 379 | + $total_sum = $C5*pow($mathself_1,2) + $C4*$mathself*$mathself_1 + $C3*pow($mathself,2) + $C2*$mathself_1 + $C1*$mathself + $C0 + $val; | |
| 380 | + $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; | |
| 381 | + break; | |
| 382 | + | |
| 383 | + case '6': | |
| 384 | + $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; | |
| 385 | + $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; | |
| 386 | + break; | |
| 387 | + | |
| 388 | + case '7': | |
| 389 | + $total_sum = 0; | |
| 390 | + break; | |
| 391 | + | |
| 392 | + case '8': | |
| 393 | + $total_sum = 0; | |
| 394 | + break; | |
| 395 | + | |
| 396 | + case '9': | |
| 397 | + $total_sum = 0; | |
| 398 | + break; | |
| 399 | + | |
| 400 | + case '0': | |
| 401 | + $total_sum = 0; | |
| 402 | + break; | |
| 403 | + | |
| 404 | + } | |
| 405 | + | |
| 406 | + //判斷sensor_name 如果是日期,電壓,溫度 不存入資料庫 | |
| 407 | + if($name != 'date' and $name != 'voltage' and $name != 'temperature'){ | |
| 408 | + $device_name = $Device->get_device_data($device_code); | |
| 409 | + $Calculat = $total_sum - $total_default + $subsum; | |
| 410 | + $notify_str = $project_name.$device_name['device_name'].$name; | |
| 411 | + $notify_number = "於".str_replace('"','',$sensor_date[$j])."量測值".number_format($Calculat,2)."/".$unit[$value['name']]; | |
| 412 | + ?> | |
| 413 | + <tr data-gt="<?php echo $name ?>" class="<?php echo ($key % 2 == 0) ? 'aa' : 'bb'; ?>"> | |
| 414 | + <td><?php echo $value['name'] ?></td> | |
| 415 | + <td><?php echo $value['dat'] ?></td> | |
| 416 | + <td><?php echo $sensor_date[$j] = ($sensor_date[$j] != "") ? $sensor_date[$j]:$sensor_date[$j+1];?></td> | |
| 417 | + <td><?php echo $sensor_voltage[$j] = ($sensor_voltage[$j] != "") ? $sensor_voltage[$j]:$sensor_voltage[$j+1]; ?></td> | |
| 418 | + <td><?php echo $sensor_temperature[$j] = ($sensor_temperature[$j] != "") ? $sensor_temperature[$j]:$sensor_temperature[$j+1]; ?></td> | |
| 419 | + <td><?php echo $Calculat; ?></td> | |
| 420 | + <td><?php echo $default_val ?></td> | |
| 421 | + <td><?php echo $top_active[$value['name']]." - " .$down_active[$value['name']]; ?></td> | |
| 422 | + <td><?php echo $top_alert[$value['name']]." - " .$down_alert[$value['name']]; ?></td> | |
| 423 | + <td><?php echo $upper_limit[$value['name']]." - " .$lower_limit[$value['name']]; ?></td> | |
| 424 | + <td><?php echo $upper[$value['name']]." - " .$lower[$value['name']]; ?></td> | |
| 425 | + <td> | |
| 426 | + | |
| 427 | + | |
| 428 | + </td> | |
| 429 | + </tr> | |
| 430 | + <?PHP | |
| 431 | + //檔案內時間欄位$sensor_date[$i] | |
| 432 | + | |
| 433 | + $date = strtotime(str_replace('"','',$sensor_date[$j])); | |
| 434 | + $total = $total_sum-$total_default+$subsum; | |
| 435 | + $Device->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); | |
| 436 | + $j++; | |
| 437 | + } | |
| 438 | + | |
| 439 | + }//for迴圈終點 | |
| 440 | + | |
| 441 | + } | |
| 442 | + $num++; | |
| 443 | + } | |
| 444 | + } | |
| 445 | + } | |
| 446 | + | |
| 447 | + | |
| 448 | + ?> | |
| 449 | + </table> | |
| 450 | + | ... | ... | 
CR1000_TNBR_Table1.dat
| ... | ... | @@ -0,0 +1,40 @@ | 
| 1 | +"TOA5","CR1000_TNBR","CR1000","20787","CR1000.Std.15","CPU:CR1000_Manjung 8 channel 1min.CR1","15719","Table1" | |
| 2 | +"TIMESTAMP","RECORD","BattV","PTemp_C","Temp_C(1)","Temp_C(2)","Temp_C(3)","Temp_C(4)","Temp_C(5)","Temp_C(6)","Temp_C(7)","Temp_C(8)" | |
| 3 | +"TS","RN","Volts","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C" | |
| 4 | +"","","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp" | |
| 5 | +"2016-05-30 16:30:00",0,12.93,33.47,369.3,373.2,362.7,"NAN",33.96,"NAN",321.5,33.39 | |
| 6 | +"2016-05-30 16:31:00",1,12.93,33.43,369.6,373.4,363,"NAN",34.25,"NAN",321.7,33.52 | |
| 7 | +"2016-05-30 16:32:00",2,12.93,33.4,369.7,373.6,363.2,"NAN",33.4,210.2,321.8,33.56 | |
| 8 | +"2016-05-30 16:33:00",3,12.93,33.43,369.6,373.4,363.3,322.5,33.76,210.6,322,33.43 | |
| 9 | +"2016-05-30 16:34:00",4,12.92,33.43,369.5,373.3,363.2,322,33.92,210.6,321.8,33.27 | |
| 10 | +"2016-05-30 16:35:00",5,12.93,33.4,369.1,372.8,362.8,321.2,34.05,210.5,321.5,33.4 | |
| 11 | +"2016-05-30 16:36:00",6,12.93,33.4,368.6,372.5,362.3,320.5,33.97,"NAN",320.7,33.4 | |
| 12 | +"2016-05-30 16:37:00",7,12.93,33.4,368.2,372.1,361.9,319.7,34.05,"NAN",320.2,33.24 | |
| 13 | +"2016-05-30 16:38:00",8,12.93,33.4,367.8,371.7,"NAN",317.2,34.21,"NAN",319.4,33.56 | |
| 14 | +"2016-05-30 16:39:00",9,12.93,33.32,367.2,371.1,361.5,315.5,34.14,216.3,318.5,33.65 | |
| 15 | +"2016-05-30 16:40:00",10,12.93,33.29,366.8,370.8,361.1,315.8,33.94,215,317.7,32.8 | |
| 16 | +"2016-05-30 16:41:00",11,12.93,33.29,366.5,370.6,360.8,315.8,34.01,214.3,317.6,33.93 | |
| 17 | +"2016-05-30 16:42:00",12,12.93,33.29,366.4,370.8,360.6,315.2,33.93,212.1,317.1,33.85 | |
| 18 | +"2016-05-30 16:43:00",13,12.93,33.29,366.5,370.8,360.6,313.8,33.85,211.9,316.8,33.85 | |
| 19 | +"2016-05-30 16:44:00",14,12.93,33.29,366.9,371.1,360.8,313.9,33.85,212.1,316.4,33.85 | |
| 20 | +"2016-05-30 16:45:00",15,12.93,33.25,367.4,371.5,361.2,314.6,34.22,"NAN",316.3,34.14 | |
| 21 | +"2016-05-30 16:46:00",16,12.92,33.21,367.9,371.9,361.6,314.5,34.26,"NAN",316.4,34.26 | |
| 22 | +"2016-05-30 16:47:00",17,12.94,33.17,368.3,372.4,362,314.1,34.06,211.9,316.6,34.22 | |
| 23 | +"2016-05-30 16:48:00",18,12.94,33.17,368.7,372.7,362.4,314,33.74,213.4,316.6,33.74 | |
| 24 | +"2016-05-30 16:49:00",19,12.94,33.1,368.9,373.1,362.7,314.5,34.15,213.7,316.6,34.15 | |
| 25 | +"2016-05-30 16:50:00",20,12.93,32.99,369.1,373.1,363,313.8,33.71,214.2,316.5,33.71 | |
| 26 | +"2016-05-30 16:51:00",21,12.94,32.92,369.1,373.2,"NAN",311.7,33.64,214.5,315.9,33.32 | |
| 27 | +"2016-05-30 16:52:00",22,12.94,32.81,369.1,372.9,"NAN",311,33.53,215,315.3,33.37 | |
| 28 | +"2016-05-30 16:53:00",23,12.94,32.77,368.9,372.7,363,310.2,33.41,217.8,314.7,33.33 | |
| 29 | +"2016-05-30 16:54:00",24,12.95,32.77,368.7,372.6,362.9,310,33.01,217.6,314,32.85 | |
| 30 | +"2016-05-30 16:55:00",25,12.93,32.77,368.2,372.1,362.6,308.4,32.93,217.5,313.2,32.85 | |
| 31 | +"2016-05-30 16:56:00",26,12.95,32.73,367.8,371.6,362.3,308,32.65,217.1,312.4,32.65 | |
| 32 | +"2016-05-30 16:57:00",27,12.94,32.77,367.4,371.3,361.9,306.9,32.53,217.1,311.5,32.53 | |
| 33 | +"2016-05-30 16:58:00",28,12.93,32.81,367.1,370.9,361.7,306.9,32.56,217,310.7,32.56 | |
| 34 | +"2016-05-30 16:59:00",29,12.94,32.81,366.7,370.1,361.3,307.3,32.56,210.4,310.2,32.4 | |
| 35 | +"2016-05-30 17:00:00",30,12.93,32.84,366.4,369.8,361.1,309.2,32.84,212.3,310.1,32.76 | |
| 36 | +"2016-05-30 17:01:00",31,12.93,32.84,366.4,370,360.9,310.1,33.25,211.7,310.3,33.08 | |
| 37 | +"2016-05-30 17:02:00",32,12.94,32.88,366.5,370.2,360.8,309.2,32.96,211.6,310.5,32.72 | |
| 38 | +"2016-05-30 17:03:00",33,12.94,32.88,366.6,370.3,360.7,308,33.04,212,310.3,32.72 | |
| 39 | +"2016-05-30 17:04:00",34,12.94,32.88,366.8,370.4,"NAN",308.3,33.04,204.8,310.4,32.72 | |
| 40 | + | ... | ... | 
Device.cls.php
| ... | ... | @@ -0,0 +1,614 @@ | 
| 1 | +<? | |
| 2 | +date_default_timezone_set('Asia/Taipei'); | |
| 3 | +class Device{ | |
| 4 | + | |
| 5 | + var $db; | |
| 6 | + | |
| 7 | + //建構函式 | |
| 8 | + public function Device(){ | |
| 9 | + $this->db = new WADB(SYSTEM_DBHOST, SYSTEM_DBNAME, SYSTEM_DBUSER, SYSTEM_DBPWD); | |
| 10 | + return true; | |
| 11 | + } | |
| 12 | + | |
| 13 | + //建立使用者帳號 | |
| 14 | + public function add_device_data($data){ | |
| 15 | + foreach($data as $key => $value){ | |
| 16 | + $$key = mysql_real_escape_string($value); | |
| 17 | + } | |
| 18 | + $device_code = $this->rand_user_code(); | |
| 19 | + if($this->check_company_name($device_name) == '0'){ | |
| 20 | + $sql = "insert into ".USER_DEVICE." | |
| 21 | + ( | |
| 22 | + project_code, | |
| 23 | + device_code, | |
| 24 | + device_name, | |
| 25 | + device_name_short, | |
| 26 | + start_number, | |
| 27 | + end_number, | |
| 28 | + creater, | |
| 29 | + time | |
| 30 | + ) | |
| 31 | + value | |
| 32 | + ( | |
| 33 | + '".$project_code."', | |
| 34 | + '".$device_code."', | |
| 35 | + '".$device_name."', | |
| 36 | + '".$device_name_short."', | |
| 37 | + '".$start_number."', | |
| 38 | + '".$end_number."', | |
| 39 | + '".$creater."', | |
| 40 | + '".time()."' | |
| 41 | + )"; | |
| 42 | + $this->db->insertRecords($sql); | |
| 43 | + $return['success'] = true; | |
| 44 | + $return['data'] = $device_code; | |
| 45 | + }else{ | |
| 46 | + $return['error'] = '儀器名稱重複'; | |
| 47 | + } | |
| 48 | + return $return; | |
| 49 | + } | |
| 50 | + | |
| 51 | + //產生使用者編號 | |
| 52 | + private function rand_user_code(){ | |
| 53 | + $rand =0; | |
| 54 | + while (true){ | |
| 55 | + $rand = rand(10000,99999); | |
| 56 | + $count = $this->check_company_code($rand); | |
| 57 | + if ($count==0){ | |
| 58 | + break; | |
| 59 | + } | |
| 60 | + } | |
| 61 | + return $rand; | |
| 62 | + } | |
| 63 | + | |
| 64 | + //判斷公司編號是否重複 | |
| 65 | + public function check_company_code($rand){ | |
| 66 | + $sql = "select | |
| 67 | + count(device_code) as count | |
| 68 | + from | |
| 69 | + ".USER_DEVICE." | |
| 70 | + where | |
| 71 | + device_code='".$rand."'"; | |
| 72 | + $retStr = $this->db->selectRecords($sql); | |
| 73 | + return $retStr['0']['count']; | |
| 74 | + } | |
| 75 | + | |
| 76 | + //判斷公司名稱是否重複 | |
| 77 | + public function check_company_name($device_name){ | |
| 78 | + $device_name = mysql_real_escape_string($device_name); | |
| 79 | + $sql = "select | |
| 80 | + count(device_name) as count | |
| 81 | + from | |
| 82 | + ".USER_DEVICE." | |
| 83 | + where | |
| 84 | + device_name='".$device_name."'"; | |
| 85 | + $retStr = $this->db->selectRecords($sql); | |
| 86 | + return $retStr['0']['count']; | |
| 87 | + } | |
| 88 | + | |
| 89 | + //判斷 Email格式 是否正確 | |
| 90 | + private function isValidEmail($email){ | |
| 91 | + return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email); | |
| 92 | + } | |
| 93 | + | |
| 94 | + | |
| 95 | + //建立專案資料夾 | |
| 96 | + public function Copy_File($src,$dst){ | |
| 97 | + $dir = opendir($src); | |
| 98 | + @mkdir($dst); | |
| 99 | + while(false !== ( $file = readdir($dir)) ) { | |
| 100 | + if (( $file != '.' ) && ( $file != '..' )) { | |
| 101 | + if ( is_dir($src . '/' . $file) ) { | |
| 102 | + $this->Copy_File($src . '/' . $file,$dst . '/' . $file); | |
| 103 | + } | |
| 104 | + else { | |
| 105 | + copy($src . '/' . $file,$dst . '/' . $file); | |
| 106 | + } | |
| 107 | + } | |
| 108 | + } | |
| 109 | + closedir($dir); | |
| 110 | + } | |
| 111 | + | |
| 112 | + //取得儀器清單 | |
| 113 | + public function device_list($project_code){ | |
| 114 | + $project_code = mysql_real_escape_string($project_code); | |
| 115 | + $sql = "select | |
| 116 | + project_code, | |
| 117 | + device_code, | |
| 118 | + device_name, | |
| 119 | + device_name_short, | |
| 120 | + start_number, | |
| 121 | + end_number | |
| 122 | + from | |
| 123 | + ".USER_DEVICE." | |
| 124 | + where | |
| 125 | + project_code = '".$project_code."' "; | |
| 126 | + $retStr = $this->db->selectRecords($sql); | |
| 127 | + return $retStr; | |
| 128 | + } | |
| 129 | + | |
| 130 | + //取得使用者資訊 | |
| 131 | + public function get_user_data($user_code){ | |
| 132 | + $user_code = mysql_real_escape_string($user_code); | |
| 133 | + $sql = "select | |
| 134 | + user_code, | |
| 135 | + user_name, | |
| 136 | + user_account, | |
| 137 | + user_passwd | |
| 138 | + from | |
| 139 | + ".USER_LIST." | |
| 140 | + where | |
| 141 | + user_code = '".$user_code."' "; | |
| 142 | + $retStr = $this->db->selectRecords($sql); | |
| 143 | + return $retStr; | |
| 144 | + } | |
| 145 | + | |
| 146 | + //更新使用者資訊 | |
| 147 | + public function update_user_data($data){ | |
| 148 | + foreach($data as $key => $value){ | |
| 149 | + $$key = mysql_real_escape_string($value); | |
| 150 | + } | |
| 151 | + $sql = "update | |
| 152 | + ".USER_LIST." | |
| 153 | + set | |
| 154 | + user_name = '".$user_name."', | |
| 155 | + user_account = '".$user_account."', | |
| 156 | + user_passwd = '".$user_passwd."' | |
| 157 | + where | |
| 158 | + user_code = '".$user_code."' "; | |
| 159 | + $this->db->updateRecords($sql); | |
| 160 | + } | |
| 161 | + | |
| 162 | + //新增修改紀錄 | |
| 163 | + public function Insertuser_record($project_code,$project_user,$user_code,$action){ | |
| 164 | + $project_code = mysql_real_escape_string($project_code); | |
| 165 | + $system_user = mysql_real_escape_string($system_user); | |
| 166 | + $action = mysql_real_escape_string($action); | |
| 167 | + $sql = "insert into ".USER_RECORD." | |
| 168 | + ( | |
| 169 | + | |
| 170 | + project_code, | |
| 171 | + project_user, | |
| 172 | + user_code, | |
| 173 | + action, | |
| 174 | + time | |
| 175 | + ) | |
| 176 | + values | |
| 177 | + ( | |
| 178 | + '".$project_code."', | |
| 179 | + '".$project_user."', | |
| 180 | + '".$user_code."', | |
| 181 | + '".$action."', | |
| 182 | + '".time()."' | |
| 183 | + )"; | |
| 184 | + $this->db->insertRecords($sql); | |
| 185 | + } | |
| 186 | + | |
| 187 | + //取得儀器資訊 | |
| 188 | + public function get_device_data($device_code){ | |
| 189 | + $device_code = mysql_real_escape_string($device_code); | |
| 190 | + $sql = "select | |
| 191 | + device_code, | |
| 192 | + device_name, | |
| 193 | + device_name_short, | |
| 194 | + start_number, | |
| 195 | + end_number | |
| 196 | + from | |
| 197 | + ".USER_DEVICE." | |
| 198 | + where | |
| 199 | + device_code = '".$device_code."' "; | |
| 200 | + $retStr = $this->db->selectRecords($sql); | |
| 201 | + return $retStr['0']; | |
| 202 | + } | |
| 203 | + | |
| 204 | + public function add_sensor($data){ | |
| 205 | + foreach($data as $key => $value){ | |
| 206 | + $$key = mysql_real_escape_string($value); | |
| 207 | + } | |
| 208 | + $sql = "insert into user_device_sensor_list | |
| 209 | + ( | |
| 210 | + project_code, | |
| 211 | + device_code, | |
| 212 | + sensor_id | |
| 213 | + ) | |
| 214 | + values | |
| 215 | + ( | |
| 216 | + '".$project_code."', | |
| 217 | + '".$device_code."', | |
| 218 | + '".$sensor_id."' | |
| 219 | + )"; | |
| 220 | + $this->db->insertRecords($sql); | |
| 221 | + } | |
| 222 | + | |
| 223 | + //取得感測器資訊 | |
| 224 | + public function get_sensor_data($project_code,$device_code){ | |
| 225 | + $project_code = mysql_real_escape_string($project_code); | |
| 226 | + $device_code = mysql_real_escape_string($device_code); | |
| 227 | + $sql = "select | |
| 228 | + * | |
| 229 | + from | |
| 230 | + user_device_sensor_list | |
| 231 | + where | |
| 232 | + project_code= '".$project_code."' | |
| 233 | + && | |
| 234 | + device_code = '".$device_code."' | |
| 235 | + order by id asc"; | |
| 236 | + $retStr = $this->db->selectRecords($sql); | |
| 237 | + return $retStr; | |
| 238 | + } | |
| 239 | + | |
| 240 | + //取得感測器資訊 | |
| 241 | + public function get_sensor_data_list($project_code){ | |
| 242 | + $project_code = mysql_real_escape_string($project_code); | |
| 243 | + $sql = "select | |
| 244 | + * | |
| 245 | + from | |
| 246 | + user_device_sensor_list | |
| 247 | + where | |
| 248 | + project_code= '".$project_code."' | |
| 249 | + order by id asc"; | |
| 250 | + $retStr = $this->db->selectRecords($sql); | |
| 251 | + return $retStr; | |
| 252 | + } | |
| 253 | + | |
| 254 | + //更新感測器資訊 | |
| 255 | + public function update_sensor_data($id,$sensor_id,$depth,$coefficients,$top_alert,$top_active,$down_alert,$down_active,$upper_limit,$lower_limit){ | |
| 256 | + $id = mysql_real_escape_string($id); | |
| 257 | + $sensor_id = mysql_real_escape_string($sensor_id); | |
| 258 | + $depth = mysql_real_escape_string($depth); | |
| 259 | + $coefficients = mysql_real_escape_string($coefficients); | |
| 260 | + $top_alert = mysql_real_escape_string($top_alert); | |
| 261 | + $top_active = mysql_real_escape_string($top_active); | |
| 262 | + $down_alert = mysql_real_escape_string($down_alert); | |
| 263 | + $down_active = mysql_real_escape_string($down_active); | |
| 264 | + $upper_limit = mysql_real_escape_string($upper_limit); | |
| 265 | + $lower_limit = mysql_real_escape_string($lower_limit); | |
| 266 | + $sql = "update | |
| 267 | + user_device_sensor_list | |
| 268 | + set | |
| 269 | + sensor_id = '".$sensor_id."', | |
| 270 | + depth = '".$depth."', | |
| 271 | + coefficients = '".$coefficients."', | |
| 272 | + top_alert = '".$top_alert."', | |
| 273 | + top_active = '".$top_active."', | |
| 274 | + down_alert = '".$down_alert."', | |
| 275 | + down_active = '".$down_active."', | |
| 276 | + upper_limit = '".$upper_limit."', | |
| 277 | + lower_limit = '".$lower_limit."' | |
| 278 | + where | |
| 279 | + id = '".$id."' "; | |
| 280 | + $this->db->updateRecords($sql); | |
| 281 | + } | |
| 282 | + | |
| 283 | + //取得感測器LOAD資訊 | |
| 284 | + public function get_sensor_load_data($project_code,$device_code){ | |
| 285 | + $project_code = mysql_real_escape_string($project_code); | |
| 286 | + $device_code = mysql_real_escape_string($device_code); | |
| 287 | + $sql = "select | |
| 288 | + * | |
| 289 | + from | |
| 290 | + ".USER_DEVICE_SENSOR_LOAD." | |
| 291 | + where | |
| 292 | + project_code= '".$project_code."' | |
| 293 | + && | |
| 294 | + device_code = '".$device_code."' | |
| 295 | + order by id asc"; | |
| 296 | + $retStr = $this->db->selectRecords($sql); | |
| 297 | + return $retStr; | |
| 298 | + } | |
| 299 | + | |
| 300 | + //取得所有感測器LOAD資訊 | |
| 301 | + public function get_sensor_load_data_list($project_code){ | |
| 302 | + $project_code = mysql_real_escape_string($project_code); | |
| 303 | + $sql = "select | |
| 304 | + * | |
| 305 | + from | |
| 306 | + ".USER_DEVICE_SENSOR_LOAD." | |
| 307 | + where | |
| 308 | + project_code= '".$project_code."' | |
| 309 | + order by id asc"; | |
| 310 | + $retStr = $this->db->selectRecords($sql); | |
| 311 | + return $retStr; | |
| 312 | + } | |
| 313 | + | |
| 314 | + //取得所有感測器LOAD資訊 | |
| 315 | + public function get_sensor_load_data_list_for_device($project_code,$device_code){ | |
| 316 | + $project_code = mysql_real_escape_string($project_code); | |
| 317 | + $sql = "select | |
| 318 | + * | |
| 319 | + from | |
| 320 | + ".USER_DEVICE_SENSOR_LOAD." | |
| 321 | + where | |
| 322 | + project_code= '".$project_code."' && | |
| 323 | + device_code ='".$device_code."' | |
| 324 | + order by id asc"; | |
| 325 | + $retStr = $this->db->selectRecords($sql); | |
| 326 | + return $retStr; | |
| 327 | + } | |
| 328 | + | |
| 329 | + //更新感測器_Load檔資訊 | |
| 330 | + public function update_sensor_load_data($id,$name,$dat,$start_val,$formula,$formula_val,$C5,$C4,$C3,$C2,$C1,$C0,$S2,$S1,$S0,$F1,$F0,$subsum,$load_data){ | |
| 331 | + $id = mysql_real_escape_string($id); | |
| 332 | + $name = mysql_real_escape_string($name); | |
| 333 | + $dat = mysql_real_escape_string($dat); | |
| 334 | + $start_val = mysql_real_escape_string($start_val); | |
| 335 | + $formula = mysql_real_escape_string($formula); | |
| 336 | + $formula_val = mysql_real_escape_string($formula_val); | |
| 337 | + $C5 = mysql_real_escape_string($C5); | |
| 338 | + $C4 = mysql_real_escape_string($C4); | |
| 339 | + $C3 = mysql_real_escape_string($C3); | |
| 340 | + $C2 = mysql_real_escape_string($C2); | |
| 341 | + $C1 = mysql_real_escape_string($C1); | |
| 342 | + $C0 = mysql_real_escape_string($C0); | |
| 343 | + $S2 = mysql_real_escape_string($S2); | |
| 344 | + $S1 = mysql_real_escape_string($S1); | |
| 345 | + $S0 = mysql_real_escape_string($S0); | |
| 346 | + $F1 = mysql_real_escape_string($F1); | |
| 347 | + $F0 = mysql_real_escape_string($F0); | |
| 348 | + $load_data = mysql_real_escape_string($load_data); | |
| 349 | + $subsum = mysql_real_escape_string($subsum); | |
| 350 | + $sql = "update | |
| 351 | + ".USER_DEVICE_SENSOR_LOAD." | |
| 352 | + set | |
| 353 | + name = '".$name."', | |
| 354 | + dat = '".$dat."', | |
| 355 | + start_val = '".$start_val."', | |
| 356 | + subsum = '".$subsum."', | |
| 357 | + formula = '".$formula."', | |
| 358 | + formula_val = '".$formula_val."', | |
| 359 | + C5 = '".$C5."', | |
| 360 | + C4 = '".$C4."', | |
| 361 | + C3 = '".$C3."', | |
| 362 | + C2 = '".$C2."', | |
| 363 | + C1 = '".$C1."', | |
| 364 | + C0 = '".$C0."', | |
| 365 | + S2 = '".$S2."', | |
| 366 | + S1 = '".$S1."', | |
| 367 | + S0 = '".$S0."', | |
| 368 | + F1 = '".$F1."', | |
| 369 | + F0 = '".$F0."', | |
| 370 | + load_data='".$load_data."' | |
| 371 | + where | |
| 372 | + id = '".$id."' "; | |
| 373 | + $this->db->updateRecords($sql); | |
| 374 | + } | |
| 375 | + | |
| 376 | + public function add_sensor_load($name,$dat,$start_val,$formula,$formula_val,$C5,$C4,$C3,$C2,$C1,$C0,$S2,$S1,$S0,$F1,$F0,$subsum,$load_data,$device_code,$project_code){ | |
| 377 | + $name = mysql_real_escape_string($name); | |
| 378 | + $dat = mysql_real_escape_string($dat); | |
| 379 | + $start_val = mysql_real_escape_string($start_val); | |
| 380 | + $formula = mysql_real_escape_string($formula); | |
| 381 | + $formula_val = mysql_real_escape_string($formula_val); | |
| 382 | + $C5 = mysql_real_escape_string($C5); | |
| 383 | + $C4 = mysql_real_escape_string($C4); | |
| 384 | + $C3 = mysql_real_escape_string($C3); | |
| 385 | + $C2 = mysql_real_escape_string($C2); | |
| 386 | + $C1 = mysql_real_escape_string($C1); | |
| 387 | + $C0 = mysql_real_escape_string($C0); | |
| 388 | + $S2 = mysql_real_escape_string($S2); | |
| 389 | + $S1 = mysql_real_escape_string($S1); | |
| 390 | + $S0 = mysql_real_escape_string($S0); | |
| 391 | + $F1 = mysql_real_escape_string($F1); | |
| 392 | + $F0 = mysql_real_escape_string($F0); | |
| 393 | + $subsum = mysql_real_escape_string($subsum); | |
| 394 | + $load_data = mysql_real_escape_string($load_data); | |
| 395 | + $device_code = mysql_real_escape_string($device_code); | |
| 396 | + $project_code = mysql_real_escape_string($project_code); | |
| 397 | + $subsum = mysql_real_escape_string($subsum); | |
| 398 | + $sql = "insert into ".USER_DEVICE_SENSOR_LOAD." | |
| 399 | + ( | |
| 400 | + project_code, | |
| 401 | + device_code, | |
| 402 | + name, | |
| 403 | + dat, | |
| 404 | + start_val, | |
| 405 | + subsum, | |
| 406 | + formula, | |
| 407 | + formula_val, | |
| 408 | + C5,C4,C3,C2,C1,C0,S2,S1,S0,F1,F0, | |
| 409 | + load_data | |
| 410 | + ) | |
| 411 | + values | |
| 412 | + ( | |
| 413 | + '".$project_code."', | |
| 414 | + '".$device_code."', | |
| 415 | + '".$name."', | |
| 416 | + '".$dat."', | |
| 417 | + '".$start_val."', | |
| 418 | + '".$subsum."', | |
| 419 | + '".$formula."', | |
| 420 | + '".$formula_val."','".$C5."','".$C4."','".$C3."','".$C2."','".$C1."','".$C0."','".$S2."','".$S1."','".$S0."','".$F1."','".$F0."', | |
| 421 | + '".$load_data."' | |
| 422 | + )"; | |
| 423 | + $this->db->insertRecords($sql); | |
| 424 | + } | |
| 425 | + | |
| 426 | + //取得感測器名稱 | |
| 427 | + public function get_sensor_name_data($project_code,$device_code){ | |
| 428 | + $project_code = mysql_real_escape_string($project_code); | |
| 429 | + $device_code = mysql_real_escape_string($device_code); | |
| 430 | + $sql = "select | |
| 431 | + sensor_id | |
| 432 | + from | |
| 433 | + user_device_sensor_list | |
| 434 | + where | |
| 435 | + project_code= '".$project_code."' | |
| 436 | + && | |
| 437 | + device_code = '".$device_code."' | |
| 438 | + order by id asc"; | |
| 439 | + $retStr = $this->db->selectRecords($sql); | |
| 440 | + return $retStr; | |
| 441 | + } | |
| 442 | + | |
| 443 | + //取得專案內所有感測器名稱 | |
| 444 | + public function get_sensor_list($project_code){ | |
| 445 | + $project_code = mysql_real_escape_string($project_code); | |
| 446 | + $sql = "select | |
| 447 | + sensor_id | |
| 448 | + from | |
| 449 | + user_device_sensor_list | |
| 450 | + where | |
| 451 | + project_code= '".$project_code."' | |
| 452 | + order by id asc"; | |
| 453 | + $retStr = $this->db->selectRecords($sql); | |
| 454 | + return $retStr; | |
| 455 | + } | |
| 456 | + | |
| 457 | + //取得介面圖資訊 | |
| 458 | + public function get_interface($project_code,$interface_code){ | |
| 459 | + $project_code= mysql_real_escape_string($project_code); | |
| 460 | + $interface_code= mysql_real_escape_string($interface_code); | |
| 461 | + $sql = "select | |
| 462 | + * | |
| 463 | + from | |
| 464 | + user_interface | |
| 465 | + where | |
| 466 | + project_code= '".$project_code."' | |
| 467 | + && | |
| 468 | + interface_code = '".$interface_code."' | |
| 469 | + order by id asc"; | |
| 470 | + $retStr = $this->db->selectRecords($sql); | |
| 471 | + return $retStr; | |
| 472 | + } | |
| 473 | + | |
| 474 | + //儲存介面圖tag | |
| 475 | + public function insert_interface_tag($project_code,$interface_code,$name,$pic_x,$pic_y){ | |
| 476 | + $project_code= mysql_real_escape_string($project_code); | |
| 477 | + $interface_code= mysql_real_escape_string($interface_code); | |
| 478 | + $name = mysql_real_escape_string($name); | |
| 479 | + $pic_x = mysql_real_escape_string($pic_x); | |
| 480 | + $pic_y = mysql_real_escape_string($pic_y); | |
| 481 | + $sql = "INSERT INTO user_interface_tag ( | |
| 482 | + project_code, | |
| 483 | + interface_code, | |
| 484 | + name, | |
| 485 | + pic_x, | |
| 486 | + pic_y) | |
| 487 | + VALUES ( | |
| 488 | + '".$project_code."', | |
| 489 | + '".$interface_code."', | |
| 490 | + '".$name."', | |
| 491 | + '".$pic_x."', | |
| 492 | + '".$pic_y."')"; | |
| 493 | + $this->db->insertRecords($sql); | |
| 494 | + } | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + //取得介面圖tag | |
| 499 | + public function get_interface_tag_list($project_code,$interface_code){ | |
| 500 | + $project_code= mysql_real_escape_string($project_code); | |
| 501 | + $interface_code= mysql_real_escape_string($interface_code); | |
| 502 | + $sql = "select | |
| 503 | + * | |
| 504 | + from | |
| 505 | + user_interface_tag | |
| 506 | + where | |
| 507 | + project_code= '".$project_code."' | |
| 508 | + && | |
| 509 | + interface_code = '".$interface_code."' | |
| 510 | + order by id asc"; | |
| 511 | + $retStr = $this->db->selectRecords($sql); | |
| 512 | + return $retStr; | |
| 513 | + } | |
| 514 | + | |
| 515 | + //刪除介面圖tag | |
| 516 | + public function delete_interface_tag($tag_id){ | |
| 517 | + $tag_id= mysql_real_escape_string($tag_id); | |
| 518 | + $sql = "DELETE FROM user_interface_tag WHERE id = '".$tag_id."'"; | |
| 519 | + $this->db->deleteRecords($sql); | |
| 520 | + } | |
| 521 | + | |
| 522 | + public function add_sensor_load_val($device_code,$name,$voltage,$temperature,$mathself,$formula_val,$default_val,$top_alert,$down_alert,$top_active,$down_active,$upper_limit,$lower_limit,$datetime,$project_code,$file_name,$load_value,$file_time){ | |
| 523 | + $device_code = mysql_real_escape_string($device_code); | |
| 524 | + $name = mysql_real_escape_string($name); | |
| 525 | + $voltage = mysql_real_escape_string($voltage); | |
| 526 | + $temperature = mysql_real_escape_string($temperature); | |
| 527 | + $mathself = mysql_real_escape_string($mathself); | |
| 528 | + $formula_val = mysql_real_escape_string($formula_val); | |
| 529 | + $default_val = mysql_real_escape_string($default_val); | |
| 530 | + $top_alert = mysql_real_escape_string($top_alert); | |
| 531 | + $down_alert = mysql_real_escape_string($down_alert); | |
| 532 | + $top_active = mysql_real_escape_string($top_active); | |
| 533 | + $down_active = mysql_real_escape_string($down_active); | |
| 534 | + $upper_limit = mysql_real_escape_string($upper_limit); | |
| 535 | + $lower_limit = mysql_real_escape_string($lower_limit); | |
| 536 | + $datetime = mysql_real_escape_string($datetime); | |
| 537 | + $project_code = mysql_real_escape_string(strtoupper($project_code)); | |
| 538 | + $file_name = mysql_real_escape_string($file_name); | |
| 539 | + $load_value = mysql_real_escape_string($load_value); | |
| 540 | + $file_time = mysql_real_escape_string($file_time); | |
| 541 | + $sql = "insert into ".$project_code." | |
| 542 | + ( | |
| 543 | + device_code, | |
| 544 | + name, | |
| 545 | + voltage, | |
| 546 | + temperature, | |
| 547 | + mathself, | |
| 548 | + formula_val, | |
| 549 | + default_val, | |
| 550 | + top_alert, | |
| 551 | + down_alert, | |
| 552 | + top_active, | |
| 553 | + down_active, | |
| 554 | + upper_limit, | |
| 555 | + lower_limit, | |
| 556 | + datetime, | |
| 557 | + file_name, | |
| 558 | + date, | |
| 559 | + load_value | |
| 560 | + ) | |
| 561 | + values | |
| 562 | + ( | |
| 563 | + '".$device_code."', | |
| 564 | + '".$name."', | |
| 565 | + '".$voltage."', | |
| 566 | + '".$temperature."', | |
| 567 | + '".$mathself."', | |
| 568 | + '".$formula_val."', | |
| 569 | + '".$default_val."', | |
| 570 | + '".$top_alert."', | |
| 571 | + '".$down_alert."', | |
| 572 | + '".$top_active."', | |
| 573 | + '".$down_active."', | |
| 574 | + '".$upper_limit."', | |
| 575 | + '".$lower_limit."', | |
| 576 | + '".$file_time."', | |
| 577 | + '".$file_name."', | |
| 578 | + '".$datetime."', | |
| 579 | + '".$load_value."' | |
| 580 | + )"; | |
| 581 | + $this->db->insertRecords($sql); | |
| 582 | + } | |
| 583 | + | |
| 584 | + public function get_sensor_load_val($project_code,$date_start,$date_end,$name){ | |
| 585 | + $project_code= mysql_real_escape_string($project_code); | |
| 586 | + $name = mysql_real_escape_string($name); | |
| 587 | + $sql = "select | |
| 588 | + * | |
| 589 | + from | |
| 590 | + ".$project_code." | |
| 591 | + where | |
| 592 | + name = '".$name."' | |
| 593 | + && | |
| 594 | + date between ".$date_start." and ".$date_end." | |
| 595 | + order by PID asc"; | |
| 596 | + $retStr = $this->db->selectRecords($sql); | |
| 597 | + return $retStr; | |
| 598 | + } | |
| 599 | + | |
| 600 | + public function get_sensor_load_val_for_interface($project_code,$name){ | |
| 601 | + $project_code= mysql_real_escape_string($project_code); | |
| 602 | + $name = mysql_real_escape_string($name); | |
| 603 | + $sql = "select | |
| 604 | + * | |
| 605 | + from | |
| 606 | + ".$project_code." | |
| 607 | + where | |
| 608 | + name = '".$name."' | |
| 609 | + order by PID desc Limit 1"; | |
| 610 | + $retStr = $this->db->selectRecords($sql); | |
| 611 | + return $retStr; | |
| 612 | + } | |
| 613 | +} | |
| 614 | +?> | |
| 0 | 615 | \ No newline at end of file | ... | ... | 
VH.php
| ... | ... | @@ -0,0 +1,377 @@ | 
| 1 | +<? | |
| 2 | +header('refresh: 1800;url="http://127.0.0.1/C25104/VH.php"'); | |
| 3 | +define ('INDEX','http://52.74.132.133/'); | |
| 4 | +define ('SYSTEM_DBHOST','52.74.132.133:3306'); | |
| 5 | +define ('SYSTEM_DBNAME','sanlien'); | |
| 6 | +define ('SYSTEM_DBUSER','3944'); | |
| 7 | +define ('SYSTEM_DBPWD','12345'); | |
| 8 | +define ('USER_DEVICE_SENSOR','user_device_sensor'); | |
| 9 | +define ('USER_DEVICE_SENSOR_LOAD','user_device_sensor_load'); | |
| 10 | +define ('USER_CONTACT','user_contact'); | |
| 11 | +define ('USER_DEVICE','user_device'); | |
| 12 | +/************* 簡訊傳送設定 *******************/ | |
| 13 | +include_once('Device.cls.php'); | |
| 14 | +include_once('WADB.cls.php'); | |
| 15 | +$Device = new Device(); | |
| 16 | +$project_code = 'C25104'; | |
| 17 | +?> | |
| 18 | + <table width="100%" border="1" cellpadding="0" cellspacing="0" style="text-align:center"> | |
| 19 | + <thead> | |
| 20 | + <tr> | |
| 21 | + <th style="text-align:center"><? echo '裝置名稱'; ?></th> | |
| 22 | + <th style="text-align:center"><? echo '時間'; ?></th> | |
| 23 | + <th style="text-align:center"><? echo '電壓'; ?></th> | |
| 24 | + <th style="text-align:center"><? echo '溫度'; ?></th> | |
| 25 | + <th style="text-align:center"><? echo '計算後'; ?></th> | |
| 26 | + <th style="text-align:center"><? echo '初始值'; ?></th> | |
| 27 | + <th style="text-align:center"><? echo '上-下行動值'; ?></th> | |
| 28 | + <th style="text-align:center"><? echo '上-下警戒值'; ?></th> | |
| 29 | + <th style="text-align:center"><? echo '擷取上-下值'; ?></th> | |
| 30 | + <th style="text-align:center"><? echo '通知者'; ?></th> | |
| 31 | + | |
| 32 | + </tr> | |
| 33 | + </thead> | |
| 34 | + <? | |
| 35 | + $sensor_data_load_info = $Device->get_sensor_load_data_list($project_code); //load檔資料 | |
| 36 | + foreach($sensor_data_load_info as $k => $v){ | |
| 37 | + if($sensor_data_load_info[$i]['load_data'] != ""){ | |
| 38 | + $load_data[$sensor_data_load_info[$i]['device_code']] = $sensor_data_load_info[$i]['load_data']; | |
| 39 | + } | |
| 40 | + $i++; | |
| 41 | + } | |
| 42 | + $load_data = array_unique($load_data); | |
| 43 | + foreach($load_data as $key => $filename){ | |
| 44 | + if($filename != ""){ | |
| 45 | + //讀取檔案 原始檔案 | |
| 46 | + $nn = 0; | |
| 47 | + $handle = fopen($filename,"r"); | |
| 48 | + while(($data = @fgetcsv($handle,1000,",","'")) != false){ | |
| 49 | + $i = 0; | |
| 50 | + foreach($data as $k => $value){ | |
| 51 | + $aa[$nn][$i] = $value; | |
| 52 | + $i++; | |
| 53 | + | |
| 54 | + } | |
| 55 | + $nn++; | |
| 56 | + } | |
| 57 | + @fclose($handle); | |
| 58 | + if(is_file('backup/'.$filename)){ | |
| 59 | + //讀取檔案 原始檔案 | |
| 60 | + $bb = 0; | |
| 61 | + $handle = fopen('backup/'.$filename,"r"); | |
| 62 | + while(($data = @fgetcsv($handle,1000,",","'")) != false){ | |
| 63 | + $i = 0; | |
| 64 | + foreach($data as $k => $value){ | |
| 65 | + $backup[$bb][$i] = $value; | |
| 66 | + $i++; | |
| 67 | + } | |
| 68 | + $bb++; | |
| 69 | + } | |
| 70 | + @fclose($handle); | |
| 71 | + $sensor_data_load_info_device = $Device->get_sensor_load_data_list_for_device($project_code,$key); | |
| 72 | + foreach($sensor_data_load_info_device as $key => $value){ | |
| 73 | + $sensor_data = $Device->get_sensor_data($project_code,$value['device_code']); //警告值.行動值.等等 | |
| 74 | + foreach($sensor_data as $k => $v){ | |
| 75 | + $top_active = $v['top_active']; | |
| 76 | + $down_active = $v['down_active']; | |
| 77 | + $top_alert = $v['top_alert']; | |
| 78 | + $down_alert = $v['down_alert']; | |
| 79 | + $upper_limit = $v['limit_uper']; | |
| 80 | + $lower_limit = $v['limit_lower']; | |
| 81 | + $unit = $v['unit']; | |
| 82 | + } | |
| 83 | + //echo $value['dat']."|".$value['formula']."|".$value['subsum']."<br>"; | |
| 84 | + $formula = $value['formula']; | |
| 85 | + $dat = $value['dat']; | |
| 86 | + $dat_1 = explode(',',$value['dat']); | |
| 87 | + $start_val = $value['start_val']; | |
| 88 | + $start_val_1 = explode(',',$value['start_val']); | |
| 89 | + $subsum = $value['subsum']; | |
| 90 | + $name = $value['name']; | |
| 91 | + $project_code = $value['project_code']; | |
| 92 | + $device_code = $value['device_code']; | |
| 93 | + $formula_val = $value['formula_val']; | |
| 94 | + $C5 = ($value['C5'] != '') ? $value['C5']:0; | |
| 95 | + $C4 = ($value['C4'] != '') ? $value['C4']:0; | |
| 96 | + $C3 = ($value['C3'] != '') ? $value['C3']:0; | |
| 97 | + $C2 = ($value['C2'] != '') ? $value['C2']:0; | |
| 98 | + $C1 = ($value['C1'] != '') ? $value['C1']:0; | |
| 99 | + $C0 = ($value['C0'] != '') ? $value['C0']:0; | |
| 100 | + $S2 = ($value['S2'] != '') ? $value['S2']:0; | |
| 101 | + $S1 = ($value['S1'] != '') ? $value['S1']:0; | |
| 102 | + $S0 = ($value['S0'] != '') ? $value['S0']:0; | |
| 103 | + $F1 = ($value['F1'] != '') ? $value['F1']:0; | |
| 104 | + $F0 = ($value['F0'] != '') ? $value['F0']:0; | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + //fclose($filename); | |
| 109 | + $search_final = count($aa) - 1; | |
| 110 | + $total_default = 0; | |
| 111 | + $j = 0; | |
| 112 | + for($i=count($backup);$i<=$search_final;$i++){ //dat檔從第五列資料開始抓 | |
| 113 | + | |
| 114 | + //欄位值有兩個時作為判斷 | |
| 115 | + if($dat_1[1] != ""){ | |
| 116 | + $mathself = $aa[$i][$dat_1[0]]; | |
| 117 | + $mathself_1 = $aa[$i][$dat_1[1]]; | |
| 118 | + }else{ | |
| 119 | + //判斷溫度、日期、電壓 | |
| 120 | + switch($name){ | |
| 121 | + case "date": | |
| 122 | + //日期初始化 | |
| 123 | + $start_time = strtotime("2015-01-01 00:00"); | |
| 124 | + switch(strlen($aa[$i][$dat+1])){ | |
| 125 | + case "1": | |
| 126 | + $total_time = $start_time+($aa[$i][$dat+1]*60); | |
| 127 | + break; | |
| 128 | + | |
| 129 | + case "2": | |
| 130 | + $total_time = $start_time+($aa[$i][$dat+1]*60); | |
| 131 | + break; | |
| 132 | + | |
| 133 | + case "3": | |
| 134 | + $total_time = $start_time+(substr($aa[$i][$dat+1],0,1)*3600)+(substr($aa[$i][$dat+1],1,2)*60); | |
| 135 | + break; | |
| 136 | + | |
| 137 | + case "4": | |
| 138 | + $total_time = $start_time+(substr($aa[$i][$dat+1],0,2)*3600)+(substr($aa[$i][$dat+1],2,2)*60); | |
| 139 | + break; | |
| 140 | + } | |
| 141 | + $sensor_date[] = $aa[$i][$dat]*86400+$total_time-86400; | |
| 142 | + break; | |
| 143 | + | |
| 144 | + case "voltage": | |
| 145 | + $sensor_voltage[] = $aa[$i][$dat]; | |
| 146 | + break; | |
| 147 | + | |
| 148 | + case "temperature": | |
| 149 | + $sensor_temperature[] = $aa[$i][$dat]; | |
| 150 | + $temperature[] = $aa[$i][$dat]; | |
| 151 | + break; | |
| 152 | + default: | |
| 153 | + $mathself = $aa[$i][$dat]; | |
| 154 | + break; | |
| 155 | + } | |
| 156 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 157 | + } | |
| 158 | + | |
| 159 | + //初始值有兩個時作為判斷 | |
| 160 | + if($start_val_1[1] != ""){ | |
| 161 | + $default_val = $start_val_1[0]; | |
| 162 | + $default_val_1 = $start_val_1[1]; | |
| 163 | + }else{ | |
| 164 | + $default_val = $start_val; | |
| 165 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 166 | + } | |
| 167 | + | |
| 168 | + //$mathself = 2; | |
| 169 | + //$mathself_1 = 3; | |
| 170 | + $total_sum = 0; | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + //計算公式 | |
| 175 | + switch($formula_val){ | |
| 176 | + case '1': | |
| 177 | + $total_sum = $C5*pow($mathself,5) + $C4*pow($mathself,4) + $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 178 | + $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; | |
| 179 | + //$total_sum += $val*$sum; | |
| 180 | + break; | |
| 181 | + | |
| 182 | + case '2': | |
| 183 | + $total_sum = $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 184 | + $total_default = $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 185 | + break; | |
| 186 | + | |
| 187 | + case '3': | |
| 188 | + $total_sum = $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 189 | + $total_default = $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 190 | + break; | |
| 191 | + | |
| 192 | + case '4': | |
| 193 | + $total_sum = $C1*pow($mathself,1) + $C0; | |
| 194 | + $total_default = $C1*pow($default_val,1) + $C0; | |
| 195 | + break; | |
| 196 | + | |
| 197 | + case '5': | |
| 198 | + $total_sum = $C5*pow($mathself_1,2) + $C4*$mathself*$mathself_1 + $C3*pow($mathself,2) + $C2*$mathself_1 + $C1*$mathself + $C0 + $val; | |
| 199 | + $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; | |
| 200 | + break; | |
| 201 | + | |
| 202 | + case '6': | |
| 203 | + $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; | |
| 204 | + $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; | |
| 205 | + break; | |
| 206 | + | |
| 207 | + } | |
| 208 | + if($name != 'date' and $name != 'voltage' and $name != 'temperature'){ | |
| 209 | + $date = $sensor_date[$j]; | |
| 210 | + $total = $total_sum-$total_default; | |
| 211 | + $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); | |
| 212 | + $j++; | |
| 213 | + } | |
| 214 | + | |
| 215 | + } | |
| 216 | + | |
| 217 | + } | |
| 218 | + copy($filename, 'backup/'.$filename); | |
| 219 | + | |
| 220 | + }else{ | |
| 221 | + copy($filename, 'backup/'.$filename); | |
| 222 | + $sensor_data_load_info_device = $Device->get_sensor_load_data_list_for_device($project_code,$key); | |
| 223 | + foreach($sensor_data_load_info_device as $key => $value){ | |
| 224 | + $sensor_data = $Device->get_sensor_data($value['project_code'],$value['device_code']); //警告值.行動值.等等 | |
| 225 | + foreach($sensor_data as $k => $v){ | |
| 226 | + $top_active = $v['top_active']; | |
| 227 | + $down_active = $v['down_active']; | |
| 228 | + $top_alert = $v['top_alert']; | |
| 229 | + $down_alert = $v['down_alert']; | |
| 230 | + $upper_limit = $v['limit_uper']; | |
| 231 | + $lower_limit = $v['limit_lower']; | |
| 232 | + $unit = $v['unit']; | |
| 233 | + } | |
| 234 | + //echo $value['dat']."|".$value['formula']."|".$value['subsum']."<br>"; | |
| 235 | + $formula = $value['formula']; | |
| 236 | + $dat = $value['dat']; | |
| 237 | + $dat_1 = explode(',',$value['dat']); | |
| 238 | + $start_val = $value['start_val']; | |
| 239 | + $start_val_1 = explode(',',$value['start_val']); | |
| 240 | + $subsum = $value['subsum']; | |
| 241 | + $name = $value['name']; | |
| 242 | + $project_code = $value['project_code']; | |
| 243 | + $device_code = $value['device_code']; | |
| 244 | + $formula_val = $value['formula_val']; | |
| 245 | + $C5 = ($value['C5'] != '') ? $value['C5']:0; | |
| 246 | + $C4 = ($value['C4'] != '') ? $value['C4']:0; | |
| 247 | + $C3 = ($value['C3'] != '') ? $value['C3']:0; | |
| 248 | + $C2 = ($value['C2'] != '') ? $value['C2']:0; | |
| 249 | + $C1 = ($value['C1'] != '') ? $value['C1']:0; | |
| 250 | + $C0 = ($value['C0'] != '') ? $value['C0']:0; | |
| 251 | + $S2 = ($value['S2'] != '') ? $value['S2']:0; | |
| 252 | + $S1 = ($value['S1'] != '') ? $value['S1']:0; | |
| 253 | + $S0 = ($value['S0'] != '') ? $value['S0']:0; | |
| 254 | + $F1 = ($value['F1'] != '') ? $value['F1']:0; | |
| 255 | + $F0 = ($value['F0'] != '') ? $value['F0']:0; | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + //fclose($filename); | |
| 260 | + $search_final = count($aa) - 1; | |
| 261 | + $total_default = 0; | |
| 262 | + $j = 0; | |
| 263 | + for($i=0;$i<=$search_final;$i++){ //dat檔從第五列資料開始抓 | |
| 264 | + | |
| 265 | + //欄位值有兩個時作為判斷 | |
| 266 | + if($dat_1[1] != ""){ | |
| 267 | + $mathself = $aa[$i][$dat_1[0]]; | |
| 268 | + $mathself_1 = $aa[$i][$dat_1[1]]; | |
| 269 | + }else{ | |
| 270 | + //判斷溫度、日期、電壓 | |
| 271 | + switch($name){ | |
| 272 | + case "date": | |
| 273 | + //日期初始化 | |
| 274 | + $start_time = strtotime("2015-01-01 00:00"); | |
| 275 | + switch(strlen($aa[$i][$dat+1])){ | |
| 276 | + case "1": | |
| 277 | + $total_time = $start_time+($aa[$i][$dat+1]*60); | |
| 278 | + break; | |
| 279 | + | |
| 280 | + case "2": | |
| 281 | + $total_time = $start_time+($aa[$i][$dat+1]*60); | |
| 282 | + break; | |
| 283 | + | |
| 284 | + case "3": | |
| 285 | + $total_time = $start_time+(substr($aa[$i][$dat+1],0,1)*3600)+(substr($aa[$i][$dat+1],1,2)*60); | |
| 286 | + break; | |
| 287 | + | |
| 288 | + case "4": | |
| 289 | + $total_time = $start_time+(substr($aa[$i][$dat+1],0,2)*3600)+(substr($aa[$i][$dat+1],2,2)*60); | |
| 290 | + break; | |
| 291 | + } | |
| 292 | + $sensor_date[] = $aa[$i][$dat]*86400+$total_time-86400; | |
| 293 | + break; | |
| 294 | + | |
| 295 | + case "voltage": | |
| 296 | + $sensor_voltage[] = $aa[$i][$dat]; | |
| 297 | + break; | |
| 298 | + | |
| 299 | + case "temperature": | |
| 300 | + $sensor_temperature[] = $aa[$i][$dat]; | |
| 301 | + $temperature[] = $aa[$i][$dat]; | |
| 302 | + break; | |
| 303 | + default: | |
| 304 | + $mathself = $aa[$i][$dat]; | |
| 305 | + break; | |
| 306 | + } | |
| 307 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 308 | + } | |
| 309 | + | |
| 310 | + //初始值有兩個時作為判斷 | |
| 311 | + if($start_val_1[1] != ""){ | |
| 312 | + $default_val = $start_val_1[0]; | |
| 313 | + $default_val_1 = $start_val_1[1]; | |
| 314 | + }else{ | |
| 315 | + $default_val = $start_val; | |
| 316 | + //$mathself_1 = substr($aa[$i][$dat_1[1]],); | |
| 317 | + } | |
| 318 | + | |
| 319 | + //$mathself = 2; | |
| 320 | + //$mathself_1 = 3; | |
| 321 | + $total_sum = 0; | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + //計算公式 | |
| 326 | + switch($formula_val){ | |
| 327 | + case '1': | |
| 328 | + $total_sum = $C5*pow($mathself,5) + $C4*pow($mathself,4) + $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 329 | + $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; | |
| 330 | + //$total_sum += $val*$sum; | |
| 331 | + break; | |
| 332 | + | |
| 333 | + case '2': | |
| 334 | + $total_sum = $C3*pow($mathself,3) + $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 335 | + $total_default = $C3*pow($default_val,3) + $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 336 | + break; | |
| 337 | + | |
| 338 | + case '3': | |
| 339 | + $total_sum = $C2*pow($mathself,2) + $C1*pow($mathself,1) + $C0; | |
| 340 | + $total_default = $C2*pow($default_val,2) + $C1*pow($default_val,1) + $C0; | |
| 341 | + break; | |
| 342 | + | |
| 343 | + case '4': | |
| 344 | + $total_sum = $C1*pow($mathself,1) + $C0; | |
| 345 | + $total_default = $C1*pow($default_val,1) + $C0; | |
| 346 | + break; | |
| 347 | + | |
| 348 | + case '5': | |
| 349 | + $total_sum = $C5*pow($mathself_1,2) + $C4*$mathself*$mathself_1 + $C3*pow($mathself,2) + $C2*$mathself_1 + $C1*$mathself + $C0 + $val; | |
| 350 | + $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; | |
| 351 | + break; | |
| 352 | + | |
| 353 | + case '6': | |
| 354 | + $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; | |
| 355 | + $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; | |
| 356 | + break; | |
| 357 | + | |
| 358 | + } | |
| 359 | + if($name != 'date' and $name != 'voltage' and $name != 'temperature'){ | |
| 360 | + $date = $sensor_date[$j]; | |
| 361 | + $total = $total_sum-$total_default; | |
| 362 | + | |
| 363 | + $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); | |
| 364 | + $j++; | |
| 365 | + } | |
| 366 | + | |
| 367 | + } | |
| 368 | + } | |
| 369 | + } | |
| 370 | + | |
| 371 | + } | |
| 372 | + unset($aa); | |
| 373 | + unset($backup); | |
| 374 | + } | |
| 375 | + ?> | |
| 376 | + </table> | |
| 377 | + | ... | ... | 
WADB.cls.php
| ... | ... | @@ -0,0 +1,106 @@ | 
| 1 | +<?php | |
| 2 | + | |
| 3 | + class WADB | |
| 4 | + { | |
| 5 | + /* Database Host */ | |
| 6 | + var $sDbHost; | |
| 7 | + var $sDbName; // Database Name | |
| 8 | + var $sDbUser; // Database User | |
| 9 | + var $sDbPwd; // Database Password | |
| 10 | + var $sDbDetail; // Database Details | |
| 11 | + var $iNoOfRecords; // Total No of Records | |
| 12 | + var $oQueryResult; // Results of sql query | |
| 13 | + var $aSelectRecords; // Array | |
| 14 | + var $aArrRec; // Array | |
| 15 | + var $bInsertRecords; // Boolean | |
| 16 | + var $iInsertRecId; // Integer - the primary key for inserted record | |
| 17 | + var $bUpdateRecords; // Boolean | |
| 18 | + | |
| 19 | + /* Constructor */ | |
| 20 | + function WADB ($sDbHost, $sDbName, $sDbUser, $sDbPwd) | |
| 21 | + { | |
| 22 | + $oDbLink = mysql_connect ($sDbHost, $sDbUser, $sDbPwd) or die ("MySQL DB could not be connected"); | |
| 23 | + @mysql_select_db ($sDbName, $oDbLink)or die ("MySQL DB could not be selected"); | |
| 24 | + @mysql_query("set names 'utf8'"); | |
| 25 | + } | |
| 26 | + | |
| 27 | + /* seelct Record Object */ | |
| 28 | + function selectRecordsObject($sSqlQuery){ | |
| 29 | + unset($this->aSelectRecords); | |
| 30 | + $this->oQueryResult = mysql_query($sSqlQuery) or die(mysql_error()); | |
| 31 | + $this->iNoOfRecords = mysql_num_rows($this->oQueryResult); | |
| 32 | + if ($this->iNoOfRecords > 0) { | |
| 33 | + while($obj = mysql_fetch_object($this->oQueryResult)) { | |
| 34 | + $this->aSelectRecords[] = $obj; | |
| 35 | + } | |
| 36 | + mysql_free_result($this->oQueryResult); | |
| 37 | + } | |
| 38 | + $this->aArrRec = $this->aSelectRecords; | |
| 39 | + return $this->aArrRec; | |
| 40 | + } | |
| 41 | + | |
| 42 | + | |
| 43 | + /* Select Records */ | |
| 44 | + function selectRecords ($sSqlQuery) | |
| 45 | + { | |
| 46 | + unset($this->aSelectRecords); | |
| 47 | + $this->oQueryResult = mysql_query($sSqlQuery) or die(mysql_error()); | |
| 48 | + $this->iNoOfRecords = mysql_num_rows($this->oQueryResult); | |
| 49 | + if ($this->iNoOfRecords > 0) { | |
| 50 | + while ($oRow = mysql_fetch_array($this->oQueryResult,MYSQL_ASSOC)) { | |
| 51 | + $this->aSelectRecords[] = $oRow; | |
| 52 | + } | |
| 53 | + mysql_free_result($this->oQueryResult); | |
| 54 | + } | |
| 55 | + $this->aArrRec = $this->aSelectRecords; | |
| 56 | + return $this->aArrRec; | |
| 57 | + } | |
| 58 | + | |
| 59 | + /*Get Number of Records */ | |
| 60 | + function getNumberOfRecords () { | |
| 61 | + return $this->iNoOfRecords; | |
| 62 | + } | |
| 63 | + | |
| 64 | + /* Get selected data */ | |
| 65 | + function getSelectedData (){ | |
| 66 | + return $this->aSelectRecords; | |
| 67 | + } | |
| 68 | + | |
| 69 | + /* Insert Records */ | |
| 70 | + function insertRecords($sSqlQuery) | |
| 71 | + { | |
| 72 | + $this->bInsertRecords = mysql_query ($sSqlQuery) or die (mysql_error()); | |
| 73 | + $this->iInsertRecId = mysql_insert_id(); | |
| 74 | + return $this->iInsertRecId; | |
| 75 | + } | |
| 76 | + | |
| 77 | + /* Find Inserted Id */ | |
| 78 | + function getIdForInsertedRecord() | |
| 79 | + { | |
| 80 | + return $this->iInsertRecId; | |
| 81 | + } | |
| 82 | + | |
| 83 | + /* Update Records */ | |
| 84 | + function updateRecords($sSqlQuery) | |
| 85 | + { | |
| 86 | + return mysql_query($sSqlQuery) or die(mysql_error()); | |
| 87 | + } | |
| 88 | + function deleteRecords($sSqlQuery) | |
| 89 | + { | |
| 90 | + return mysql_query($sSqlQuery) or die(mysql_error()); | |
| 91 | + } | |
| 92 | + /* 測試新增用 */ | |
| 93 | + function insertUser($sSqlQuery) | |
| 94 | + { | |
| 95 | + return mysql_query($sSqlQuery) or die(mysql_error()); | |
| 96 | + } | |
| 97 | + | |
| 98 | + /* 建立資料表 */ | |
| 99 | + function creatTable($sSqlQuery) | |
| 100 | + { | |
| 101 | + return mysql_query($sSqlQuery) or die(mysql_error()); | |
| 102 | + } | |
| 103 | + | |
| 104 | + | |
| 105 | + } | |
| 106 | +?> | |
| 0 | 107 | \ No newline at end of file | ... | ... | 
aa.php
| ... | ... | @@ -0,0 +1,57 @@ | 
| 1 | +<?php | |
| 2 | +header('refresh: 900;url="http://127.0.0.1/C25104/aa.php"'); | |
| 3 | +define ('INDEX','http://52.74.132.133/'); | |
| 4 | +define ('SYSTEM_DBHOST','52.74.132.133:3306'); | |
| 5 | +define ('SYSTEM_DBNAME','sanlien'); | |
| 6 | +define ('SYSTEM_DBUSER','3944'); | |
| 7 | +define ('SYSTEM_DBPWD','12345'); | |
| 8 | +define ('USER_DEVICE_SENSOR','user_device_sensor'); | |
| 9 | +define ('USER_DEVICE_SENSOR_LOAD','user_device_sensor_load'); | |
| 10 | +define ('USER_CONTACT','user_contact'); | |
| 11 | +define ('USER_DEVICE','user_device'); | |
| 12 | +include_once('Device.cls.php'); | |
| 13 | +include_once('WADB.cls.php'); | |
| 14 | +$project_code = array('C25104'); | |
| 15 | + | |
| 16 | +$Device = new Device(); | |
| 17 | +$i = 0; | |
| 18 | +foreach(@$project_code as $key => $value){ | |
| 19 | + $sensor_data_load_info = $Device->get_sensor_load_data_list($value); //load檔資料 | |
| 20 | + foreach(@$sensor_data_load_info as $k => $v){ | |
| 21 | + $load_data[] = $sensor_data_load_info[$i]['load_data']; | |
| 22 | + $i++; | |
| 23 | + } | |
| 24 | +} | |
| 25 | +$load_data = array_unique($load_data); | |
| 26 | +// 連線,參數分別是 HOST, PORT, TIMEOUT | |
| 27 | +$conn = ftp_connect("219.92.14.237", 21, 60) or die("Connect FTP Server Fail"); | |
| 28 | + | |
| 29 | +// 登入 | |
| 30 | +ftp_login($conn, "SANLIEN", "QEWQTR"); | |
| 31 | + | |
| 32 | +// 使用被動模式,這個指令必須在ftp_login 後立即使用 | |
| 33 | +ftp_pasv($conn, true); | |
| 34 | + | |
| 35 | +//目前路徑,剛登入應該在 Home Dir /home/youracc/ | |
| 36 | +$pwd= ftp_pwd($conn); | |
| 37 | + | |
| 38 | +//改變路徑 chdir 進到 /home/youracc/path/to/ | |
| 39 | +ftp_chdir( $conn, '/loggernet'); | |
| 40 | + | |
| 41 | +//移到上一層 /home/youracc/path/ | |
| 42 | +//ftp_cdup( $conn); | |
| 43 | + | |
| 44 | +// 取回檔案,使用二進位的方式 | |
| 45 | +foreach(@$load_data as $key => $value){ | |
| 46 | + if($value != ""){ | |
| 47 | + if (ftp_get($conn, $value, $value, FTP_BINARY)) { | |
| 48 | + echo "Successfully written to local_file\n"; | |
| 49 | + } else { | |
| 50 | + echo "There was a problem\n"; | |
| 51 | + } | |
| 52 | + } | |
| 53 | +} | |
| 54 | +//關閉連結 | |
| 55 | +ftp_close($conn); | |
| 56 | + | |
| 57 | +?> | |
| 0 | 58 | \ No newline at end of file | ... | ... | 
backup/CR1000_TNBR_Table1.dat
| ... | ... | @@ -0,0 +1,40 @@ | 
| 1 | +"TOA5","CR1000_TNBR","CR1000","20787","CR1000.Std.15","CPU:CR1000_Manjung 8 channel 1min.CR1","15719","Table1" | |
| 2 | +"TIMESTAMP","RECORD","BattV","PTemp_C","Temp_C(1)","Temp_C(2)","Temp_C(3)","Temp_C(4)","Temp_C(5)","Temp_C(6)","Temp_C(7)","Temp_C(8)" | |
| 3 | +"TS","RN","Volts","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C","Deg C" | |
| 4 | +"","","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp" | |
| 5 | +"2016-05-30 16:30:00",0,12.93,33.47,369.3,373.2,362.7,"NAN",33.96,"NAN",321.5,33.39 | |
| 6 | +"2016-05-30 16:31:00",1,12.93,33.43,369.6,373.4,363,"NAN",34.25,"NAN",321.7,33.52 | |
| 7 | +"2016-05-30 16:32:00",2,12.93,33.4,369.7,373.6,363.2,"NAN",33.4,210.2,321.8,33.56 | |
| 8 | +"2016-05-30 16:33:00",3,12.93,33.43,369.6,373.4,363.3,322.5,33.76,210.6,322,33.43 | |
| 9 | +"2016-05-30 16:34:00",4,12.92,33.43,369.5,373.3,363.2,322,33.92,210.6,321.8,33.27 | |
| 10 | +"2016-05-30 16:35:00",5,12.93,33.4,369.1,372.8,362.8,321.2,34.05,210.5,321.5,33.4 | |
| 11 | +"2016-05-30 16:36:00",6,12.93,33.4,368.6,372.5,362.3,320.5,33.97,"NAN",320.7,33.4 | |
| 12 | +"2016-05-30 16:37:00",7,12.93,33.4,368.2,372.1,361.9,319.7,34.05,"NAN",320.2,33.24 | |
| 13 | +"2016-05-30 16:38:00",8,12.93,33.4,367.8,371.7,"NAN",317.2,34.21,"NAN",319.4,33.56 | |
| 14 | +"2016-05-30 16:39:00",9,12.93,33.32,367.2,371.1,361.5,315.5,34.14,216.3,318.5,33.65 | |
| 15 | +"2016-05-30 16:40:00",10,12.93,33.29,366.8,370.8,361.1,315.8,33.94,215,317.7,32.8 | |
| 16 | +"2016-05-30 16:41:00",11,12.93,33.29,366.5,370.6,360.8,315.8,34.01,214.3,317.6,33.93 | |
| 17 | +"2016-05-30 16:42:00",12,12.93,33.29,366.4,370.8,360.6,315.2,33.93,212.1,317.1,33.85 | |
| 18 | +"2016-05-30 16:43:00",13,12.93,33.29,366.5,370.8,360.6,313.8,33.85,211.9,316.8,33.85 | |
| 19 | +"2016-05-30 16:44:00",14,12.93,33.29,366.9,371.1,360.8,313.9,33.85,212.1,316.4,33.85 | |
| 20 | +"2016-05-30 16:45:00",15,12.93,33.25,367.4,371.5,361.2,314.6,34.22,"NAN",316.3,34.14 | |
| 21 | +"2016-05-30 16:46:00",16,12.92,33.21,367.9,371.9,361.6,314.5,34.26,"NAN",316.4,34.26 | |
| 22 | +"2016-05-30 16:47:00",17,12.94,33.17,368.3,372.4,362,314.1,34.06,211.9,316.6,34.22 | |
| 23 | +"2016-05-30 16:48:00",18,12.94,33.17,368.7,372.7,362.4,314,33.74,213.4,316.6,33.74 | |
| 24 | +"2016-05-30 16:49:00",19,12.94,33.1,368.9,373.1,362.7,314.5,34.15,213.7,316.6,34.15 | |
| 25 | +"2016-05-30 16:50:00",20,12.93,32.99,369.1,373.1,363,313.8,33.71,214.2,316.5,33.71 | |
| 26 | +"2016-05-30 16:51:00",21,12.94,32.92,369.1,373.2,"NAN",311.7,33.64,214.5,315.9,33.32 | |
| 27 | +"2016-05-30 16:52:00",22,12.94,32.81,369.1,372.9,"NAN",311,33.53,215,315.3,33.37 | |
| 28 | +"2016-05-30 16:53:00",23,12.94,32.77,368.9,372.7,363,310.2,33.41,217.8,314.7,33.33 | |
| 29 | +"2016-05-30 16:54:00",24,12.95,32.77,368.7,372.6,362.9,310,33.01,217.6,314,32.85 | |
| 30 | +"2016-05-30 16:55:00",25,12.93,32.77,368.2,372.1,362.6,308.4,32.93,217.5,313.2,32.85 | |
| 31 | +"2016-05-30 16:56:00",26,12.95,32.73,367.8,371.6,362.3,308,32.65,217.1,312.4,32.65 | |
| 32 | +"2016-05-30 16:57:00",27,12.94,32.77,367.4,371.3,361.9,306.9,32.53,217.1,311.5,32.53 | |
| 33 | +"2016-05-30 16:58:00",28,12.93,32.81,367.1,370.9,361.7,306.9,32.56,217,310.7,32.56 | |
| 34 | +"2016-05-30 16:59:00",29,12.94,32.81,366.7,370.1,361.3,307.3,32.56,210.4,310.2,32.4 | |
| 35 | +"2016-05-30 17:00:00",30,12.93,32.84,366.4,369.8,361.1,309.2,32.84,212.3,310.1,32.76 | |
| 36 | +"2016-05-30 17:01:00",31,12.93,32.84,366.4,370,360.9,310.1,33.25,211.7,310.3,33.08 | |
| 37 | +"2016-05-30 17:02:00",32,12.94,32.88,366.5,370.2,360.8,309.2,32.96,211.6,310.5,32.72 | |
| 38 | +"2016-05-30 17:03:00",33,12.94,32.88,366.6,370.3,360.7,308,33.04,212,310.3,32.72 | |
| 39 | +"2016-05-30 17:04:00",34,12.94,32.88,366.8,370.4,"NAN",308.3,33.04,204.8,310.4,32.72 | |
| 40 | + | ... | ... |