Blame view

CR.php 19.8 KB
1ee0c7177   tom200e   first
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <?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();
  ?>
  	<table width="100%" border="1" cellpadding="0" cellspacing="0" style="text-align:center">
                      <thead>
                          <tr>
                              <th style="text-align:center"><?PHP echo '裝置名稱'; ?></th>
                              <th style="text-align:center"><?PHP echo '欄位'; ?></th>
  							<th style="text-align:center"><?PHP echo '時間'; ?></th>
                              <th style="text-align:center"><?PHP echo '電壓'; ?></th>
                              <th style="text-align:center"><?PHP echo '溫度'; ?></th>
                              <th style="text-align:center"><?PHP echo '計算後'; ?></th>
                              <th style="text-align:center"><?PHP echo '初始值'; ?></th>
                              <th style="text-align:center"><?PHP echo '上-下行動值'; ?></th>
                              <th style="text-align:center"><?PHP echo '上-下警戒值'; ?></th>
                              <th style="text-align:center"><?PHP echo '擷取上-下值'; ?></th>
  							<th style="text-align:center"><?PHP echo '原始上-下值'; ?></th>
                              <th style="text-align:center"><?PHP echo '通知者'; ?></th>
  
                          </tr>
                      </thead>
                      <?PHP
  					$filename = "CR1000_TNBR_Table1.dat";
  					$project_code = 'C25104';
  						if($filename != ""){		
  							$num = 0;
  							$sensor_data_load_info = $Device->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']."<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'];
  									(@$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']];
  										?>
  											<tr data-gt="<?php echo $name ?>" class="<?php echo ($key % 2 == 0) ? 'aa' : 'bb'; ?>">
  											  <td><?php echo $value['name'] ?></td>
  											   <td><?php echo $value['dat'] ?></td>
  												<td><?php echo $sensor_date[$j] = ($sensor_date[$j] != "") ? $sensor_date[$j]:$sensor_date[$j+1];?></td>
  												<td><?php echo $sensor_voltage[$j] = ($sensor_voltage[$j] != "") ? $sensor_voltage[$j]:$sensor_voltage[$j+1]; ?></td>
  												<td><?php echo $sensor_temperature[$j] = ($sensor_temperature[$j] != "") ? $sensor_temperature[$j]:$sensor_temperature[$j+1]; ?></td>
  												<td><?php echo $Calculat; ?></td>
  												<td><?php echo $default_val ?></td>
  												<td><?php echo $top_active[$value['name']]." - " .$down_active[$value['name']];  ?></td>
  												<td><?php echo $top_alert[$value['name']]." - " .$down_alert[$value['name']]; ?></td>
  												<td><?php echo $upper_limit[$value['name']]." - " .$lower_limit[$value['name']]; ?></td>
  												<td><?php echo $upper[$value['name']]." - " .$lower[$value['name']]; ?></td>
  												<td>
  												
  														
  												</td>
  											</tr>
  											<?PHP
  											//檔案內時間欄位$sensor_date[$i]
  											
  											$date = strtotime(str_replace('"','',$sensor_date[$j]));
  											$total = $total_sum-$total_default+$subsum;
  											$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);
  											$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']."<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'];
  									(@$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']];
  										?>
  											<tr data-gt="<?php echo $name ?>" class="<?php echo ($key % 2 == 0) ? 'aa' : 'bb'; ?>">
  											  <td><?php echo $value['name'] ?></td>
  											   <td><?php echo $value['dat'] ?></td>
  												<td><?php echo $sensor_date[$j] = ($sensor_date[$j] != "") ? $sensor_date[$j]:$sensor_date[$j+1];?></td>
  												<td><?php echo $sensor_voltage[$j] = ($sensor_voltage[$j] != "") ? $sensor_voltage[$j]:$sensor_voltage[$j+1]; ?></td>
  												<td><?php echo $sensor_temperature[$j] = ($sensor_temperature[$j] != "") ? $sensor_temperature[$j]:$sensor_temperature[$j+1]; ?></td>
  												<td><?php echo $Calculat; ?></td>
  												<td><?php echo $default_val ?></td>
  												<td><?php echo $top_active[$value['name']]." - " .$down_active[$value['name']];  ?></td>
  												<td><?php echo $top_alert[$value['name']]." - " .$down_alert[$value['name']]; ?></td>
  												<td><?php echo $upper_limit[$value['name']]." - " .$lower_limit[$value['name']]; ?></td>
  												<td><?php echo $upper[$value['name']]." - " .$lower[$value['name']]; ?></td>
  												<td>
  												
  														
  												</td>
  											</tr>
  											<?PHP
  											//檔案內時間欄位$sensor_date[$i]
  											
  											$date = strtotime(str_replace('"','',$sensor_date[$j]));
  											$total = $total_sum-$total_default+$subsum;
  											$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);
  											$j++;
  										}
  										
  									}//for迴圈終點
  									
  								}
  								$num++;
  							}			
  			}			
  	}
  					
  						 
                      ?>		
                  </table>