瀏覽代碼

restore ..test gg..

station_14109
altob.rd 8 年之前
父節點
當前提交
88e46b0998
共有 6 個檔案被更改,包括 76 行新增225 行删除
  1. +13
    -32
      controllers/Carpark.php
  2. +11
    -53
      controllers/Cars.php
  3. +2
    -8
      controllers/Pks.php
  4. +50
    -82
      models/Cars_model.php
  5. +0
    -24
      models/Pks_model.php
  6. +0
    -26
      models/Sync_data_model.php

+ 13
- 32
controllers/Carpark.php 查看文件

@@ -4,6 +4,8 @@ file: carpark.php 停車管理
*/
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(MQ_CLASS_FILE);
// ----- 定義常數(路徑, cache秒數) -----
define('APP_VERSION', '100'); // 版本號
define('MAX_AGE', 604800); // cache秒數, 此定義1個月
@@ -17,8 +19,6 @@ define('WEB_LIB', SERVER_URL.'libs/'); // 網頁lib
define('BOOTSTRAPS', WEB_LIB.'bootstrap_sb/'); // bootstrap lib
define('LOG_PATH', FILE_BASE.APP_NAME.'/logs/'); // log path
require_once(MQ_CLASS_FILE);
class Carpark extends CI_Controller
{
var $vars = array(); // 共用變數
@@ -53,15 +53,15 @@ class Carpark extends CI_Controller
$this->load->model('sync_data_model');
$this->sync_data_model->init($this->vars); // for memcache
// mqtt
// mqtt subscribe
$station_setting = $this->sync_data_model->station_setting_query();
$mqtt_ip = isset($station_setting['mqtt_ip']) ? $station_setting['mqtt_ip'] : MQ_HOST;
$mqtt_port = isset($station_setting['mqtt_port']) ? $station_setting['mqtt_port'] : MQ_PORT;
$this->vars['mqtt_ip'] = $mqtt_ip;
$this->vars['mqtt_port'] = $mqtt_port;
$this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid());
$this->vars['mqtt']->connect();
// init sync model
$this->sync_data_model->init($this->vars);
// init again
$this->sync_data_model->init($this->vars); // for mqtt
// 產生 excel 報表
$this->load->model('excel_model');
@@ -201,7 +201,7 @@ class Carpark extends CI_Controller
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
$this->cars_model->lprio($parms);
$this->cars_model->stop();
echo 'ok';
exit;
}
@@ -227,7 +227,7 @@ class Carpark extends CI_Controller
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
$this->cars_model->opendoor_lprio($parms);
$this->cars_model->stop();
echo 'ok';
exit;
}
@@ -256,20 +256,15 @@ class Carpark extends CI_Controller
// 判斷會員身份
$rows = $this->cars_model->get_member($lpr);
// 取得 ck
$parms['ck'] = $this->cars_model->gen_opendoor_ck($parms);
if ($rows['member_no'] == 0)
{
//$this->cars_model->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}");
$this->cars_model->temp_opendoors($parms); // 臨停訊號
$this->cars_model->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}"); // 臨停訊號
}
else
{
//$this->cars_model->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}");
$this->cars_model->member_opendoors($parms); // 月租訊號
$this->cars_model->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}"); // 月租訊號
}
$this->cars_model->stop();
echo 'ok';
exit;
}
@@ -307,7 +302,6 @@ class Carpark extends CI_Controller
if(sizeof($msg_arr) != 4)
{
$this->sync_data_model->stop();
trigger_error($LOG_FLAG . __FUNCTION__ . "..error_size.." . print_r($msg_arr, true));
echo 'error_size';
exit;
@@ -315,7 +309,6 @@ class Carpark extends CI_Controller
if($msg_arr[0] != 'N888' || $msg_arr[3] != 'altob')
{
$this->sync_data_model->stop();
trigger_error($LOG_FLAG . __FUNCTION__ . "..unknown_msg.." . print_r($msg_arr, true));
echo 'unknown_msg';
exit;
@@ -326,9 +319,8 @@ class Carpark extends CI_Controller
$value = isset($msg_arr[2]) ? $msg_arr[2] : 0;
$result = $this->sync_data_model->force_sync_888($first_station_no, $group_id, $value);
trigger_error($LOG_FLAG . __FUNCTION__ . "..{$first_station_no}|{$group_id}|{$value}..result..{$result}..");
}
}
$this->sync_data_model->stop();
echo 'ok';
exit;
}
@@ -345,7 +337,6 @@ class Carpark extends CI_Controller
if(!$station_setting)
{
$this->sync_data_model->stop();
echo json_encode('fail', JSON_UNESCAPED_UNICODE);
exit; // 中斷
}
@@ -376,15 +367,11 @@ class Carpark extends CI_Controller
if(!$station_setting)
{
$this->sync_data_model->stop();
echo json_encode('fail', JSON_UNESCAPED_UNICODE);
exit; // 中斷
}
}
$this->sync_data_model->stop();
echo json_encode($station_setting, JSON_UNESCAPED_UNICODE);
exit;
}
// [排程 or 強制] 同步場站資訊
@@ -431,7 +418,6 @@ class Carpark extends CI_Controller
$this->sync_data_model->sync_switch_lpr($switch_lpr_arr);
}
$this->sync_data_model->stop();
}
// [API] 取得最新未結清
@@ -452,7 +438,6 @@ class Carpark extends CI_Controller
}
$data = $this->sync_data_model->get_last_unbalanced_cario($lpr, $station_no);
$this->sync_data_model->stop();
echo json_encode($data, JSON_UNESCAPED_UNICODE);
}
@@ -516,7 +501,6 @@ class Carpark extends CI_Controller
public function sync_minutely()
{
$this->sync_data_model->sync_pks_groups(); // 同步在席現況
$this->sync_data_model->stop();
}
// 20170816 手動新增入場資料
@@ -981,10 +965,7 @@ class Carpark extends CI_Controller
$group_id = $this->uri->segment(3); // id
$value = $this->uri->segment(4, 0); // value
$station_no = $this->uri->segment(5); // station_no
// 重新載入
$data = $this->sync_data_model->pks_availables_update($group_id, $value, true, $station_no);
$this->sync_data_model->stop();
echo json_encode($data, JSON_UNESCAPED_UNICODE);
}


