VM暫存
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 line
4.9KB

  1. <?php
  2. /*
  3. file: cars.php 車輛進出場處理
  4. */
  5. class Cars extends CC_Controller
  6. {
  7. function __construct()
  8. {
  9. parent::__construct('cars');
  10. ignore_user_abort(); // 接受client斷線, 繼續run
  11. if(in_array($this->router->fetch_method(), array(
  12. 'ipcam', 'ipcam_meta',
  13. 'check_lpr_etag',
  14. 'opendoor',
  15. 'temp_opendoors', 'member_opendoors'
  16. )))
  17. {
  18. ob_end_clean();
  19. ignore_user_abort();
  20. ob_start();
  21. echo 'ok';
  22. header('Connection: close');
  23. header('Content-Length: ' . ob_get_length());
  24. ob_end_flush();
  25. flush();
  26. }
  27. }
  28. /*
  29. 出入口
  30. 說明: 與ipcam相同判斷邏輯, 但不做任何資料更改
  31. */
  32. public function opendoor()
  33. {
  34. // 初始 mqtt
  35. $this->init_mqtt();
  36. // 執行
  37. $parms = $this->uri->uri_to_assoc(3);
  38. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  39. $this->app_model()->opendoor_lprio($parms);
  40. }
  41. // IVS -> 車號, 影像
  42. /*
  43. 鼎高IVS傳送車號及影像檔
  44. http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/color/NULL/sq/0/ts/1441051995/sq2/0/etag/ABCD123456789/ant/1
  45. sno: 場站編號(光興國小:12119)
  46. ivsno: ivs編號, 每一支都是獨立編號(序號)
  47. io: i:進場, o:出場
  48. type: C:汽車, H:重機, M:機車
  49. lpr: ABC-1234(車號)
  50. color: red(紅色), 若無請用NULL(4個字)
  51. sq: 序號(參考用)
  52. sq2: 暫不用
  53. etag: eTag ID
  54. ant: eTag
  55. http設定說明:
  56. method: POST
  57. 上傳圖檔名英數字, 副檔名為gif/jpg/png均可
  58. 上傳圖檔欄位名稱為cars
  59. */
  60. public function ipcam()
  61. {
  62. // 執行
  63. $parms = $this->uri->uri_to_assoc(3);
  64. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  65. // 同步並送出一次出入口 888
  66. $this->data_model()->sync_888($parms);
  67. $pic_folder = CAR_PIC.$this->vars['date_num'].'/'; // 今日資料夾名(yyyymmdd)
  68. if (!file_exists($pic_folder)) mkdir($pic_folder); // 如果資料夾不存在, 建立日期資料夾
  69. $config['upload_path'] = $pic_folder;
  70. // $config['allowed_types'] = 'gif|jpg|png';
  71. $config['allowed_types'] = '*';
  72. // ex. lpr_1625AB_I_1_152_C_1_2015080526.jpg -> car_交易序號_進出_順序_車號_時間.jpg
  73. $config['file_name'] = "lpr-{$parms['lpr']}-{$parms['io']}-{$parms['ivsno']}-{$parms['sq']}-{$parms['type']}-{$parms['sq2']}-{$this->vars['time_num']}.jpg";
  74. if (!isset($_FILES['cars']))
  75. {
  76. $status = 'error'; // 顯示上傳錯誤
  77. trigger_error('[ERROR] cars not found: ' . print_r($_FILES, true));
  78. }
  79. else
  80. {
  81. $this->load->library('upload', $config);
  82. if(!$this->upload->do_upload('cars')){
  83. $status = 'error'; // 顯示上傳錯誤
  84. trigger_error($this->upload->display_errors());
  85. }
  86. else
  87. {
  88. // 若無錯誤,則上傳檔案
  89. $file = $this->upload->data('cars');
  90. $status = 'ok';
  91. }
  92. }
  93. $parms['obj_type'] = 1; // 車牌類
  94. $parms['curr_time_str'] = $this->vars['date_time']; // 現在時間, 例2015-09-21 15:36:47
  95. $parms['pic_name'] = $config['file_name']; // 圖片檔名
  96. $this->app_model()->lprio($parms); // 測試eTag
  97. }
  98. /*
  99. 出入口
  100. 說明: 特殊方式進出註記 (ex. 悠遊卡)
  101. */
  102. public function ipcam_meta()
  103. {
  104. $parms = $this->uri->uri_to_assoc(3);
  105. $parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
  106. // 執行
  107. $this->app_model()->ipcam_meta($parms);
  108. }
  109. // 用車牌與eTag, 檢查資料庫
  110. public function check_lpr_etag()
  111. {
  112. $lpr = $this->uri->segment(3);
  113. $etag = $this->uri->segment(4);
  114. // 執行
  115. $this->app_model()->check_lpr_etag($lpr, $etag);
  116. exit;
  117. }
  118. // 開門 (臨停)
  119. public function temp_opendoors()
  120. {
  121. $parms['ivsno'] = $this->uri->segment(3);
  122. $parms['lpr'] = $this->uri->segment(4);
  123. $parms['ck'] = $this->uri->segment(5);
  124. // 初始 mqtt
  125. $this->init_mqtt();
  126. // 執行
  127. $result = $this->app_model()->do_temp_opendoor($parms);
  128. trigger_error(__FUNCTION__ . "..{$result}.." . print_r($parms, true));
  129. exit;
  130. }
  131. // 開門 (臨停)
  132. public function member_opendoors()
  133. {
  134. $parms['ivsno'] = $this->uri->segment(3);
  135. $parms['lpr'] = $this->uri->segment(4);
  136. $parms['ck'] = $this->uri->segment(5);
  137. // 初始 mqtt
  138. $this->init_mqtt();
  139. // 執行
  140. $result = $this->app_model()->do_member_opendoor($parms);
  141. trigger_error(__FUNCTION__ . "..{$result}.." . print_r($parms, true));
  142. exit;
  143. }
  144. }