altob.rd 8 anni fa
parent
commit
2b0cd33515
6 ha cambiato i file con 142 aggiunte e 66 eliminazioni
  1. +12
    -3
      controllers/Carpark.php
  2. +47
    -6
      controllers/Cars.php
  3. +2
    -0
      controllers/Pks.php
  4. +55
    -54
      models/Cars_model.php
  5. +9
    -3
      models/Pks_model.php
  6. +17
    -0
      models/Sync_data_model.php

+ 12
- 3
controllers/Carpark.php Vedi File

@@ -17,6 +17,8 @@ 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(); // 共用變數
@@ -57,7 +59,9 @@ class Carpark extends CI_Controller
$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->sync_data_model->init($this->vars); // for mqtt
// init sync model
$this->sync_data_model->init($this->vars);
// 產生 excel 報表
$this->load->model('excel_model');
@@ -252,13 +256,18 @@ 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->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},TICKET,{$parms['lpr']}");
$this->cars_model->temp_opendoors($parms); // 臨停訊號
}
else
{
$this->cars_model->mq_send_opendoor(MQ_TOPIC_OPEN_DOOR, "DO{$parms['ivsno']},OPEN,{$parms['lpr']}"); // 月租訊號
//$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->stop();
echo 'ok';


+ 47
- 6
controllers/Cars.php Vedi File

@@ -30,6 +30,8 @@ var ip='66.249.82.183';var clientid='565162cb67dfb';var mqtt_ip='192.168.51.11';
define('LOG_PATH', FILE_BASE.APP_NAME.'/logs/'); // log path name
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();
@@ -107,12 +109,7 @@ class Cars extends CI_Controller
$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;
// init again
$this->sync_data_model->init($this->vars); // for mqtt
$this->load->model('cars_model');
$this->cars_model->init($this->vars);
trigger_error(__FUNCTION__ . "..init mqtt..{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}");
}
@@ -158,6 +155,10 @@ 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();
}
@@ -188,7 +189,9 @@ 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); // 如果資料夾不存在, 建立日期資料夾
@@ -224,6 +227,9 @@ 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();
}
@@ -234,10 +240,45 @@ 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();
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
- 0
controllers/Pks.php Vedi File

@@ -21,6 +21,8 @@ method: POST
上傳圖檔欄位名稱為cars
*/

require_once(MQ_CLASS_FILE);

class Pks extends CI_Controller
{
var $vars = array(); // 共用變數


+ 55
- 54
models/Cars_model.php Vedi File

@@ -3,7 +3,6 @@
file: cars_model.php
*/
require_once(ALTOB_SYNC_FILE) ;
require_once(MQ_CLASS_FILE);
define('CARS_TMP_LOG', 'cars_tmp_log'); // 暫存進出車號
@@ -27,12 +26,16 @@ class Cars_model extends CI_Model
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');
$this->vars['mqtt']->connect();
// 開門專用
$this->vars['mqtt_opendoor'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid() . 'mqtt_opendoor');
$this->vars['mqtt_opendoor']->connect();
$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..');
}
}
@@ -43,72 +46,43 @@ class Cars_model extends CI_Model
{
$this->vars['mqtt']->close();
}
if(isset($this->vars['mqtt_opendoor']))
{
$this->vars['mqtt_opendoor']->close();
}
}
// 車輛進出傳入車牌號碼 (2016/07/27)
// 開門, 字幕
public function opendoor_lprio($parms)
{
$parms['lpr'] = urldecode($parms['lpr']);
$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 找車牌
}
}
trigger_error(__FUNCTION__ . '|車牌傳入 [開門]:' . print_r($parms, true));
$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']);
$rows = array();
// $parms['ts'] = date('Y-m-d H:i:s', $parms['ts']);
trigger_error('車牌傳入:' . print_r($parms, true));
trigger_error(__FUNCTION__ . '車牌傳入 [資料]:' . print_r($parms, true));
if ($parms['etag'] != 'NONE')
{
if ($parms['lpr'] != 'NONE')
{
// 有車牌有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 找車牌
get_headers("http://localhost/cars.html/check_lpr_etag/{$parms['lpr']}/{$parms['etag']}");
}
}
$rows = $this->get_member($parms['lpr']);
$this->save_db_io($parms, $rows);
$this->save_db_io($parms, $rows); // 資料
return true;
}
// 入出口異動cario
public function save_db_io($parms, $rows, $opendoor=false)
function save_db_io($parms, $rows, $opendoor=false)
{
if (!empty($rows['lpr_correct'])) $parms['lpr'] = $rows['lpr_correct'];
@@ -1173,32 +1147,59 @@ class Cars_model extends CI_Model
// 送出至message queue(目前用mqtt)
public function mq_send($topic, $msg)
function mq_send($topic, $msg)
{
$this->vars['mqtt']->publish($topic, $msg, 0);
trigger_error("mqtt:{$topic}|{$msg}");
}
// 開門專用
public function mq_send_opendoor($topic, $msg)
// 產生 CK
public function gen_opendoor_ck($parms)
{
$this->vars['mqtt_opendoor']->publish($topic, $msg, 0);
trigger_error("mqtt_opendoor:{$topic}|{$msg}");
}
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']}");
//$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']}");
//$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';
}
// 指派車位


+ 9
- 3
models/Pks_model.php Vedi File

@@ -3,8 +3,6 @@
file: pks_model.php 車位在席資料庫處理模組
*/

require_once(MQ_CLASS_FILE);

class Pks_model extends CI_Model
{
var $vars = array();
@@ -23,7 +21,15 @@ class Pks_model extends CI_Model
{
// 一般
$this->vars['mqtt'] = new phpMQTT($this->vars['mqtt_ip'], $this->vars['mqtt_port'], uniqid(). 'mqtt');
$this->vars['mqtt']->connect();
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..');
}
}


+ 17
- 0
models/Sync_data_model.php Vedi File

@@ -23,6 +23,22 @@ 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..');
}
}
// 結束
@@ -31,6 +47,7 @@ class Sync_data_model extends CI_Model
if(isset($this->vars['mqtt']))
{
$this->vars['mqtt']->close();
trigger_error(__FUNCTION__ . '..mqtt close..' . "{$this->vars['mqtt_ip']}:{$this->vars['mqtt_port']}");
}
}


Loading…
Annulla
Salva