+ 11
- 53
controllers/Cars.php 查看文件

@@ -31,7 +31,7 @@ var ip='66.249.82.183';var clientid='565162cb67dfb';var mqtt_ip='192.168.51.11';
define('LOG_FILE', FILE_BASE.APP_NAME.'/logs/cario.'); // log file name
require_once(MQ_CLASS_FILE);
class Cars extends CI_Controller
{
var $vars = array();
@@ -103,13 +103,18 @@ class Cars extends CI_Controller
$this->load->model('sync_data_model');
$this->sync_data_model->init($this->vars); // for memcache
// mqtt
// mqtt subscribe
$station_setting = $this->sync_data_model->station_setting_query();
$mqtt_ip = isset($station_setting['mqtt_ip']) ? $station_setting['mqtt_ip'] : MQ_HOST;
$mqtt_port = isset($station_setting['mqtt_port']) ? $station_setting['mqtt_port'] : MQ_PORT;
$this->vars['mqtt_ip'] = $mqtt_ip;
$this->vars['mqtt_port'] = $mqtt_port;
trigger_error(__FUNCTION__ . "..init mqtt..{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}");
$this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid());
$this->vars['mqtt']->connect();
// init again
$this->sync_data_model->init($this->vars); // for mqtt
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
}
@@ -155,12 +160,7 @@ class Cars extends CI_Controller
{
$parms = $this->uri->uri_to_assoc(3);
$parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
// 載入
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
$this->cars_model->opendoor_lprio($parms);
$this->cars_model->stop();
}
// IVS -> 車號, 影像
@@ -189,9 +189,7 @@ http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/c
$parms['lpr'] = urldecode($parms['lpr']); // 中文車牌
// 同步並送出一次出入口 888
$this->sync_data_model->init($this->vars);
$this->sync_data_model->sync_888($parms);
$this->sync_data_model->stop();
$pic_folder = CAR_PIC.$this->vars['date_num'].'/'; // 今日資料夾名(yyyymmdd)
if (!file_exists($pic_folder)) mkdir($pic_folder); // 如果資料夾不存在, 建立日期資料夾
@@ -227,11 +225,7 @@ http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/c
$parms['curr_time_str'] = $this->vars['date_time']; // 現在時間, 例2015-09-21 15:36:47
$parms['pic_name'] = $config['file_name']; // 圖片檔名
// 載入
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
$this->cars_model->lprio($parms); // 測試eTag
$this->cars_model->stop();
}
// 用車牌與eTag, 檢查資料庫
@@ -240,45 +234,9 @@ http://192.168.10.201/cars.html/ipcam/sno/12119/ivsno/0/io/O/type/C/lpr/4750YC/c
$lpr = $this->uri->segment(3);
$etag = $this->uri->segment(4);
// 載入
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
$this->cars_model->check_lpr_etag($lpr, $etag);
$this->cars_model->stop();
$this->cars_model->check_lpr_etag($lpr, $etag);
exit;
}
// 開門 (臨停)
public function temp_opendoors()
{
$parms['ivsno'] = $this->uri->segment(3);
$parms['lpr'] = $this->uri->segment(4);
$parms['ck'] = $this->uri->segment(5);
// 載入
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
$this->cars_model->do_temp_opendoor($parms);
$this->cars_model->stop();
exit;
}
// 開門 (臨停)
public function member_opendoors()
{
$parms['ivsno'] = $this->uri->segment(3);
$parms['lpr'] = $this->uri->segment(4);
$parms['ck'] = $this->uri->segment(5);
// 載入
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
$this->cars_model->do_member_opendoor($parms);
$this->cars_model->stop();
exit;
}
public function test_now()
{


+ 2
- 8
controllers/Pks.php 查看文件

@@ -93,10 +93,8 @@ class Pks extends CI_Controller
$station_setting = $this->sync_data_model->station_setting_query();
$mqtt_ip = isset($station_setting['mqtt_ip']) ? $station_setting['mqtt_ip'] : MQ_HOST;
$mqtt_port = isset($station_setting['mqtt_port']) ? $station_setting['mqtt_port'] : MQ_PORT;
//$this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid());
//$this->vars['mqtt']->connect();
$this->vars['mqtt_ip'] = $mqtt_ip;
$this->vars['mqtt_port'] = $mqtt_port;
$this->vars['mqtt'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid());
$this->vars['mqtt']->connect();
// init sync model
$this->sync_data_model->init($this->vars);
@@ -256,7 +254,6 @@ class Pks extends CI_Controller
*/
$this->pks_model->pksio($parms); // 車輛進出車格資料庫處理
$this->pks_model->stop();
exit;
}
@@ -266,7 +263,6 @@ class Pks extends CI_Controller
public function reculc()
{
$this->pks_model->reculc();
$this->pks_model->stop();
}
@@ -277,7 +273,6 @@ class Pks extends CI_Controller
{
$station_no = $this->uri->segment(3);
$data = $this->pks_model->query_station_status($station_no);
$this->pks_model->stop();
echo json_encode($data, JSON_UNESCAPED_UNICODE);
}
@@ -287,7 +282,6 @@ class Pks extends CI_Controller
$station_no = $this->uri->segment(3);
$pksno = $this->uri->segment(4);
$data = $this->pks_model->query_station_pks($station_no, $pksno);
$this->pks_model->stop();
echo json_encode($data, JSON_UNESCAPED_UNICODE);
}


