Browse Source

mqtt settings 介接

station_14109
altob.rd 8 years ago
parent
commit
2207e0f384
6 changed files with 105 additions and 76 deletions
  1. +25
    -0
      config/constants.php
  2. +11
    -2
      controllers/Carpark.php
  3. +13
    -2
      controllers/Cars.php
  4. +13
    -1
      controllers/Pks.php
  5. +25
    -31
      models/Sync_data_model.php
  6. +18
    -40
      views/carpark/station_setting.php

+ 25
- 0
config/constants.php View File

@@ -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'); // 場站設定匯整
/*
|--------------------------------------------------------------------------
| 自定義連結 - 共用設定
|--------------------------------------------------------------------------
*/


+ 11
- 2
controllers/Carpark.php View File

@@ -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);


+ 13
- 2
controllers/Cars.php View File

@@ -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)


+ 13
- 1
controllers/Pks.php View File

@@ -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();
}


+ 25
- 31
models/Sync_data_model.php View File

@@ -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;
}


+ 18
- 40
views/carpark/station_setting.php View File

@@ -24,8 +24,9 @@
<input id="ss_station_service_url" name='station_service_url' class="form-control" style="font-size:28px" readonly>
</div>
<div class="form-group">
<label style="font-size:22px">場站 MQTT</label>
<input id="ss_station_mqtt" name='station_mqtt' class="form-control" style="font-size:28px" readonly>
<label style="font-size:22px">其它設定</label>
<textarea readonly id="ss_station_info" name='station_info' class="form-control" style="font-size:28px" rows="4">
</textarea>
</div>
<!--button type="submit" class="btn btn-default">存檔</button>
<button type="reset" class="btn btn-default">重填</button-->
@@ -49,53 +50,25 @@
function reset_station_setting()
{
event.preventDefault();
$.ajax
({
url: "<?=APP_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: "<?=APP_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('完成。。');
}
});


Loading…
Cancel
Save