DeviceConfigController.class.php 52 KB

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