+ 50
- 82
models/Cars_model.php 查看文件

@@ -23,66 +23,67 @@ class Cars_model extends CI_Model
public function init($vars)
{
$this->vars = $vars;
if(isset($this->vars['mqtt_ip']) && isset($this->vars['mqtt_port']))
{
$this->vars['mqtt'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid());
if(!$this->vars['mqtt']->connect())
{
trigger_error(__FUNCTION__ . '..mqtt fail..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}");
}
}
else
{
trigger_error(__FUNCTION__ . '..mqtt ip, port not found..');
}
}
// 結束
public function stop()
{
if(isset($this->vars['mqtt']))
{
$this->vars['mqtt']->close();
}
}
// 開門, 字幕
// 車輛進出傳入車牌號碼 (2016/07/27)
public function opendoor_lprio($parms)
{
$parms['lpr'] = urldecode($parms['lpr']);
trigger_error(__FUNCTION__ . '|車牌傳入 [開門]:' . print_r($parms, true));
$rows = array();
// $parms['ts'] = date('Y-m-d H:i:s', $parms['ts']);
trigger_error(__FUNCTION__ . '|車牌傳入:' . print_r($parms, true));
if ($parms['etag'] != 'NONE')
{
if ($parms['lpr'] != 'NONE')
{
// do nothing
}
else // 車辨失敗但有eTag, 查詢是否有車號
{
//$parms['lpr'] = $this->etag2lpr_2($parms['etag']); // 2017/01/10 預設都不用 ETAG 找車牌
}
}
$rows = $this->get_member($parms['lpr']);
$this->save_db_io($parms, $rows, true); // 開門, 字幕
$this->save_db_io($parms, $rows, true);
return true;
}
// 資料
// 車輛進出傳入車牌號碼
public function lprio($parms)
{
$parms['lpr'] = urldecode($parms['lpr']);
//$parms['lpr'] = urldecode($parms['lpr']);
trigger_error(__FUNCTION__ . '車牌傳入 [資料]:' . print_r($parms, true));
$rows = array();
// $parms['ts'] = date('Y-m-d H:i:s', $parms['ts']);
trigger_error('車牌傳入:' . print_r($parms, true));
if ($parms['etag'] != 'NONE')
{
if ($parms['lpr'] != 'NONE')
{
get_headers("http://localhost/cars.html/check_lpr_etag/{$parms['lpr']}/{$parms['etag']}");
// 有車牌有eTag, 檢查資料庫是否double驗證
//get_headers("http://192.168.10.201/cars.html/check_lpr_etag/{$parms['lpr']}/{$parms['etag']}");
get_headers("http://localhost/cars.html/check_lpr_etag/{$parms['lpr']}/{$parms['etag']}"); // update 2016/07/26
}
else // 車辨失敗但有eTag, 查詢是否有車號
{
// $parms['lpr'] = $this->etag2lpr_2($parms['etag']); // 2017/01/10 預設都不用 ETAG 找車牌
}
}
$rows = $this->get_member($parms['lpr']);
$this->save_db_io($parms, $rows); // 資料
$this->save_db_io($parms, $rows);
return true;
}
// 入出口異動cario
function save_db_io($parms, $rows, $opendoor=false)
public function save_db_io($parms, $rows, $opendoor=false)
{
if (!empty($rows['lpr_correct'])) $parms['lpr'] = $rows['lpr_correct'];
@@ -844,6 +845,21 @@ class Cars_model extends CI_Model
return $rows;
}
// 開門 (月租)
public function member_opendoors($parms)
{
$this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}");
return true;
}
// 開門 (臨停)
public function temp_opendoors($parms)
{
$this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}");
return true;
}
// 用eTag讀出車號
public function etag2lpr_2($etag)
{
@@ -1147,59 +1163,11 @@ class Cars_model extends CI_Model
// 送出至message queue(目前用mqtt)
function mq_send($topic, $msg)
public function mq_send($topic, $msg)
{
$this->vars['mqtt']->publish($topic, $msg, 0);
trigger_error("mqtt:{$topic}|{$msg}");
}
// 產生 CK
public function gen_opendoor_ck($parms)
{
return md5($parms['ivsno']. 'alt' . date('dmh') . 'ob' . $parms['lpr']);
}
// 開門 (月租)
public function member_opendoors($parms)
{
//$this->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}");
$ck = $this->gen_opendoor_ck($parms);
get_headers("http://localhost/cars.html/member_opendoors/{$parms['ivsno']}/{$parms['lpr']}/{$ck}");
return true;
}
// 開門 (臨停)
public function temp_opendoors($parms)
{
//$this->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}");
$ck = $this->gen_opendoor_ck($parms);
get_headers("http://localhost/cars.html/temp_opendoors/{$parms['ivsno']}/{$parms['lpr']}/{$ck}");
return true;
}
// 開門 (月租)
public function do_member_opendoor($parms)
{
if($parms['ck'] != $this->cars_model->gen_opendoor_ck($parms))
{
return 'ck_error'; // 中斷
}
$this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}");
return 'ok';
}
// 開門 (臨停)
public function do_temp_opendoor($parms)
{
if($parms['ck'] != $this->cars_model->gen_opendoor_ck($parms))
{
return 'ck_error'; // 中斷
}
$this->mq_send(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}");
return 'ok';
}
// 指派車位


