diff --git a/config/constants.php b/config/constants.php index e53d60a..c07f824 100644 --- a/config/constants.php +++ b/config/constants.php @@ -82,6 +82,31 @@ define('MEMCACHE_PORT', 11211); // memcache post no (default:11211) /* |-------------------------------------------------------------------------- +| DELIMITER - 共用設定 +|-------------------------------------------------------------------------- +*/ + +define('SYNC_DELIMITER_ST_NAME', ' & '); // (拆分) 場站名稱 +define('SYNC_DELIMITER_ST_NO', ','); // (拆分) 場站編號 +define('SYNC_DELIMITER_ST_INFO', '|'); // (拆分) 其它 + +/* +|-------------------------------------------------------------------------- +| MEMCACHE KEY - 共用設定 +|-------------------------------------------------------------------------- +*/ + +define('MCACHE_STATION_NO_STR', 'station_no_str'); +define('MCACHE_STATION_NAME_STR', 'station_name_str'); +define('MCACHE_STATION_IP_STR', 'station_ip_str'); +define('MCACHE_STATION_PORT_STR', 'station_port_str'); +define('MCACHE_STATION_888_STR', 'station_888_str'); +define('MCACHE_SYNC_888_TMP_LOG', 'sync_888_tmp_log'); // 暫存 888 進出 + +define('MCACHE_STATION_SETTINGS', 'altob_station_settings'); // 場站設定匯整 + +/* +|-------------------------------------------------------------------------- | 自定義連結 - 共用設定 |-------------------------------------------------------------------------- */ diff --git a/controllers/Carpark.php b/controllers/Carpark.php index a4eb146..2867fe6 100644 --- a/controllers/Carpark.php +++ b/controllers/Carpark.php @@ -39,18 +39,27 @@ class Carpark extends CI_Controller $this->vars['mcache'] = new Memcache; $this->vars['mcache']->connect(MEMCACHE_HOST, MEMCACHE_PORT) or die ('Could not connect memcache'); - // mqtt subscribe + /* + // mqtt subscribe $this->vars['mqtt'] = new phpMQTT(MQ_HOST, MQ_PORT, uniqid()); //if(!$this->vars['mqtt']->connect()){ die ('Could not connect mqtt'); } $this->vars['mqtt']->connect(); + */ $this->load->model('carpark_model'); $this->carpark_model->init($this->vars); - // 微調剩餘車位數 + // 資料介接模組 $this->load->model('sync_data_model'); $this->sync_data_model->init($this->vars); + // 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'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid()); + $this->vars['mqtt']->connect(); + // 產生 excel 報表 $this->load->model('excel_model'); $this->excel_model->init($this->vars); diff --git a/controllers/Cars.php b/controllers/Cars.php index 227a5f8..5fed988 100644 --- a/controllers/Cars.php +++ b/controllers/Cars.php @@ -89,10 +89,23 @@ class Cars extends CI_Controller $this->vars['mcache'] = new Memcache; $this->vars['mcache']->pconnect(MEMCACHE_HOST, MEMCACHE_PORT) or die ('Could not connect memcache'); + /* // mqtt subscribe $this->vars['mqtt'] = new phpMQTT(MQ_HOST, MQ_PORT, uniqid()); //if(!$this->vars['mqtt']->connect()){ die ('Could not connect mqtt'); } if(!$this->vars['mqtt']->connect()){ trigger_error('..Could not connect mqtt..go on..'); } + */ + + // 資料介接模組 + $this->load->model('sync_data_model'); + $this->sync_data_model->init($this->vars); + + // 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'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid()); + $this->vars['mqtt']->connect(); $this->load->model('cars_model'); $this->cars_model->init($this->vars); @@ -170,8 +183,6 @@ 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->load->model('sync_data_model'); - $this->sync_data_model->init($this->vars); $this->sync_data_model->sync_888($parms); $pic_folder = CAR_PIC.$this->vars['date_num'].'/'; // 今日資料夾名(yyyymmdd) diff --git a/controllers/Pks.php b/controllers/Pks.php index e8e83a3..9e47e71 100644 --- a/controllers/Pks.php +++ b/controllers/Pks.php @@ -60,10 +60,11 @@ class Pks extends CI_Controller } set_error_handler(array($this, 'error_handler'), E_ALL); // 資料庫異動需做log + /* // mqtt subscribe $this->vars['mqtt'] = new phpMQTT(MQ_HOST, MQ_PORT, uniqid()); - if(!$this->vars['mqtt']->connect()){ die ('Could not connect mqtt'); } + */ // ----- 定義常數(路徑, cache秒數) ----- define('APP_VERSION', '100'); // 版本號 @@ -83,6 +84,17 @@ class Pks extends CI_Controller $this->load->model('pks_model'); $this->pks_model->init($this->vars); + + // 資料介接模組 + $this->load->model('sync_data_model'); + $this->sync_data_model->init($this->vars); + + // 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'] = new phpMQTT($mqtt_ip, $mqtt_port, uniqid()); + $this->vars['mqtt']->connect(); } diff --git a/models/Sync_data_model.php b/models/Sync_data_model.php index c609ad2..1910038 100644 --- a/models/Sync_data_model.php +++ b/models/Sync_data_model.php @@ -10,20 +10,6 @@ define('SYNC_PKS_GROUP_ID_MI', 'M888'); // 機車 888 define('SYNC_API_URL', 'http://61.219.172.11:60123/admins_station.html/'); -define('SYNC_DELIMITER_ST_NAME', ' & '); // (拆分) 場站名稱 -define('SYNC_DELIMITER_ST_NO', ','); // (拆分) 場站編號 -define('SYNC_DELIMITER_ST_INFO', '|'); // (拆分) 其它 - -define('MCACHE_STATION_NO_STR', 'station_no_str'); -define('MCACHE_STATION_NAME_STR', 'station_name_str'); -define('MCACHE_STATION_IP_STR', 'station_ip_str'); -define('MCACHE_STATION_PORT_STR', 'station_port_str'); -define('MCACHE_STATION_888_STR', 'station_888_str'); -define('MCACHE_MQTT_IP_STR', 'mqtt_ip_str'); -define('MCACHE_MQTT_PORT_STR', 'mqtt_port_str'); - -define('MCACHE_SYNC_888_TMP_LOG', 'sync_888_tmp_log'); // 暫存 888 進出 - class Sync_data_model extends CI_Model { var $vars = array(); @@ -614,21 +600,27 @@ class Sync_data_model extends CI_Model $station_no_arr = array(); $station_name_arr = array(); $station_888_arr = array(); - $mqtt_ip_arr = array(); - $mqtt_port_arr = array(); + + $settings = array(); foreach($station_setting_arr as $data) { - array_push($station_no_arr, $data['station_no']); + $station_no = $data['station_no']; + + array_push($station_no_arr, $station_no); array_push($station_name_arr, $data['short_name']); array_push($station_888_arr, $data['station_888']); - array_push($mqtt_ip_arr, empty($data['mqtt_ip']) ? MQ_HOST : $data['mqtt_ip']); - array_push($mqtt_port_arr, empty($data['mqtt_port']) ? MQ_PORT : $data['mqtt_port']); + + if(!isset($settings[$station_no])) + { + $settings[$station_no] = array(); + } + $settings[$station_no]['station_888'] = empty($data['station_888']) ? 1 : $data['station_888']; + $settings[$station_no]['mqtt_ip'] = empty($data['mqtt_ip']) ? MQ_HOST : $data['mqtt_ip']; + $settings[$station_no]['mqtt_port'] = empty($data['mqtt_port']) ? MQ_PORT : $data['mqtt_port']; } $station_no_str = implode(SYNC_DELIMITER_ST_NO, $station_no_arr); // 取值時會用到 $station_name_str = implode(SYNC_DELIMITER_ST_NAME, $station_name_arr); // 純顯示 $station_888_str = implode(SYNC_DELIMITER_ST_INFO, $station_888_arr); // 場站 888 設定 - $mqtt_ip_str = implode(SYNC_DELIMITER_ST_INFO, $mqtt_ip_arr); // 場站 MQTT ip - $mqtt_port_str = implode(SYNC_DELIMITER_ST_INFO, $mqtt_port_arr); // 場站 MQTT port // 設定到 mcache $this->vars['mcache']->set(MCACHE_STATION_NO_STR, $station_no_str); @@ -636,8 +628,7 @@ class Sync_data_model extends CI_Model $this->vars['mcache']->set(MCACHE_STATION_IP_STR, $station_ip_str); $this->vars['mcache']->set(MCACHE_STATION_PORT_STR, $station_port_str); $this->vars['mcache']->set(MCACHE_STATION_888_STR, $station_888_str); - $this->vars['mcache']->set(MCACHE_MQTT_IP_STR, $mqtt_ip_str); - $this->vars['mcache']->set(MCACHE_MQTT_PORT_STR, $mqtt_port_str); + $this->vars['mcache']->set(MCACHE_STATION_SETTINGS, $settings); return 'ok'; } @@ -649,14 +640,13 @@ class Sync_data_model extends CI_Model $station_ip_str = $this->vars['mcache']->get(MCACHE_STATION_IP_STR); $station_port_str = $this->vars['mcache']->get(MCACHE_STATION_PORT_STR); $station_888_str = $this->vars['mcache']->get(MCACHE_STATION_888_STR); - $mqtt_ip_str = $this->vars['mcache']->get(MCACHE_MQTT_IP_STR); - $mqtt_port_str = $this->vars['mcache']->get(MCACHE_MQTT_PORT_STR); + $settings = $this->vars['mcache']->get(MCACHE_STATION_SETTINGS); if( $reload || empty($station_no_str) || empty($station_name_str) || empty($station_ip_str) || empty($mqtt_ip_str) || - empty($station_port_str) || empty($mqtt_port_str) || - empty($station_888_str) + empty($station_888_str) || + empty($settings) ) { $result = $this->reload_station_setting(); @@ -668,8 +658,7 @@ class Sync_data_model extends CI_Model $station_ip_str = $this->vars['mcache']->get(MCACHE_STATION_IP_STR); $station_port_str = $this->vars['mcache']->get(MCACHE_STATION_PORT_STR); $station_888_str = $this->vars['mcache']->get(MCACHE_STATION_888_STR); - $mqtt_ip_str = $this->vars['mcache']->get(MCACHE_MQTT_IP_STR); - $mqtt_port_str = $this->vars['mcache']->get(MCACHE_MQTT_PORT_STR); + $settings = $this->vars['mcache']->get(MCACHE_STATION_SETTINGS); } else { @@ -684,14 +673,19 @@ class Sync_data_model extends CI_Model } } + // 第一個場站編號 + $station_no_arr = explode(SYNC_DELIMITER_ST_NO, $station_no_str); + $first_station_no = $station_no_arr[0]; + $station_setting = array(); $station_setting['station_no'] = $station_no_str; $station_setting['station_name'] = $station_name_str; $station_setting['station_ip'] = $station_ip_str; $station_setting['station_port'] = $station_port_str; $station_setting['station_888'] = $station_888_str; - $station_setting['mqtt_ip'] = $mqtt_ip_str; - $station_setting['mqtt_port'] = $mqtt_port_str; + $station_setting['settings'] = $settings; + $station_setting['mqtt_ip'] = $settings[$first_station_no]['mqtt_ip']; + $station_setting['mqtt_port'] = $settings[$first_station_no]['mqtt_port']; return $station_setting; } diff --git a/views/carpark/station_setting.php b/views/carpark/station_setting.php index 6592de6..015d738 100644 --- a/views/carpark/station_setting.php +++ b/views/carpark/station_setting.php @@ -24,8 +24,9 @@
- - + +
@@ -49,53 +50,25 @@ function reset_station_setting() { event.preventDefault(); - - $.ajax - ({ - url: "station_setting_query", - type: "post", - dataType:"json", - data:{ 'reload': 1 }, - error:function(xhr, ajaxOptions, thrownError) - { - alertify_msg(xhr.responseText); - console.log("error:"+xhr.responseText+"|"+ajaxOptions+"|"+thrownError); - return false; - }, - success: function(jdata) - { - var station_service_url = jdata['station_ip'] + ' : ' + jdata['station_port']; - var station_mqtt_url = jdata['mqtt_ip'] + ' : ' + jdata['mqtt_port']; - - if(jdata == 'fail') - { - $("#ss_station_name").val('未設定'); - $("#ss_station_no").val(''); - $("#ss_station_service_url").val(station_service_url); - $("#ss_station_mqtt").val(station_mqtt_url); - alertify_error('載入失敗。。'); - return false; - } - - $("#ss_station_name").val(jdata['station_name']); - $("#ss_station_no").val(jdata['station_no']); - $("#ss_station_service_url").val(station_service_url); - $("#ss_station_mqtt").val(station_mqtt_url); - alertify_success('完成。。'); - } - }); + do_reload_station_setting(1); } // 載入目前設定 function reload_station_setting(type) { + do_reload_station_setting(0); +} + +// 執行 +function do_reload_station_setting(reload=0) +{ $.ajax ({ url: "station_setting_query", type: "post", dataType:"json", - data:{ 'reload': 0 }, + data:{ 'reload': reload }, error:function(xhr, ajaxOptions, thrownError) { alertify_msg(xhr.responseText); @@ -104,18 +77,23 @@ function reload_station_setting(type) }, success: function(jdata) { + var station_service_url = jdata['station_ip'] + ' : ' + jdata['station_port']; + var station_info = JSON.stringify(jdata['settings']); + if(jdata == 'fail') { $("#ss_station_name").val('未設定'); $("#ss_station_no").val(''); - $("#ss_station_ip").val(jdata['station_ip']); + $("#ss_station_service_url").val(station_service_url); + $("#ss_station_info").val(station_info); alertify_error('載入失敗。。'); return false; } $("#ss_station_name").val(jdata['station_name']); $("#ss_station_no").val(jdata['station_no']); - $("#ss_station_ip").val(jdata['station_ip']); + $("#ss_station_service_url").val(station_service_url); + $("#ss_station_info").val(station_info); alertify_success('完成。。'); } });