DeviceConfigController.class.php.bak.2021-09-01 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. <?php
  2. namespace Home\Controller;
  3. use Think\Controller;
  4. use Think\Db;
  5. include '../Common/function.php';
  6. class DeviceConfigController extends ComController
  7. {
  8. private $host = "https://device.api.ct10649.com:8743/";
  9. private $appId = "wvdOfp7JVe0ULwnFKwBF0edfbcAa";
  10. private $secret = "Bihoe_rY9vebXMw6sFfpQy0jiRca";
  11. private $appId1 = "bIS92ndpAf_fhmPdLaNuTidbFfka";
  12. private $secret1 = "NZMe1G42OdSmzlEuDpR_3ywKPhIa";
  13. // public function getDeviceList()
  14. // {
  15. // $Data = I();
  16. // $company_code = $Data['company_code'];
  17. // $device_data1 = M()->query("SELECT a.id,a.owner_code,a.louyu,a.company,a.owner_name,a.dwtype,IF(timestampdiff(HOUR,max(`b`.`data_time`),now())<12,'在线','离线') AS device_state,a.install_time,a.unitinfo FROM sp_owner AS a JOIN sp_owner_status AS b ON a.owner_code=b.device_id WHERE a.dwtype!=1 AND a.company='" . $company_code . "' GROUP BY a.owner_code ORDER BY a.install_time DESC");
  18. // $device_data2 = M()->query("SELECT a.id,a.owner_code,a.louyu,a.company,a.owner_name,a.dwtype,IF(true_status=0,'在线','离线') AS device_state,a.install_time,a.unitinfo FROM sp_owner AS a JOIN sp_devices_status AS b ON a.owner_code=b.deviceid WHERE a.company='" . $company_code . "' AND a.dwtype=1 GROUP BY a.owner_code ORDER BY a.install_time DESC");
  19. // $device_data = array_merge($device_data1, $device_data2);
  20. // array_multisort(array_column($device_data, 'install_time'), SORT_DESC, $device_data);
  21. // $res['msg'] = '操作成功';
  22. // $res['flag'] = true;
  23. // $res['data'] = $device_data;
  24. // echo json_encode($res);
  25. // }
  26. public function getDeviceList()
  27. {
  28. $Data = I();
  29. $company_code = $Data['company_code'];
  30. $dwtype = $Data['dwtype'];
  31. $transmission_mode = $Data['transmission_mode'];
  32. $where="";
  33. if (!empty($dwtype)){
  34. $where.=" and a.dwtype = '".$dwtype."' ";
  35. }
  36. if (!empty($dwtype)){
  37. $where.=" and a.transfer_type = '".$transmission_mode."' ";
  38. }
  39. if (empty($dwtype)){
  40. $device_data1 = M()->query("SELECT a.id,a.owner_code,a.louyu,a.company,a.owner_name,a.dwtype,IF(timestampdiff(HOUR,max(`b`.`data_time`),now())<12,'在线','离线') AS device_state,a.install_time,a.unitinfo FROM sp_owner AS a JOIN sp_owner_status AS b ON a.owner_code=b.device_id WHERE a.dwtype!=1 and a.company='".$company_code."' ".$where." GROUP BY a.owner_code ORDER BY a.install_time DESC");
  41. $device_data2 = M()->query("SELECT a.id,a.owner_code,a.louyu,a.company,a.owner_name,a.dwtype,IF(true_status=0,'在线','离线') AS device_state,a.install_time,a.unitinfo FROM sp_owner AS a JOIN sp_devices_status AS b ON a.owner_code=b.deviceid WHERE a.dwtype=1 and a.company='".$company_code."' ".$where." GROUP BY a.owner_code ORDER BY a.install_time DESC");
  42. $device_data = array_merge($device_data1, $device_data2);
  43. array_multisort(array_column($device_data, 'install_time'), SORT_DESC, $device_data);
  44. }else{
  45. if ($dwtype==1){
  46. $device_data = M()->query("SELECT a.id,a.owner_code,a.louyu,a.company,a.owner_name,a.dwtype,IF(true_status=0,'在线','离线') AS device_state,a.install_time,a.unitinfo FROM sp_owner AS a JOIN sp_devices_status AS b ON a.owner_code=b.deviceid WHERE a.dwtype=1 and a.company='".$company_code."' ".$where." GROUP BY a.owner_code ORDER BY a.install_time DESC");
  47. }else{
  48. $device_data = M()->query("SELECT a.id,a.owner_code,a.louyu,a.company,a.owner_name,a.dwtype,IF(timestampdiff(HOUR,max(`b`.`data_time`),now())<12,'在线','离线') AS device_state,a.install_time,a.unitinfo FROM sp_owner AS a JOIN sp_owner_status AS b ON a.owner_code=b.device_id WHERE a.dwtype!=1 and a.company='".$company_code."' ".$where." GROUP BY a.owner_code ORDER BY a.install_time DESC");
  49. }
  50. }
  51. $res['msg'] = '操作成功';
  52. $res['flag'] = true;
  53. $res['data'] = $device_data;
  54. echo json_encode($res);
  55. }
  56. public function setDevice()
  57. {
  58. $Data = I('');
  59. $data['owner_code'] = $Data['device_code'];
  60. $data['owner_name'] = $Data['device_name'];
  61. $data['unitinfo'] = $Data['unitinfo'];
  62. $data['louyu'] = $Data['louyu'];
  63. $data['sim'] = $Data['sim'];
  64. $data['maintainTime'] = "";
  65. $data['dest_address'] = 0;
  66. $data['addr1'] = "";
  67. $data['addr2'] = "";
  68. $data['addr3'] = "";
  69. $data['address'] = "";
  70. $data['posistion'] = "";
  71. $data['install_time'] = date("Y-m-d H:i:s");
  72. $data['install_man'] = $_SESSION['phone'];
  73. $data['dwtype'] = $Data['type'];
  74. $data['owner_xh'] = '0' . $data['owner_xh_a'] . $data['owner_xh_b'] . $data['owner_xh_c'];
  75. $data['s_interval'] = 8;
  76. $data['community'] = "";
  77. $data['company'] = $Data['company_code'];
  78. $data['rtmp'] = "";
  79. $data['hls'] = "";
  80. $data['html5'] = "";
  81. $data['danwei'] = $Data['danwei'];
  82. $data['owner_bl'] = $Data['owner_bl'];
  83. $data['push_param1'] = "4294967295";
  84. $data['push_param2'] = 0;
  85. $data['push_param3'] = 0;
  86. $data['push_param4'] = 0;
  87. $data['login_param'] = "";
  88. $data['transfer_type'] = $Data['transfer_type'];
  89. $data1['deviceid'] = $Data['device_code'];
  90. $data1['deviceno'] = 0;
  91. $data1['devicestatus'] = '75';
  92. $data1['statustime'] = 0;
  93. $data1['f_evt'] = 40;
  94. $data1['c_evt'] = "00";
  95. $data1['w_evt'] = "";
  96. $data1['true_status'] = '75';
  97. $data1['lastcommtime'] = '0';
  98. $data2['owner_code'] = $Data['device_code'];
  99. $data2['owner_dwtype'] = $Data['type'];
  100. $data2['device_name'] = $Data['device_name'];
  101. $data2['object_name'] = $Data['unitinfo'];
  102. $data2['min_level'] = $Data['louyu'];
  103. $data2['max_level'] = $Data['louyu'];
  104. $data2['is_top'] = $Data['is_top'];
  105. $data2['start_port'] = '0';
  106. $data2['rec_cur'] = '0';
  107. $data3['deviceType'] = $Data['deviceType'];//设备类型 水表 Smoke:烟感、MultiSensor:水表、WaterMeter:宇洁戎情水表、topsailSensor:拓扑索尔 烟感 TBSNode:拓扑索尔烟感
  108. $data3['manufacturerName'] = $Data['manufacturerName'];//厂商名称:ST、ZHYQ、shanghaijunyanTest、Topsail、Turboes
  109. $data3['model'] = $Data['model'];//设备型号 烟感型号:517N01、水表型号:PT124B-2892-010、宇洁戎情水表型号:WPTA、拓扑索尔水表液位:TH12、拓扑索尔烟感:Public
  110. $data3['location'] = $Data['location'];//地址 区域
  111. $data3['protocolType'] = $Data['protocolType'];//协议
  112. switch ($Data['type']) {
  113. case '1'://报警主机
  114. $data2['dwtype'] = 'YTUI';
  115. $Res1 = M('owner')->add($data);
  116. $Res2 = M('devices_status')->add($data1);
  117. $Res3 = M('object_share')->add($data2);
  118. break;
  119. case '2'://消防水
  120. $data2['dwtype'] = 'YTWP';
  121. $data2['start_port'] = '0';
  122. $data2['rec_cur'] = '0';
  123. $Res = M()->query("SELECT max(object_code) AS object_code FROM sp_object_share WHERE object_code LIKE '" . $data2['dwtype'] . "-" . $Data['company_code'] . "%'");
  124. if (empty($Res)) {
  125. $data2['object_code'] = $data2['dwtype'] . '-' . $Data['company_code'] . '001';
  126. } else {
  127. $sort = (int)substr($Res[0]['object_code'], 10, 3) + 1;
  128. $num = str_pad($sort, 3, "0", STR_PAD_LEFT);
  129. $data2['object_code'] = $data2['dwtype'] . '-' . $Data['company_code'] . $num;
  130. }
  131. switch ($data['transfer_type']) {
  132. case 'NB':
  133. if (empty($data3['deviceType']) || empty($data3['manufacturerName']) || empty($data3['model']) || empty($data3['location']) || empty($data3['protocolType'])) {
  134. $res['msg'] = "请填写好必要内容";
  135. $res['flag'] = false;
  136. echo json_encode($res);
  137. exit();
  138. }
  139. $R = ytapi187_query("select * from device where device_id='" . $Data['device_code'] . "'");
  140. if (empty($R)) {
  141. if (empty($Data['device_code']) || empty($Data['device_name'])) {
  142. $res['msg'] = '请填写好必要内容';
  143. $res['flag'] = false;
  144. echo json_encode($res);
  145. exit();
  146. }
  147. $token = json_decode(gettoken(), true);
  148. $sendata = [
  149. "verifyCode" => $Data['device_code'],//"868744030067098"
  150. "nodeId" => $Data['device_code'],
  151. "timeout" => 0
  152. ];
  153. $header = [
  154. "Content-Type:application/json",
  155. "app_key:" . $this->appId,
  156. "Authorization:Bearer " . $token["accessToken"]
  157. ];
  158. $rescurl = curl($this->host . "iocm/app/reg/v1.1.0/deviceCredentials?appId=" . $this->appId, json_encode($sendata), $header);
  159. if ($rescurl[0] == 200) {
  160. $res1 = json_decode($rescurl[1], true);
  161. } else {
  162. $res['msg'] = $rescurl;
  163. $res['flag'] = false;
  164. echo json_encode($res);
  165. exit();
  166. }
  167. $list = array();
  168. $list['device_id'] = trim($Data['device_code']);
  169. $list['name'] = $Data['device_name'];
  170. $list['iot_id'] = $res1['deviceId'];
  171. $list['psk'] = $res1['psk'];
  172. $list['addtime'] = date('Y-m-d H:i:s');
  173. $list['updatetime'] = date('Y-m-d H:i:s');
  174. $device_table = "dev_" . $Data['device_code'];
  175. $create_sql = "
  176. CREATE TABLE `" . $device_table . "` (
  177. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  178. `device_id` varchar(200) DEFAULT NULL,
  179. `iot_id` varchar(255) DEFAULT NULL,
  180. `service` text,
  181. `addtime` varchar(50) DEFAULT NULL,
  182. `notifyType` varchar(50) DEFAULT NULL,
  183. PRIMARY KEY (`id`)
  184. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  185. ytapi187_inset($create_sql);
  186. $rs = ytapi187_inset("INSERT INTO device (device_id,name,addtime,updatetime,iot_id,psk,manufacturerId,manufacturerName,deviceType
  187. ,model,location,isSecure,status,protocolType,owner_id) values ('" . $list['device_id'] . "','" . $list['name'] . "','" . $list['addtime'] . "',
  188. '" . $list['updatetime'] . "','" . $list['iot_id'] . "','" . $list['psk'] . "','','','','','','','','','')");
  189. if ($rs) {
  190. $owner1 = M()->query("SELECT company,louyu,unitinfo FROM sp_owner WHERE owner_code = '" . $Data['device_code'] . "'");
  191. if ($owner1) {
  192. $data4['owner_name'] = $Data['device_name'];
  193. $data4['unitinfo'] = $Data['unitinfo'];
  194. $data4['louyu'] = $Data['louyu'];
  195. $data4['company'] = $Data['company_code'];
  196. $where4['owner_code'] = $Data['device_code'];
  197. $res4 = M('owner')->where($where4)->save($data4);
  198. } else {
  199. $token = json_decode(gettoken(), true);
  200. $sendata = [
  201. "name" => $Data['device_code'],
  202. "deviceType" => $Data['deviceType'],
  203. "manufacturerName" => $Data['manufacturerName'],
  204. "manufacturerId" => $Data['manufacturerId'],//厂商ID ST、ZHYQ、JunyanTest、Topsail
  205. "model" => $Data['model'],
  206. "protocolType" => $Data['protocolType'],
  207. "location" => trim($Data['location'])
  208. ];
  209. $header = [
  210. "Content-Type:application/json",
  211. "app_key:" . $this->appId,
  212. "Authorization:Bearer " . $token["accessToken"]
  213. ];
  214. $rescurl = curl($this->host . "iocm/app/dm/v1.4.0/devices/" . $list['iot_id'] . "?appId=" . $this->appId, json_encode($sendata, 320), $header, "PUT");
  215. }
  216. if ($rescurl[0] == 204) {//成功
  217. $res1 = json_decode($rescurl[1], true);
  218. } else {//失败
  219. $res['msg'] = $rescurl[1];
  220. $res['flag'] = false;
  221. echo json_encode($res);
  222. exit();
  223. }
  224. $device_update = ytapi187_inset("UPDATE device set deviceType='" . $Data['deviceType'] . "',name='" . $Data['device_name'] . "',manufacturerName=
  225. '" . $Data['manufacturerName'] . "',model='" . $Data['model'] . "',isSecure='" . $Data['isSecure'] . "',manufacturerId='" . $Data['manufacturerId'] . "',
  226. protocolType='" . $Data['protocolType'] . "',location='" . $Data['location'] . "',updatetime='" . date('Y-m-d H:i:s') . "' where device_id=
  227. '" . $Data['device_code'] . "'");
  228. $device_query = ytapi187_query("select * from device where device_id='" . $Data['device_code'] . "'");
  229. $device_id = $device_query[0]['device_id'];
  230. $deviceType = $Data['deviceType'];
  231. $create_sql = addtable($device_id, $deviceType);
  232. $table = Db::execute($create_sql);
  233. $deviceStatus = M()->query("SELECT statustime FROM sp_devices_status WHERE deviceid = '" . $device_query[0]['device_id'] . "'");
  234. if (!$deviceStatus) {
  235. $data6['deviceid'] = $device_query[0]['device_id'];
  236. $data6['deviceno'] = 0;
  237. $data6['devicestatus'] = '75';
  238. $data6['statustime'] = date('Y-m-d H:i:s');
  239. $data6['f_evt'] = 40;
  240. $data6['c_evt'] = 00;
  241. $data6['w_evt'] = "";
  242. $data6['true_status'] = '75';
  243. $data6['lastcommtime'] = '0';
  244. $Res2 = M('devices_status')->add($data6);
  245. }
  246. if ($Data['company_code']) {
  247. $Res1 = M('owner')->add($data);
  248. // $Res2 = M('devices_status')->add($data1);
  249. $Res3 = M('object_share')->add($data2);
  250. }
  251. if ($device_update) {
  252. $res['msg'] = "操作成功";
  253. $res['flag'] = true;
  254. echo json_encode($res);
  255. exit();
  256. } else {
  257. $res['msg'] = "添加失败,请稍后再试";
  258. $res['flag'] = false;
  259. echo json_encode($res);
  260. exit();
  261. }
  262. } else {
  263. $res['msg'] = "添加失败,请稍后再试";
  264. $res['flag'] = false;
  265. echo json_encode($res);
  266. exit();
  267. }
  268. } else {
  269. $res['msg'] = '该设备编号已经添加';
  270. $res['flag'] = false;
  271. echo json_encode($res);
  272. exit();
  273. }
  274. break;
  275. case 'Lora':
  276. case '4G':
  277. $Res1 = M('owner')->add($data);
  278. $Res2 = M('devices_status')->add($data1);
  279. $Res3 = M('object_share')->add($data2);
  280. break;
  281. default:
  282. $res['msg'] = '操作失败,该传输方式不存在,请联系管理员';
  283. $res['flag'] = false;
  284. echo json_encode($res);
  285. exit();
  286. }
  287. break;
  288. case '3'://烟感
  289. $data2['dwtype'] = 'YTSM';
  290. $data2['start_port'] = '0';
  291. $data2['rec_cur'] = '0';
  292. $Res = M()->query("SELECT max(object_code) AS object_code FROM sp_object_share WHERE object_code LIKE '" . $data2['dwtype'] . "-" . $Data['company_code'] . "%'");
  293. if (empty($Res)) {
  294. $data2['object_code'] = $data2['dwtype'] . '-' . $Data['company_code'] . '001';
  295. } else {
  296. $sort = (int)substr($Res[0]['object_code'], 10, 3) + 1;
  297. $num = str_pad($sort, 3, "0", STR_PAD_LEFT);
  298. $data2['object_code'] = $data2['dwtype'] . '-' . $Data['company_code'] . $num;
  299. }
  300. switch ($data['transfer_type']) {
  301. case 'NB':
  302. if (empty($data3['deviceType']) || empty($data3['manufacturerName']) || empty($data3['model']) || empty($data3['location']) || empty($data3['protocolType'])) {
  303. $res['msg'] = "请填写好必要内容";
  304. $res['flag'] = false;
  305. echo json_encode($res);
  306. exit();
  307. }
  308. $R = ytapi187_query("select * from device where device_id='" . $Data['device_code'] . "'");
  309. if (empty($R)) {
  310. if (empty($Data['device_code']) || empty($Data['device_name'])) {
  311. $res['msg'] = '请填写好必要内容';
  312. $res['flag'] = false;
  313. echo json_encode($res);
  314. exit();
  315. }
  316. $token = json_decode(gettoken1(), true);
  317. $sendata = [
  318. "verifyCode" => $Data['device_code'],//"868744030067098"
  319. "nodeId" => $Data['device_code'],
  320. "timeout" => 0
  321. ];
  322. $header = [
  323. "Content-Type:application/json",
  324. "app_key:" . $this->appId1,
  325. "Authorization:Bearer " . $token["accessToken"]
  326. ];
  327. $rescurl = curl($this->host . "iocm/app/reg/v1.1.0/deviceCredentials?appId=" . $this->appId1, json_encode($sendata), $header);
  328. if ($rescurl[0] == 200) {
  329. $res1 = json_decode($rescurl[1], true);
  330. } else {
  331. $res['msg'] = $rescurl;
  332. $res['flag'] = false;
  333. echo json_encode($res);
  334. exit();
  335. }
  336. $list = array();
  337. $list['device_id'] = trim($Data['device_code']);
  338. $list['name'] = $Data['device_name'];
  339. $list['iot_id'] = $res1['deviceId'];
  340. $list['psk'] = $res1['psk'];
  341. $list['addtime'] = date('Y-m-d H:i:s');
  342. $list['updatetime'] = date('Y-m-d H:i:s');
  343. $device_table = "dev_" . $Data['device_code'];
  344. $create_sql = "
  345. CREATE TABLE `" . $device_table . "` (
  346. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  347. `device_id` varchar(200) DEFAULT NULL,
  348. `iot_id` varchar(255) DEFAULT NULL,
  349. `service` text,
  350. `addtime` varchar(50) DEFAULT NULL,
  351. `notifyType` varchar(50) DEFAULT NULL,
  352. PRIMARY KEY (`id`)
  353. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  354. ytapi187_inset($create_sql);
  355. $rs = ytapi187_inset("INSERT INTO device (device_id,name,addtime,updatetime,iot_id,psk,manufacturerId,manufacturerName,deviceType
  356. ,model,location,isSecure,status,protocolType,owner_id) values ('" . $list['device_id'] . "','" . $list['name'] . "','" . $list['addtime'] . "',
  357. '" . $list['updatetime'] . "','" . $list['iot_id'] . "','" . $list['psk'] . "','','','','','','','','','')");
  358. if ($rs) {
  359. $owner1 = M()->query("SELECT company,louyu,unitinfo FROM sp_owner WHERE owner_code = '" . $Data['device_code'] . "'");
  360. if ($owner1) {
  361. $data4['owner_name'] = $Data['device_name'];
  362. $data4['unitinfo'] = $Data['unitinfo'];
  363. $data4['louyu'] = $Data['louyu'];
  364. $data4['company'] = $Data['company_code'];
  365. $where4['owner_code'] = $Data['device_code'];
  366. $res4 = M('owner')->where($where4)->save($data4);
  367. } else {
  368. $token = json_decode(gettoken1(), true);
  369. $sendata = [
  370. "name" => $Data['device_code'],
  371. "deviceType" => $Data['deviceType'],
  372. "manufacturerName" => $Data['manufacturerName'],
  373. "manufacturerId" => $Data['manufacturerId'],//厂商ID ST、ZHYQ、JunyanTest、Topsail
  374. "model" => $Data['model'],
  375. "protocolType" => $Data['protocolType'],
  376. "location" => trim($Data['location'])
  377. ];
  378. $header = [
  379. "Content-Type:application/json",
  380. "app_key:" . $this->appId1,
  381. "Authorization:Bearer " . $token["accessToken"]
  382. ];
  383. $rescurl = curl($this->host . "iocm/app/dm/v1.4.0/devices/" . $list['iot_id'] . "?appId=" . $this->appId1, json_encode($sendata, 320), $header, "PUT");
  384. }
  385. if ($rescurl[0] == 204) {//成功
  386. $res1 = json_decode($rescurl[1], true);
  387. } else {//失败
  388. $res['msg'] = $rescurl[1];
  389. $res['flag'] = false;
  390. echo json_encode($res);
  391. exit();
  392. }
  393. $device_update = ytapi187_inset("UPDATE device set deviceType='" . $Data['deviceType'] . "',name='" . $Data['device_name'] . "',manufacturerName=
  394. '" . $Data['manufacturerName'] . "',model='" . $Data['model'] . "',isSecure='" . $Data['isSecure'] . "',manufacturerId='" . $Data['manufacturerId'] . "',
  395. protocolType='" . $Data['protocolType'] . "',location='" . $Data['location'] . "',updatetime='" . date('Y-m-d H:i:s') . "' where device_id=
  396. '" . $Data['device_code'] . "'");
  397. $device_query = ytapi187_query("select * from device where device_id='" . $Data['device_code'] . "'");
  398. $device_id = $device_query[0]['device_id'];
  399. $deviceType = $Data['deviceType'];
  400. $create_sql = addtable($device_id, $deviceType);
  401. $table = Db::execute($create_sql);
  402. $deviceStatus = M()->query("SELECT statustime FROM sp_devices_status WHERE deviceid = '" . $device_query[0]['device_id'] . "'");
  403. if (!$deviceStatus) {
  404. $data6['deviceid'] = $device_query[0]['device_id'];
  405. $data6['deviceno'] = 0;
  406. $data6['devicestatus'] = '75';
  407. $data6['statustime'] = date('Y-m-d H:i:s');
  408. $data6['f_evt'] = 40;
  409. $data6['c_evt'] = 00;
  410. $data6['w_evt'] = "";
  411. $data6['true_status'] = '75';
  412. $data6['lastcommtime'] = '0';
  413. $Res2 = M('devices_status')->add($data6);
  414. }
  415. if ($Data['company_code']) {
  416. $Res1 = M('owner')->add($data);
  417. // $Res2 = M('devices_status')->add($data1);
  418. $Res3 = M('object_share')->add($data2);
  419. }
  420. if ($device_update) {
  421. $res['msg'] = "操作成功";
  422. $res['flag'] = true;
  423. echo json_encode($res);
  424. exit();
  425. } else {
  426. $res['msg'] = "添加失败,请稍后再试";
  427. $res['flag'] = false;
  428. echo json_encode($res);
  429. exit();
  430. }
  431. } else {
  432. $res['msg'] = "添加失败,请稍后再试";
  433. $res['flag'] = false;
  434. echo json_encode($res);
  435. exit();
  436. }
  437. } else {
  438. $res['msg'] = '该设备编号已经添加';
  439. $res['flag'] = false;
  440. echo json_encode($res);
  441. exit();
  442. }
  443. break;
  444. case 'Lora':
  445. $url = "https://ttl.turboes.com/api/api/login";
  446. $parameter = [
  447. "appKey" => "wLHvcVHS",
  448. "appSecret" => "a9daf060059d205280646a1880cd1fc24f3c5c69"
  449. ];
  450. $accessToken = json_post($url, $parameter);
  451. $accessToken_array = json_decode($accessToken, true);
  452. if ($accessToken_array['code'] == 200) {
  453. $url1 = "https://ttl.turboes.com/api/ttl/api/v1/device?access_token=" . $accessToken_array['data']['token'];
  454. if($Data['platfromProtocolType']==1){
  455. $parameter1 = [
  456. "nodeId" => $Data['device_code'],
  457. "nodeName" => $Data['device_name'],
  458. "appKey" => "nIeDYZ3ufbV3bBoC ",
  459. "platfromProtocolType" => $Data['platfromProtocolType'],
  460. "platfromId" => $Data['platfromId'],
  461. "productKey" => $Data['productKey'],
  462. "protocol_NB" => [
  463. "nodeName" => $Data['device_code']
  464. ]
  465. ];
  466. }else{
  467. $parameter1 = [
  468. "nodeId" => $Data['device_code'],
  469. "nodeName" => $Data['device_name'],
  470. "appKey" => "nIeDYZ3ufbV3bBoC ",
  471. "platfromProtocolType" => $Data['platfromProtocolType'],
  472. "platfromId" => $Data['platfromId'],
  473. "productKey" => $Data['productKey'],
  474. "protocol_LORA" => [
  475. "devEui" => $Data['devEui'],
  476. "region" => $Data['region'],
  477. "activationType" => $Data['activationType'],
  478. "AppKey" => $Data['AppKey'],
  479. "NwkSKey" => $Data['NwkSKey'],
  480. "AppSKey" => $Data['AppSKey'],
  481. "DevAddr" => $Data['DevAddr']
  482. ]
  483. ];
  484. }
  485. // print_r(json_encode($parameter1));
  486. // exit();
  487. $R = json_post($url1, $parameter1);
  488. $R1 = json_decode($R, true);
  489. if ($R1['code'] == 200) {
  490. $Res1 = M('owner')->add($data);
  491. $Res2 = M('devices_status')->add($data1);
  492. $Res3 = M('object_share')->add($data2);
  493. } else {
  494. $res['msg'] = $accessToken_array['message'];
  495. $res['flag'] = false;
  496. echo json_encode($res);
  497. exit();
  498. }
  499. } else {
  500. $res['msg'] = $accessToken_array['message'];
  501. $res['flag'] = false;
  502. echo json_encode($res);
  503. exit();
  504. }
  505. break;
  506. case '4G':
  507. $Res1 = M('owner')->add($data);
  508. $Res2 = M('devices_status')->add($data1);
  509. $Res3 = M('object_share')->add($data2);
  510. break;
  511. default:
  512. $res['msg'] = '操作失败,该传输方式不存在,请联系管理员';
  513. $res['flag'] = false;
  514. echo json_encode($res);
  515. exit();
  516. }
  517. break;
  518. case '4'://消防栓
  519. $data2['dwtype'] = 'YTFH';
  520. $Res1 = M('owner')->add($data);
  521. $Res2 = M('devices_status')->add($data1);
  522. $Res3 = M('object_share')->add($data2);
  523. break;
  524. case '5'://液位
  525. $data2['dwtype'] = 'YTLL';
  526. $data2['start_port'] = '0';
  527. $data2['rec_cur'] = '0';
  528. $Res = M()->query("SELECT max(object_code) AS object_code FROM sp_object_share WHERE object_code LIKE '" . $data2['dwtype'] . "-" . $Data['company_code'] . "%'");
  529. if (empty($Res)) {
  530. $data2['object_code'] = $data2['dwtype'] . '-' . $Data['company_code'] . '001';
  531. } else {
  532. $sort = (int)substr($Res[0]['object_code'], 10, 3) + 1;
  533. $num = str_pad($sort, 3, "0", STR_PAD_LEFT);
  534. $data2['object_code'] = $data2['dwtype'] . '-' . $Data['company_code'] . $num;
  535. }
  536. switch ($data['transfer_type']) {
  537. case 'NB':
  538. if (empty($data3['deviceType']) || empty($data3['manufacturerName']) || empty($data3['model']) || empty($data3['location']) || empty($data3['protocolType'])) {
  539. $res['msg'] = "请填写好必要内容";
  540. $res['flag'] = false;
  541. echo json_encode($res);
  542. exit();
  543. }
  544. $R = ytapi187_query("select * from device where device_id='" . $Data['device_code'] . "'");
  545. if (empty($R)) {
  546. if (empty($Data['device_code']) || empty($Data['device_name'])) {
  547. $res['msg'] = '请填写好必要内容';
  548. $res['flag'] = false;
  549. echo json_encode($res);
  550. exit();
  551. }
  552. $token = json_decode(gettoken(), true);
  553. $sendata = [
  554. "verifyCode" => $Data['device_code'],//"868744030067098"
  555. "nodeId" => $Data['device_code'],
  556. "timeout" => 0
  557. ];
  558. $header = [
  559. "Content-Type:application/json",
  560. "app_key:" . $this->appId,
  561. "Authorization:Bearer " . $token["accessToken"]
  562. ];
  563. $rescurl = curl($this->host . "iocm/app/reg/v1.1.0/deviceCredentials?appId=" . $this->appId, json_encode($sendata), $header);
  564. if ($rescurl[0] == 200) {
  565. $res1 = json_decode($rescurl[1], true);
  566. } else {
  567. $res['msg'] = $rescurl;
  568. $res['flag'] = false;
  569. echo json_encode($res);
  570. exit();
  571. }
  572. $list = array();
  573. $list['device_id'] = trim($Data['device_code']);
  574. $list['name'] = $Data['device_name'];
  575. $list['iot_id'] = $res1['deviceId'];
  576. $list['psk'] = $res1['psk'];
  577. $list['addtime'] = date('Y-m-d H:i:s');
  578. $list['updatetime'] = date('Y-m-d H:i:s');
  579. $device_table = "dev_" . $Data['device_code'];
  580. $create_sql = "
  581. CREATE TABLE `" . $device_table . "` (
  582. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  583. `device_id` varchar(200) DEFAULT NULL,
  584. `iot_id` varchar(255) DEFAULT NULL,
  585. `service` text,
  586. `addtime` varchar(50) DEFAULT NULL,
  587. `notifyType` varchar(50) DEFAULT NULL,
  588. PRIMARY KEY (`id`)
  589. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  590. ytapi187_inset($create_sql);
  591. $rs = ytapi187_inset("INSERT INTO device (device_id,name,addtime,updatetime,iot_id,psk,manufacturerId,manufacturerName,deviceType
  592. ,model,location,isSecure,status,protocolType,owner_id) values ('" . $list['device_id'] . "','" . $list['name'] . "','" . $list['addtime'] . "',
  593. '" . $list['updatetime'] . "','" . $list['iot_id'] . "','" . $list['psk'] . "','','','','','','','','','')");
  594. if ($rs) {
  595. $owner1 = M()->query("SELECT company,louyu,unitinfo FROM sp_owner WHERE owner_code = '" . $Data['device_code'] . "'");
  596. if ($owner1) {
  597. $data4['owner_name'] = $Data['device_name'];
  598. $data4['unitinfo'] = $Data['unitinfo'];
  599. $data4['louyu'] = $Data['louyu'];
  600. $data4['company'] = $Data['company_code'];
  601. $where4['owner_code'] = $Data['device_code'];
  602. $res4 = M('owner')->where($where4)->save($data4);
  603. } else {
  604. $token = json_decode(gettoken(), true);
  605. $sendata = [
  606. "name" => $Data['device_code'],
  607. "deviceType" => $Data['deviceType'],
  608. "manufacturerName" => $Data['manufacturerName'],
  609. "manufacturerId" => $Data['manufacturerId'],//厂商ID ST、ZHYQ、JunyanTest、Topsail
  610. "model" => $Data['model'],
  611. "protocolType" => $Data['protocolType'],
  612. "location" => trim($Data['location'])
  613. ];
  614. $header = [
  615. "Content-Type:application/json",
  616. "app_key:" . $this->appId,
  617. "Authorization:Bearer " . $token["accessToken"]
  618. ];
  619. $rescurl = curl($this->host . "iocm/app/dm/v1.4.0/devices/" . $list['iot_id'] . "?appId=" . $this->appId, json_encode($sendata, 320), $header, "PUT");
  620. }
  621. if ($rescurl[0] == 204) {//成功
  622. $res1 = json_decode($rescurl[1], true);
  623. } else {//失败
  624. $res['msg'] = $rescurl[1];
  625. $res['flag'] = false;
  626. echo json_encode($res);
  627. exit();
  628. }
  629. $device_update = ytapi187_inset("UPDATE device set deviceType='" . $Data['deviceType'] . "',name='" . $Data['device_name'] . "',manufacturerName=
  630. '" . $Data['manufacturerName'] . "',model='" . $Data['model'] . "',isSecure='" . $Data['isSecure'] . "',manufacturerId='" . $Data['manufacturerId'] . "',
  631. protocolType='" . $Data['protocolType'] . "',location='" . $Data['location'] . "',updatetime='" . date('Y-m-d H:i:s') . "' where device_id=
  632. '" . $Data['device_code'] . "'");
  633. $device_query = ytapi187_query("select * from device where device_id='" . $Data['device_code'] . "'");
  634. $device_id = $device_query[0]['device_id'];
  635. $deviceType = $Data['deviceType'];
  636. $create_sql = addtable($device_id, $deviceType);
  637. $table = Db::execute($create_sql);
  638. $deviceStatus = M()->query("SELECT statustime FROM sp_devices_status WHERE deviceid = '" . $device_query[0]['device_id'] . "'");
  639. if (!$deviceStatus) {
  640. $data6['deviceid'] = $device_query[0]['device_id'];
  641. $data6['deviceno'] = 0;
  642. $data6['devicestatus'] = '75';
  643. $data6['statustime'] = date('Y-m-d H:i:s');
  644. $data6['f_evt'] = 40;
  645. $data6['c_evt'] = 00;
  646. $data6['w_evt'] = "";
  647. $data6['true_status'] = '75';
  648. $data6['lastcommtime'] = '0';
  649. $Res2 = M('devices_status')->add($data6);
  650. }
  651. if ($Data['company_code']) {
  652. $Res1 = M('owner')->add($data);
  653. // $Res2 = M('devices_status')->add($data1);
  654. $Res3 = M('object_share')->add($data2);
  655. }
  656. if ($device_update) {
  657. $res['msg'] = "操作成功";
  658. $res['flag'] = true;
  659. echo json_encode($res);
  660. exit();
  661. } else {
  662. $res['msg'] = "添加失败,请稍后再试";
  663. $res['flag'] = false;
  664. echo json_encode($res);
  665. exit();
  666. }
  667. } else {
  668. $res['msg'] = "添加失败,请稍后再试";
  669. $res['flag'] = false;
  670. echo json_encode($res);
  671. exit();
  672. }
  673. } else {
  674. $res['msg'] = '该设备编号已经添加';
  675. $res['flag'] = false;
  676. echo json_encode($res);
  677. exit();
  678. }
  679. break;
  680. case 'Lora':
  681. $a = '';
  682. break;
  683. case '4G':
  684. $Res1 = M('owner')->add($data);
  685. $Res2 = M('devices_status')->add($data1);
  686. $Res3 = M('object_share')->add($data2);
  687. break;
  688. default:
  689. $res['msg'] = '操作失败,该传输方式不存在,请联系管理员';
  690. $res['flag'] = false;
  691. echo json_encode($res);
  692. exit();
  693. }
  694. break;
  695. case '6'://RTU
  696. $Res1 = M('owner')->add($data);
  697. $Res2 = M('devices_status')->add($data1);
  698. break;
  699. case '7'://电气火灾
  700. $data2['min_level'] = $Data['min_level'];
  701. $data2['max_level'] = $Data['max_level'];
  702. $Res1 = M('owner')->add($data);
  703. $Res2 = M('devices_status')->add($data1);
  704. $Res3 = M('object_share')->add($data2);
  705. break;
  706. case '16'://视频监测
  707. $data2['dwtype'] = 'YTVA';
  708. $Res1 = M('owner')->add($data);
  709. $Res2 = M('devices_status')->add($data1);
  710. $Res3 = M('object_share')->add($data2);
  711. break;
  712. case '17'://电梯监测
  713. $data2['dwtype'] = 'YTLF';
  714. $Res1 = M('owner')->add($data);
  715. $Res2 = M('devices_status')->add($data1);
  716. $Res3 = M('object_share')->add($data2);
  717. break;
  718. case '128'://井盖
  719. $data2['dwtype'] = 'YTMC';
  720. $Res1 = M('owner')->add($data);
  721. $Res2 = M('devices_status')->add($data1);
  722. $Res3 = M('object_share')->add($data2);
  723. break;
  724. case '129'://地磁
  725. $Res1 = M('owner')->add($data);
  726. $Res2 = M('devices_status')->add($data1);
  727. break;
  728. case '130'://门禁
  729. $Res1 = M('owner')->add($data);
  730. $Res2 = M('devices_status')->add($data1);
  731. break;
  732. case '131'://可燃气体
  733. $Res1 = M('owner')->add($data);
  734. $Res2 = M('devices_status')->add($data1);
  735. break;
  736. default:
  737. $res['msg'] = '操作失败,设备类型尚未定义,请联系管理员';
  738. $res['flag'] = false;
  739. echo json_encode($res);
  740. exit();
  741. break;
  742. }
  743. if ($Res1) {
  744. $res['msg'] = '操作成功';
  745. $res['flag'] = true;
  746. echo json_encode($res);
  747. } else {
  748. $res['msg'] = '操作失败';
  749. $res['flag'] = true;
  750. echo json_encode($res);
  751. }
  752. }
  753. public function getNbApplicationList()
  754. {
  755. $url = "https://ttl.turboes.com/api/api/login";
  756. $parameter = [
  757. "appKey" => "wLHvcVHS",
  758. "appSecret" => "a9daf060059d205280646a1880cd1fc24f3c5c69"
  759. ];
  760. $accessToken = json_post($url, $parameter);
  761. $accessToken_array = json_decode($accessToken, true);
  762. // print_r($accessToken_array);
  763. if ($accessToken_array['code'] == 200) {
  764. $url = "https://ttl.turboes.com/api/ttl/api/v1/app?access_token=" . $accessToken_array['data']['token'];
  765. // $parameter=[
  766. // "access_token" => $accessToken_array['data']['token']
  767. // ];
  768. // print_r(json_encode($parameter));
  769. $R = curl_get($url);
  770. $R1 = json_decode($R, true);
  771. if ($R1['code'] == 200) {
  772. $res['msg'] = "操作成功";
  773. $res['data'] = $R1['data'];
  774. $res['flag'] = true;
  775. echo json_encode($res);
  776. } else {
  777. $res['msg'] = $R1['message'];
  778. $res['flag'] = false;
  779. echo json_encode($res);
  780. exit();
  781. }
  782. } else {
  783. $res['msg'] = $accessToken_array['message'];
  784. $res['flag'] = false;
  785. echo json_encode($res);
  786. exit();
  787. }
  788. }
  789. public function setPortConfig()
  790. {
  791. $Data = I("");
  792. $Res = M()->query("SELECT max(object_code) AS object_code FROM sp_object_share WHERE object_code LIKE '" . $Data['dwtype'] . "-" . $Data['company_code'] . "%'");
  793. if (empty($Res)) {
  794. $data['object_code'] = $Data['dwtype'] . '-' . $Data['company_code'] . '001';
  795. } else {
  796. $sort = (int)substr($Res[0]['object_code'], 10, 3) + 1;
  797. $num = str_pad($sort, 3, "0", STR_PAD_LEFT);
  798. $data['object_code'] = $Data['dwtype'] . '-' . $Data['company_code'] . $num;
  799. }
  800. $data['owner_code'] = $Data['owner_code'];
  801. $data['owner_dwtype'] = 6;
  802. $data['dwtype'] = $Data['dwtype'];
  803. $data['device_name'] = $Data['device_name'];
  804. $data['object_name'] = $Data['object_name'];
  805. $data['start_port'] = $Data['ports'];
  806. $data['rec_cur'] = 0;
  807. $data['min_level'] = $Data['floor'];
  808. $data['max_level'] = $Data['floor'];
  809. $data['is_top'] = $Data['is_top'];
  810. $R1 = M()->query("select * from sp_owner_port where owner_code='" . $Data['owner_code'] . "' and iotype=" . $Data['iotype'] . " and ports='" . $Data['ports'] . "'");
  811. if (!empty($R1[0]['id'])) {
  812. $R = M('owner_port')->where(array('id' => $R1[0]['id']))->save($Data);
  813. } else {
  814. $R = M('owner_port')->add($Data);
  815. // print_r($data);
  816. $Res3 = M('object_share')->add($data);
  817. // print_r($Res3);
  818. }
  819. if ($R) {
  820. $res['msg'] = "操作成功";
  821. $res['flag'] = true;
  822. echo json_encode($res);
  823. } else {
  824. $res['msg'] = "操作失败";
  825. $res['flag'] = false;
  826. echo json_encode($res);
  827. }
  828. }
  829. public function delPort()
  830. {
  831. $Data = I();
  832. if (!empty($Data['id'])) {
  833. $Res = M()->query("SELECT * FROM sp_object_share WHERE owner_code = '" . $Data['owner_code'] . "'");
  834. $S = M('object_share')->delete($Res[0]['id']);
  835. $R = M('owner_port')->delete($Data['id']);
  836. if ($R) {
  837. $res['msg'] = "操作成功";
  838. $res['flag'] = true;
  839. echo json_encode($res);
  840. } else {
  841. $res['msg'] = "操作失败";
  842. $res['flag'] = false;
  843. echo json_encode($res);
  844. }
  845. }
  846. }
  847. }