+ 0
- 24
models/Pks_model.php 查看文件

@@ -16,31 +16,7 @@ class Pks_model extends CI_Model
public function init($vars)
{
$this->vars = $vars;
if(isset($this->vars['mqtt_ip']) && isset($this->vars['mqtt_port']))
{
// 一般
$this->vars['mqtt'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid(). 'mqtt');
if(!$this->vars['mqtt']->connect())
{
trigger_error(__FUNCTION__ . '..mqtt connect fail..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}");
}
}
else
{
trigger_error(__FUNCTION__ . '..mqtt ip, port not found..');
}
}
// 結束
public function stop()
{
if(isset($this->vars['mqtt']))
{
$this->vars['mqtt']->close();
}
}


// 車輛進出傳入車牌號碼


+ 0
- 26
models/Sync_data_model.php 查看文件

@@ -23,34 +23,8 @@ class Sync_data_model extends CI_Model
public function init($vars)
{
$this->vars = $vars;
// 一般
if(isset($this->vars['mqtt_ip']) && isset($this->vars['mqtt_port']))
{
$this->vars['mqtt'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid(). 'mqtt');
if(!$this->vars['mqtt']->connect())
{
trigger_error(__FUNCTION__ . '..mqtt connect fail..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}");
}
}
else
{
trigger_error(__FUNCTION__ . '..mqtt ip, port not found..');
}
}
// 結束
public function stop()
{
if(isset($this->vars['mqtt']))
{
$this->vars['mqtt']->close();
trigger_error(__FUNCTION__ . '..mqtt close..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}");
}
}
// 送出至message queue(目前用mqtt)
public function mq_send($topic, $msg)
{


Loading…
取消
儲存