GeneralPushController.class.php 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/4/30 0030
  6. * Time: 上午 9:53
  7. */
  8. namespace Home\Controller;
  9. use Think\Controller;
  10. include '../Common/function.php';
  11. include('/php/aliyun-dyvms-php-sdk/api_demo/singleCallByTts1.php');
  12. include('/php/api_sdk/JdMessageSend4.php');
  13. class GeneralPushController extends PushWarnController
  14. {
  15. public function voice()
  16. {
  17. $Data = I();
  18. $log = "[时间" . date("Y-m-d H:i:s") . "]报警数据:" . json_encode($Data) . "\r\n";
  19. $filename_log = "/var/www/html/jdxf/log/video_log" . date("Y-m-d") . ".log";
  20. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  21. print_r($Data);
  22. if (empty($Data['device_code'])) {
  23. echo 'device_code is null';
  24. exit;
  25. }
  26. $where = " AND data2 like '%8%'";
  27. $device_code = $Data['device_code'];
  28. $phone = $Data['phone'];
  29. $evt_name = $Data['evt_name'];
  30. $time = $Data['time'];
  31. $insert_id = $Data['insert_id'];
  32. $bz = $Data['bz'];
  33. $user_from = $Data['user_from'];
  34. // //3小时以内相同设备报警未处理则不推送;
  35. $unique_number = $device_code;
  36. $redis = new \Redis();
  37. $result = $redis->connect('47.98.201.73', 6379);
  38. $pd = 1;
  39. if ($result == 1) {
  40. $res = $redis->get("$unique_number");
  41. if ($res == 1) {
  42. $pd = 1;
  43. } else if (!empty($res)) {
  44. if (floor((strtotime($Data['time']) - strtotime($res)) / 3600) > 3) {
  45. $pd = 1;
  46. } else {
  47. $pd = 0;
  48. }
  49. } else {
  50. $pd = 1;
  51. }
  52. $res1 = $redis->get("$unique_number");
  53. // var_dump($res);
  54. $redis->set("$unique_number", "$time");
  55. $redis->close();
  56. }
  57. // print_r("select s.push_param2,s.owner_name,s.unitinfo,s.company,c.owner_address,s.dwtype from sp_owner s ,sp_owner_company c where s.company=c.owner_id and s.owner_code ='" . $device_code . "'");
  58. $company = M()->query("select s.push_param2,s.owner_name,s.unitinfo,s.company,c.owner_address,s.dwtype from sp_owner s ,sp_owner_company c where s.company=c.owner_id and s.owner_code ='" . $device_code . "'");
  59. print_r($company);
  60. $company_code = $company[0]['company'];
  61. if ($company[0]['dwtype'] == 16) {
  62. $union_sql = M()->query("select phone from sp_owner_phone WHERE owner_code='" . $company_code . "' " . $where . " union select phone from sp_owner_phone WHERE owner_code in (select other_code from sp_owner_fujin where owner_code='" . $company_code . "') " . $where);
  63. $openids = $this->array_column1($union_sql, "phone");
  64. if (empty($openids)) {
  65. echo 'open is null';
  66. exit;
  67. }
  68. $op = M()->query("SELECT openid FROM sp_wx_customuser WHERE type='wx' and idphone in($openids)");
  69. $status11 = M()->query("SELECT statustime FROM sp_devices_status where deviceid='" . $Data['id'] . "'");
  70. $access_token = GetAccess_Token1();
  71. $address = '警报地址:' . $company[0]['owner_address'] . $company[0]['unitinfo'];
  72. // if (empty($time)) {
  73. $time = $status11[0]['statustime'];
  74. // }
  75. // if ($dwtype == 16) {
  76. $status11 = M()->query("SELECT time FROM sp_video2017 where id='" . $insert_id . "'");
  77. $time66 = $status11[0]['time'];
  78. if (!empty($time66)) {
  79. $time = $time66;
  80. }
  81. // }
  82. if (!empty($bz)) {
  83. $remark = $bz;
  84. } else {
  85. $remark = '设备名称:' . $company[0]['owner_name'];
  86. }
  87. $ljurl = "https://qhome.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/16/id/" . $insert_id;
  88. // print_r($op);
  89. if ($company_code == "11111") {
  90. $url = "https://qhome.usky.cn/jdxf/wxapp7.php/Home/Fireinfo/index/type/16/id/" . $insert_id . "/zdid/" . $company[0]['push_param2'];
  91. $access_token2 = GetAccess_Token2();
  92. print_r("伍继");
  93. $res1=M()->query("select clzt from sp_video2017 where id=".$insert_id);
  94. if ($res1[0]['clzt']==1){
  95. $wjurl='https://qhome.usky.cn/index.html#/pages/processedDetail1/processedDetail1?companyCode='.$company[0]['push_param2'].'&processingStatus=1&id='.$insert_id.'&type=2';
  96. }else{
  97. $wjurl='https://qhome.usky.cn/index.html#/pages/unprocessDetail1/unprocessDetail1?companyCode='.$company[0]['push_param2'].'&processingStatus=0&id='.$insert_id.'&type=2';
  98. }
  99. foreach ($op as $key => $o) {
  100. if (!empty($o['openid'])) {
  101. $Message = $this->SendDeviceAlarm3($access_token2, $o['openid'], $address, $device_code, $evt_name, $time, $remark, $url);
  102. print_r($Message);
  103. $Message1 = $this->SendDeviceAlarm3($access_token2, $o['openid'], $address, $device_code, $evt_name, $time, $remark, $wjurl);
  104. print_r($Message1);
  105. }
  106. }
  107. } else {
  108. if ($pd == 1) {
  109. foreach ($op as $key => $o) {
  110. if (!empty($o['openid'])) {
  111. $Message = $this->SendDeviceAlarm($access_token, $o['openid'], $address, $device_code, $evt_name, $time, $remark, $ljurl, $url = '');
  112. $log = "[时间" . date("Y-m-d H:i:s") . "]报警数据:" . json_encode($Message) . "\r\n";
  113. $filename_log = "/var/www/html/jdxf/log/video_fh_log" . date("Y-m-d") . ".log";
  114. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  115. print_r($Message);
  116. }
  117. }
  118. }
  119. }
  120. }
  121. // }
  122. }
  123. public function voice_alarm()
  124. {
  125. $Data = I();
  126. log_Printing($Data, 'voice_alarm');
  127. //采集推送的参数
  128. if (!empty($Data['device_code'])) {
  129. $dataid = $Data['device_code'];//设备编号
  130. } elseif (!empty($Data['IMEI'])) {
  131. $dataid = $Data['IMEI'];//设备编号
  132. } elseif (!empty($Data['IEMI'])) {
  133. $dataid = $Data['IEMI'];//设备编号
  134. } elseif (!empty($Data['id'])) {
  135. $dataid = $Data['id'];//设备编号
  136. } else {
  137. echo "device_code is null";
  138. exit;
  139. }
  140. $insert_id = $Data['insert_id'];//记录id
  141. $time = $Data['time'];//报警时间
  142. $bz = $Data['bz'];//备注
  143. $evt = $Data['evt'];//故障类型编码
  144. $evt_name = $Data['evt_name'];//故障类型
  145. //单位和报警类型
  146. $res = M()->query("select company,dwtype from sp_owner where owner_code='" . $dataid . "'");
  147. if (empty($res)) {
  148. echo "Missing system parameter unit or type";
  149. exit;
  150. }
  151. // print_r($res);exit();
  152. //类型判断
  153. $dwtype = $res[0]['dwtype'];
  154. if (empty($evt)) {
  155. $evt_name = $evt_name;
  156. if ($evt_name == '离线') {
  157. $dwtype = 8;
  158. }
  159. } else {
  160. switch ($res[0]['dwtype']) {
  161. case "1";
  162. $type_name = '火警';
  163. switch ($evt) {
  164. case '44'://判断是否设置离线语音报警
  165. $evt_name = '离线';
  166. $where = " AND data2 like '%5%'";
  167. break;
  168. case 'H02P1':
  169. $evt_name = '火警';
  170. $where = " AND data2 like '%1%'";
  171. break;
  172. case 'H02P2':
  173. $evt_name = '故障';
  174. $where = " AND data2 like '%2%'";
  175. break;
  176. case 'H02P3':
  177. $evt_name = '屏蔽';
  178. $where = " AND data2 like '%0%'";
  179. break;
  180. case 'H02P4':
  181. $evt_name = '监管';
  182. $where = " AND data2 like '%0%'";
  183. break;
  184. case 'H02P5':
  185. $evt_name = '启动';
  186. $where = " AND data2 like '%1%'";
  187. break;
  188. case 'H02P6':
  189. $evt_name = '反馈';
  190. $where = " AND data2 like '%1%'";
  191. break;
  192. case 'H02P8':
  193. $evt_name = '电源故障';
  194. $where = " AND data2 like '%2%'";
  195. break;
  196. case 'U24P0':
  197. $evt_name = '复位';
  198. $where = " AND data2 like '%0%'";
  199. break;
  200. case 'U24P1':
  201. $evt_name = '消音';
  202. $where = " AND data2 like '%0%'";
  203. break;
  204. case 'U24P2':
  205. $evt_name = '手动报警';
  206. $where = " AND data2 like '%1%'";
  207. break;
  208. case 'U24P4':
  209. $evt_name = '自检';
  210. $where = " AND data2 like '%0%'";
  211. break;
  212. case 'U21P1':
  213. $evt_name = '火警';
  214. $where = " AND data2 like '%1%'";
  215. break;
  216. case 'U21P2':
  217. $evt_name = '故障';
  218. $where = " AND data2 like '%2%'";
  219. break;
  220. case 'U21P3':
  221. $evt_name = '主电故障';
  222. $where = " AND data2 like '%2%'";
  223. break;
  224. case 'U21P4':
  225. $evt_name = '备电故障';
  226. $where = " AND data2 like '%2%'";
  227. break;
  228. default:
  229. $evt_name = '其他';
  230. $where = " AND data2 like '%0%'";
  231. break;
  232. }
  233. break;
  234. case "2";
  235. $type_name = '消防水';
  236. switch ($evt) {
  237. case 'WP1':
  238. $evt_name = '低压';
  239. $where = " AND data2 like '%3%'";
  240. break;
  241. case 'WP2':
  242. $evt_name = '高压';
  243. $where = " AND data2 like '%3%'";
  244. break;
  245. case 'WP4':
  246. $evt_name = '离线';
  247. $where = " AND data2 like '%5%'";
  248. break;
  249. }
  250. break;
  251. case "3";
  252. $type_name = '烟感';
  253. switch ($evt) {
  254. case 'y01':
  255. $evt_name = '报警';
  256. $where = " AND data2 like '%6%'";
  257. break;
  258. case 'y04':
  259. $evt_name = '低压';
  260. $where = " AND data2 like '%6%'";
  261. break;
  262. case 'y05':
  263. $evt_name = '故障';
  264. $where = " AND data2 like '%6%'";
  265. break;
  266. case 'y07':
  267. $evt_name = '火灾报警';
  268. $where = " AND data2 like '%6%'";
  269. break;
  270. case 'y08':
  271. $evt_name = '温度报警';
  272. $where = " AND data2 like '%6%'";
  273. break;
  274. case 'y09':
  275. $evt_name = '烟感电量低';
  276. $where = " AND data2 like '%6%'";
  277. break;
  278. case 'y10':
  279. $evt_name = '防拆报警';
  280. $where = " AND data2 like '%6%'";
  281. break;
  282. case 'y11':
  283. $evt_name = '发射电路故障';
  284. $where = " AND data2 like '%6%'";
  285. break;
  286. }
  287. break;
  288. case "5";
  289. $type_name = '液位';
  290. switch ($evt) {
  291. case 'LL0':
  292. $evt_name = '正常';
  293. break;
  294. case 'LL1':
  295. $evt_name = '低水位';
  296. break;
  297. case 'LL2':
  298. $evt_name = '高水位';
  299. break;
  300. case 'LL3':
  301. $evt_name = '故障';
  302. break;
  303. case 'LL4':
  304. $evt_name = '离线';
  305. break;
  306. }
  307. break;
  308. case "6";
  309. $type_name = 'RTU';
  310. $evt_name = $evt_name;
  311. if ($evt_name == '离线') {
  312. $where = " AND data2 like '%5%'";
  313. } else {
  314. $where = " AND data2 like '%4%'";
  315. }
  316. break;
  317. case "7";
  318. $type_name = '电气火灾';
  319. switch ($evt) {
  320. case 'EF1':
  321. $evt_name = '欠压';
  322. $where = " AND data2 like '%7%'";
  323. break;
  324. case 'EF2':
  325. $evt_name = '过压';
  326. $where = " AND data2 like '%7%'";
  327. break;
  328. case 'EF3':
  329. $evt_name = '过流';
  330. $where = " AND data2 like '%7%'";
  331. break;
  332. case 'EF4':
  333. $evt_name = '漏电';
  334. $where = " AND data2 like '%7%'";
  335. break;
  336. case 'EF5':
  337. $evt_name = '温度1超高';
  338. $where = " AND data2 like '%7%'";
  339. break;
  340. case 'EF6':
  341. $evt_name = '温度2超高';
  342. $where = " AND data2 like '%7%'";
  343. break;
  344. case 'EF7':
  345. $evt_name = '温度3超高';
  346. $where = " AND data2 like '%7%'";
  347. break;
  348. case 'EF8':
  349. $evt_name = '温度4超高';
  350. $where = " AND data2 like '%7%'";
  351. break;
  352. case 'EF9':
  353. $evt_name = '离线';
  354. $where = " AND data2 like '%5%'";
  355. break;
  356. }
  357. break;
  358. case "16";
  359. $type_name = '视频监测';
  360. $evt_name = $evt_name;
  361. if ($evt_name == '离线') {
  362. $where = " AND data2 like '%5%'";
  363. } else {
  364. $where = " AND data2 like '%8%'";
  365. }
  366. break;
  367. case "17";
  368. $type_name = '电梯监测';
  369. switch ($evt) {
  370. case 'LF01':
  371. $evt_name = '声音报警';
  372. // $where=" AND data2 like '%3%'";
  373. break;
  374. case 'LF03':
  375. $evt_name = '电梯检修';
  376. // $where=" AND data2 like '%3%'";
  377. break;
  378. case 'LF04':
  379. $evt_name = '电梯检修恢复';
  380. // $where=" AND data2 like '%5%'";
  381. break;
  382. case 'LF05':
  383. $evt_name = '电梯故障';
  384. // $where=" AND data2 like '%3%'";
  385. break;
  386. case 'LF0501':
  387. $evt_name = '电梯异常停留';
  388. // $where=" AND data2 like '%3%'";
  389. break;
  390. case 'LF0502':
  391. $evt_name = '电梯异常开门';
  392. // $where=" AND data2 like '%3%'";
  393. break;
  394. case 'LF0503':
  395. $evt_name = '电梯异常关门';
  396. // $where=" AND data2 like '%3%'";
  397. break;
  398. case 'LF0504':
  399. $evt_name = '电梯异常走梯';
  400. // $where=" AND data2 like '%3%'";
  401. break;
  402. case 'LF06':
  403. $evt_name = '电梯故障恢复';
  404. // $where=" AND data2 like '%3%'";
  405. break;
  406. default:
  407. $evt_name = '其他' . $Data['Status'];
  408. // $where=" AND data2 like '%3%'";
  409. break;
  410. }
  411. break;
  412. case "8";
  413. break;
  414. default:
  415. echo "This type of voice function is not enabled";
  416. break;
  417. }
  418. }
  419. //时间拼接
  420. $Y = date("m", strtotime($time));
  421. $R = date("d", strtotime($time));
  422. $S = date("G", strtotime($time));
  423. $F = date("i", strtotime($time));
  424. $time1 = date("Y-m-d");//日期
  425. $time2 = date("Y-m-d H:i:s");//时间
  426. $time3 = $Y . '月' . $R . '日' . $S . '时' . $F . '分';
  427. $time4 = date("Y-m");
  428. $time5 = date("Y");
  429. $usersql = "select * from ytiot_v_usercompany where owner_code='" . $res[0]['company'] . "' group by username";
  430. $user = add66($usersql);
  431. //语音推送
  432. foreach ($user as $key1 => $value1) {
  433. $sql = "select * from ytiot_yy_pzb where e_status=1 and username='" . $user[$key1]['username'] . "' and sbtype like '%" . $dwtype . "%' and jrq>='" . $time1 . "' and zed>0";
  434. $setmeal = add66($sql);
  435. if (!empty($setmeal)) {
  436. switch ($setmeal[0]['pzlb']) {
  437. case 0;
  438. $time6 = $time1;
  439. break;
  440. case 1;
  441. $time6 = $time4;
  442. break;
  443. case 2;
  444. $time6 = $time5;
  445. break;
  446. }
  447. $sql1 = "select count(*) as tsl from ytiot_yy_sjjl where company_code='" . $user[$key1]['username'] .
  448. "' and sbtype=" . $dwtype . " and sfyy=1 and bjsj like '" . $time6 . "%'";
  449. //
  450. $varsl = add($sql1);
  451. if ($setmeal[0]['lbsl'] > $varsl[0]['tsl']) {
  452. if (!empty($setmeal[0]['bjhm'])) {//一个手机号
  453. //
  454. $json = singleCallByTts($setmeal[0]['bjhm'], $type_name, $evt_name, $time3);
  455. print_r($setmeal[0]['bjhm'] . $type_name . $evt_name . $time3 . $json);
  456. exit();
  457. if ($json == 'OK') {
  458. $sql3 = "select * from ytiot_yy_pzb where id=" . $setmeal[0]['id'];
  459. $res2 = add66($sql3);
  460. $zed = $res2[0]['zed'] - 1;
  461. $sql_update = "update ytiot_yy_pzb set zed = " . $zed . " where id =" . $setmeal[0]['id'];
  462. $res3 = addDataInfo($sql_update);
  463. if ($res3) {
  464. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  465. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',1,'" . $user[$key1]['username'] . "')";
  466. addDataInfo($sql_inset);
  467. }
  468. } else {
  469. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  470. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  471. addDataInfo($sql_inset);
  472. }
  473. }
  474. // else {//多个手机号,暂时不用
  475. // foreach ($setmeal as $key6 => $value6) {
  476. // $sql2 = "select * from ytiot_yy_bjhm where pzbid=" . $setmeal[$key6]['id'];
  477. // $phone = add66($sql2);
  478. // foreach ($phone as $key => $value) {
  479. // $json = singleCallByTts($phone[$key]['bjhm'], $type_name, $evt_name, $time3);
  480. // if ($json == 'OK') {
  481. // $sql3 = "select * from ytiot_yy_pzb where id=" . $setmeal[$key6]['id'];
  482. // $res2 = add66($sql3);
  483. // $zed = $res2[0]['zed'] - 1;
  484. // $sql_update = "update ytiot_yy_pzb set zed = " . $zed . " where id =" . $setmeal[$key6]['id'];
  485. // $res3 = addDataInfo($sql_update);
  486. // if ($res3) {
  487. // $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  488. // . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',1,'" . $user[$key1]['username'] . "')";
  489. // addDataInfo($sql_inset);
  490. // }
  491. // } else {
  492. // $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  493. // . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  494. // addDataInfo($sql_inset);
  495. // }
  496. // }
  497. // }
  498. // }
  499. } else {
  500. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  501. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  502. addDataInfo($sql_inset);
  503. }
  504. } else {
  505. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  506. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  507. addDataInfo($sql_inset);
  508. }
  509. }
  510. }
  511. public function voice1()
  512. {
  513. // print_r( $_SERVER["REMOTE_ADDR"]); 获得ip
  514. $Data = I('post.');
  515. // print_r($Data);
  516. $log = "[时间" . date("Y-m-d H:i:s") . "]报警数据:" . json_encode($Data) . "\r\n";
  517. $filename_log = "/var/www/html/jdxf/log/voice_log" . date("Y-m-d") . ".log";
  518. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  519. if (empty($Data['phone'])) {
  520. echo "is null";
  521. exit;
  522. }
  523. if (!empty($Data['device_code'])) {
  524. $dataid = $Data['device_code'];//设备编号
  525. } elseif (!empty($Data['IMEI'])) {
  526. $dataid = $Data['IMEI'];//设备编号
  527. } elseif (!empty($Data['IEMI'])) {
  528. $dataid = $Data['IEMI'];//设备编号
  529. } elseif (!empty($Data['id'])) {
  530. $dataid = $Data['id'];//设备编号
  531. } else {
  532. echo "is null";
  533. exit;
  534. }
  535. $insert_id = $Data['insert_id'];
  536. $time = $Data['time'];//报警时间
  537. $bz = $Data['bz'];//备注
  538. $tstype = 4;//推送类型
  539. $evt = $Data['evt'];//故障类型
  540. $evt_name = $Data['evt_name'];//故障类型
  541. // addInt("insert into aa (data,time) values ('".json_encode($Data)."','".date("Y-m-d H:i:s")."')");
  542. $log = "[时间" . date("Y-m-d H:i:s") . "]报警数据:" . json_encode($Data) . "\r\n";
  543. $filename_log = "/var/www/html/jdxf/log/yy_log" . date("Y-m-d") . ".log";
  544. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  545. $company = M()->query("select company,dwtype from sp_owner where owner_code='" . $dataid . "'");
  546. if (!empty($company)) {
  547. $dwtype = $company[0]['dwtype'];
  548. switch ($dwtype) {
  549. case "1";//判断报警类型
  550. $type_name = '火警';
  551. if (empty($evt)) {
  552. $evt_name = $evt_name;
  553. } else {
  554. switch ($evt) {
  555. case '44'://判断是否设置离线语音报警
  556. $evt_name = '离线';
  557. $where = " AND data2 like '%5%'";
  558. break;
  559. case 'H02P1':
  560. $evt_name = '火警';
  561. $where = " AND data2 like '%1%'";
  562. break;
  563. case 'H02P2':
  564. $evt_name = '故障';
  565. $where = " AND data2 like '%2%'";
  566. break;
  567. case 'H02P3':
  568. $evt_name = '屏蔽';
  569. $where = " AND data2 like '%0%'";
  570. break;
  571. case 'H02P4':
  572. $evt_name = '监管';
  573. $where = " AND data2 like '%0%'";
  574. break;
  575. case 'H02P5':
  576. $evt_name = '启动';
  577. $where = " AND data2 like '%1%'";
  578. break;
  579. case 'H02P6':
  580. $evt_name = '反馈';
  581. $where = " AND data2 like '%1%'";
  582. break;
  583. // case 'H02P7':
  584. // $status='延时';
  585. // break;
  586. case 'H02P8':
  587. $evt_name = '电源故障';
  588. $where = " AND data2 like '%2%'";
  589. break;
  590. case 'U24P0':
  591. $evt_name = '复位';
  592. $where = " AND data2 like '%0%'";
  593. break;
  594. case 'U24P1':
  595. $evt_name = '消音';
  596. $where = " AND data2 like '%0%'";
  597. break;
  598. case 'U24P2':
  599. $evt_name = '手动报警';
  600. $where = " AND data2 like '%1%'";
  601. break;
  602. // case 'U24P3':
  603. // $status='警情消除';
  604. // break;
  605. case 'U24P4':
  606. $evt_name = '自检';
  607. $where = " AND data2 like '%0%'";
  608. break;
  609. // case 'U24P5':
  610. // $status='查岗应答';
  611. // break;
  612. // case 'U21P0':
  613. // $status='正常';
  614. // break;
  615. case 'U21P1':
  616. $evt_name = '火警';
  617. $where = " AND data2 like '%1%'";
  618. break;
  619. case 'U21P2':
  620. $evt_name = '故障';
  621. $where = " AND data2 like '%2%'";
  622. break;
  623. case 'U21P3':
  624. $evt_name = '主电故障';
  625. $where = " AND data2 like '%2%'";
  626. break;
  627. case 'U21P4':
  628. $evt_name = '备电故障';
  629. $where = " AND data2 like '%2%'";
  630. break;
  631. // case 'U21P5':
  632. // $status='监控';
  633. // break;
  634. // case 'U21P6':
  635. // $status='接线';
  636. // break;
  637. default:
  638. $evt_name = '其他';
  639. $where = " AND data2 like '%0%'";
  640. // $status=$evt_name;
  641. break;
  642. }
  643. }
  644. break;
  645. case "2";//判断报警类型
  646. $type_name = '消防水';
  647. if (empty($evt)) {
  648. $evt_name = $evt_name;
  649. } else {
  650. switch ($Data['evt']) {
  651. case 'WP1':
  652. $evt_name = '低压';
  653. $where = " AND data2 like '%3%'";
  654. break;
  655. case 'WP2':
  656. $evt_name = '高压';
  657. $where = " AND data2 like '%3%'";
  658. break;
  659. case 'WP4':
  660. $evt_name = '离线';
  661. $where = " AND data2 like '%5%'";
  662. break;
  663. // default:
  664. // $status='其他'.$Data['evt'];
  665. // break;
  666. }
  667. }
  668. break;
  669. case "3";//判断报警类型
  670. $type_name = '烟感';
  671. if (empty($evt)) {
  672. $evt_name = $evt_name;
  673. } else {
  674. switch ($Data['evt']) {
  675. case 'y01':
  676. $evt_name = '报警';
  677. $where = " AND data2 like '%6%'";
  678. break;
  679. // case 'yo2':
  680. // $status='报警静音';
  681. // break;
  682. case 'y04':
  683. $evt_name = '低压';
  684. $where = " AND data2 like '%6%'";
  685. break;
  686. case 'y05':
  687. $evt_name = '故障';
  688. $where = " AND data2 like '%6%'";
  689. break;
  690. case 'y07':
  691. $evt_name = '火灾报警';
  692. $where = " AND data2 like '%6%'";
  693. break;
  694. case 'y08':
  695. $evt_name = '温度报警';
  696. $where = " AND data2 like '%6%'";
  697. break;
  698. case 'y09':
  699. $evt_name = '烟感电量低';
  700. $where = " AND data2 like '%6%'";
  701. break;
  702. case 'y10':
  703. $evt_name = '防拆报警';
  704. $where = " AND data2 like '%6%'";
  705. break;
  706. case 'y11':
  707. $evt_name = '发射电路故障';
  708. $where = " AND data2 like '%6%'";
  709. break;
  710. // default:
  711. // $status='其他'.$Data['evt'];
  712. // break;
  713. }
  714. }
  715. break;
  716. case "5";//判断报警类型
  717. $type_name = '液位';
  718. if (empty($evt)) {
  719. $evt_name = $evt_name;
  720. } else {
  721. switch ($Data['evt']) {
  722. case 'LL0':
  723. $evt_name = '正常';
  724. break;
  725. case 'LL1':
  726. $evt_name = '低水位';
  727. break;
  728. case 'LL2':
  729. $evt_name = '高水位';
  730. break;
  731. case 'LL3':
  732. $evt_name = '故障';
  733. break;
  734. case 'LL4':
  735. $evt_name = '离线';
  736. break;
  737. // default:
  738. // $status='其他'.$Data['Status'];
  739. // break;
  740. }
  741. }
  742. break;
  743. case "6";//判断报警类型
  744. $type_name = 'RTU';
  745. $evt_name = $evt_name;
  746. if ($evt_name == '离线') {
  747. $where = " AND data2 like '%5%'";
  748. } else {
  749. $where = " AND data2 like '%4%'";
  750. }
  751. break;
  752. case "7";//判断报警类型
  753. $type_name = '电气火灾';
  754. if (empty($evt)) {
  755. $evt_name = $evt_name;
  756. } else {
  757. switch ($Data['evt']) {
  758. case 'EF1':
  759. $evt_name = '欠压';
  760. $where = " AND data2 like '%7%'";
  761. break;
  762. case 'EF2':
  763. $evt_name = '过压';
  764. $where = " AND data2 like '%7%'";
  765. break;
  766. case 'EF3':
  767. $evt_name = '过流';
  768. $where = " AND data2 like '%7%'";
  769. break;
  770. case 'EF4':
  771. $evt_name = '漏电';
  772. $where = " AND data2 like '%7%'";
  773. break;
  774. case 'EF5':
  775. $evt_name = '温度1超高';
  776. $where = " AND data2 like '%7%'";
  777. break;
  778. case 'EF6':
  779. $evt_name = '温度2超高';
  780. $where = " AND data2 like '%7%'";
  781. break;
  782. case 'EF7':
  783. $evt_name = '温度3超高';
  784. $where = " AND data2 like '%7%'";
  785. break;
  786. case 'EF8':
  787. $evt_name = '温度4超高';
  788. $where = " AND data2 like '%7%'";
  789. break;
  790. case 'EF9':
  791. $evt_name = '离线';
  792. $where = " AND data2 like '%5%'";
  793. break;
  794. // default:
  795. // $status='其他'.$Data['evt'];
  796. // break;
  797. }
  798. }
  799. break;
  800. case "16";//判断报警类型
  801. $type_name = '视频';
  802. $evt_name = $evt_name;
  803. if ($evt_name == '离线') {
  804. $where = " AND data2 like '%5%'";
  805. } else {
  806. $where = " AND data2 like '%8%'";
  807. }
  808. break;
  809. case "17";//判断报警类型
  810. $type_name = '电梯';
  811. if (empty($evt)) {
  812. $evt_name = $evt_name;
  813. } else {
  814. switch ($Data['evt']) {
  815. case 'LF01':
  816. $evt_name = '声音报警';
  817. // $where=" AND data2 like '%3%'";
  818. break;
  819. case 'LF03':
  820. $evt_name = '电梯检修';
  821. // $where=" AND data2 like '%3%'";
  822. break;
  823. case 'LF04':
  824. $evt_name = '电梯检修恢复';
  825. // $where=" AND data2 like '%5%'";
  826. break;
  827. case 'LF05':
  828. $evt_name = '电梯故障';
  829. // $where=" AND data2 like '%3%'";
  830. break;
  831. case 'LF0501':
  832. $evt_name = '电梯异常停留';
  833. // $where=" AND data2 like '%3%'";
  834. break;
  835. case 'LF0502':
  836. $evt_name = '电梯异常开门';
  837. // $where=" AND data2 like '%3%'";
  838. break;
  839. case 'LF0503':
  840. $evt_name = '电梯异常关门';
  841. // $where=" AND data2 like '%3%'";
  842. break;
  843. case 'LF0504':
  844. $evt_name = '电梯异常走梯';
  845. // $where=" AND data2 like '%3%'";
  846. break;
  847. case 'LF06':
  848. $evt_name = '电梯故障恢复';
  849. // $where=" AND data2 like '%3%'";
  850. break;
  851. default:
  852. $evt_name = '其他' . $Data['Status'];
  853. // $where=" AND data2 like '%3%'";
  854. break;
  855. }
  856. }
  857. break;
  858. }
  859. if ($evt_name == '离线') {
  860. $dwtype = 8;
  861. }
  862. $Y = date("m", strtotime($time));
  863. $R = date("d", strtotime($time));
  864. $S = date("G", strtotime($time));
  865. $F = date("i", strtotime($time));
  866. $time1 = date("Y-m-d");//日期
  867. $time2 = date("Y-m-d H:i:s");//时间
  868. $time3 = $Y . '月' . $R . '日' . $S . '时' . $F . '分';
  869. print_r($time3);
  870. $time4 = date("Y-m");
  871. $time5 = date("Y");
  872. $usersql = "select * from ytiot_v_usercompany where owner_code='" . $company[0]['company'] . "' group by username";
  873. $user = add66($usersql);
  874. // print_r($user);
  875. foreach ($user as $key1 => $value1) {
  876. // 语音推送
  877. if ($tstype == 1 || $tstype == 3 || $tstype == 5 || $tstype == 7) {
  878. // print_r( "select * from ytiot_yy_pzb where e_status=1 and username='" . $user[$key1]['username'] . "' and sbtype=" . $dwtype . " and jrq>='" . $time1 . "' and zed>0");
  879. $sql = "select * from ytiot_yy_pzb where e_status=1 and username='" . $user[$key1]['username'] . "' and sbtype like '%" . $dwtype . "%' and jrq>='" . $time1 . "' and zed>0";
  880. $setmeal = add66($sql);
  881. // print_r("select * from ytiot_yy_pzb where e_status=1 and username='" . $user[$key1]['username'] . "' and sbtype like '%" . $dwtype . "%' and jrq>='" . $time1 . "' and zed>0");
  882. if (!empty($setmeal)) {
  883. switch ($setmeal[0]['pzlb']) {
  884. case 0;
  885. $time6 = $time1;
  886. break;
  887. case 1;
  888. $time6 = $time4;
  889. break;
  890. case 2;
  891. $time6 = $time5;
  892. break;
  893. }
  894. $sql1 = "select count(*) as tsl from ytiot_yy_sjjl where company_code='" . $user[$key1]['username'] .
  895. "' and sbtype=" . $dwtype . " and sfyy=1 and bjsj like '" . $time6 . "%'";
  896. $varsl = add($sql1);
  897. if ($setmeal[0]['lbsl'] > $varsl[0]['tsl']) {
  898. if (!empty($setmeal[0]['bjhm'])) {//一个手机号
  899. $json = singleCallByTts($setmeal[0]['bjhm'], $type_name, $evt_name, $time3);
  900. if ($json == 'OK') {
  901. $sql3 = "select * from ytiot_yy_pzb where id=" . $setmeal[0]['id'];
  902. $res2 = add66($sql3);
  903. $zed = $res2[0]['zed'] - 1;
  904. $sql_update = "update ytiot_yy_pzb set zed = " . $zed . " where id =" . $setmeal[0]['id'];
  905. $res3 = addDataInfo($sql_update);
  906. if ($res3) {
  907. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  908. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',1,'" . $user[$key1]['username'] . "')";
  909. addDataInfo($sql_inset);
  910. }
  911. } else {
  912. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  913. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  914. addDataInfo($sql_inset);
  915. }
  916. } else {//多个手机号,暂时不用
  917. print_r($setmeal);
  918. foreach ($setmeal as $key6 => $value6) {
  919. $sql2 = "select * from ytiot_yy_bjhm where pzbid=" . $setmeal[$key6]['id'];
  920. print_r("select * from ytiot_yy_bjhm where pzbid=" . $setmeal[$key6]['id']);
  921. $phone = add66($sql2);
  922. print_r($phone);
  923. foreach ($phone as $key => $value) {
  924. $json = singleCallByTts($phone[$key]['bjhm'], $type_name, $evt_name, $time3);
  925. // $json='';
  926. print_r($json);
  927. if ($json == 'OK') {
  928. $sql3 = "select * from ytiot_yy_pzb where id=" . $setmeal[$key6]['id'];
  929. $res2 = add66($sql3);
  930. $zed = $res2[0]['zed'] - 1;
  931. $sql_update = "update ytiot_yy_pzb set zed = " . $zed . " where id =" . $setmeal[$key6]['id'];
  932. $res3 = addDataInfo($sql_update);
  933. if ($res3) {
  934. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  935. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',1,'" . $user[$key1]['username'] . "')";
  936. addDataInfo($sql_inset);
  937. }
  938. } else {
  939. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  940. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  941. addDataInfo($sql_inset);
  942. }
  943. }
  944. }
  945. }
  946. } else {
  947. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  948. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  949. addDataInfo($sql_inset);
  950. }
  951. } else {
  952. $sql_inset = "insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  953. . $dataid . "'," . $dwtype . ",'" . $evt_name . "','" . $time . "','" . $time2 . "',0,'" . $user[$key1]['username'] . "')";
  954. addDataInfo($sql_inset);
  955. }
  956. }
  957. // 短信推送
  958. if ($tstype == 2 || $tstype == 3 || $tstype == 6 || $tstype == 7) {
  959. $dxsql = "select a.id as cz_id,b.id as pz_id,b.cycle,b.cycle_cs from ytiot_dx_cz as a join ytiot_dx_pz as b on a.id=b.cz_id where a.e_status=1 and a.user_name='" .
  960. $user[$key1]['username'] . "' and a.end_date>='" . $time1 . "' and a.balance>0";
  961. $dxxx = add66($dxsql);
  962. if (!empty($dxxx)) {
  963. switch ($dxxx[0]['cycle']) {
  964. case 1;
  965. $time6 = $time1;
  966. break;
  967. case 2;
  968. $time6 = $time4;
  969. break;
  970. case 3;
  971. $time6 = $time5;
  972. break;
  973. }
  974. $dxsql1 = "select count(*) as dxfssl from ytiot_dx_sms_push_record where user_name='" . $user[$key1]['username'] .
  975. "' and success_tag=1 and alarm_time like '" . $time6 . "%'";
  976. $dxvarsl = add($dxsql1);
  977. if ($dxxx[0]['cycle_cs'] > $dxvarsl[0]['dxfssl']) {
  978. $phonesql = "select b.phone,b.name from ytiot_dx_configure_renyuan as a join ytiot_dx_staffing as b on a.staffing_id=b.id where pz_id="
  979. . $dxxx[0]['pz_id'] . " and b.bj_type like '%" . $dwtype . "%'";
  980. $phone = add($phonesql);
  981. if (!empty($phone)) {
  982. foreach ($phone as $key66 => $value66) {
  983. $fsxx = array('type' => $type_name, 'gz' => $evt_name, 'bjsj' => $time3);
  984. $dxjson = dxsendSms($phone[$key66]['phone'], $fsxx);
  985. if ($dxjson == 'OK') {
  986. $yesql = "select balance from ytiot_dx_cz where id=" . $dxxx[0]['cz_id'];
  987. $ye = add($yesql);
  988. $ye1 = $ye[0]['balance'] - 1;
  989. $sql_updateye = "update ytiot_dx_cz set balance = " . $ye1 . " where id =" . $dxxx[0]['cz_id'];
  990. $ye_update = addDataInfo($sql_updateye);
  991. if ($ye_update) {
  992. $sql_dxjs_inset = "insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('"
  993. . $dataid . "'," . $dwtype . ",'" . $evt_name . "',1,'发送成功','" . $user[$key1]['username'] . "','" . $time . "')";
  994. addDataInfo($sql_dxjs_inset);
  995. }
  996. } else {
  997. //原因:代码出现问题
  998. $dxsql_inset = "insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('"
  999. . $dataid . "'," . $dwtype . ",'" . $evt_name . "',0,'原因:参数不合法','" . $user[$key1]['username'] . "','" . $time . "')";
  1000. addDataInfo($dxsql_inset);
  1001. }
  1002. }
  1003. } else {
  1004. //原因:未添加接收人;
  1005. $dxsql_inset = "insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('"
  1006. . $dataid . "'," . $dwtype . ",'" . $evt_name . "',0,'原因:未添加接收人','" . $user[$key1]['username'] . "','" . $time . "')";
  1007. addDataInfo($dxsql_inset);
  1008. }
  1009. } else {
  1010. // 原因:当天配置的报警已用完;
  1011. $dxsql_inset = "insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('"
  1012. . $dataid . "'," . $dwtype . ",'" . $evt_name . "',0,'原因:当天配置的报警已用完','" . $user[$key1]['username'] . "','" . $time . "')";
  1013. addDataInfo($dxsql_inset);
  1014. }
  1015. } else {
  1016. // 原因:1.尚未开通;2.开通时间到期;3.余额不足;
  1017. $dxsql_inset = "insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('"
  1018. . $dataid . "'," . $dwtype . ",'" . $evt_name . "',0,'原因:1.尚未开通;2.开通时间到期;3.余额不足;','" . $user[$key1]['username'] . "','" . $time . "')";
  1019. addDataInfo($dxsql_inset);
  1020. }
  1021. }
  1022. }
  1023. // 微信推送
  1024. if ($company[0]['company'] != 10226) {
  1025. if ($tstype == 4 || $tstype == 5 || $tstype == 6 || $tstype == 7) {
  1026. $company = M()->query("select s.owner_name,s.unitinfo,s.company,c.owner_address from sp_owner s ,sp_owner_company c where s.company=c.owner_id and s.owner_code ='" . $dataid . "'");
  1027. // if (!empty($where)){
  1028. print_r($company);
  1029. $union_sql = M()->query("select phone from sp_owner_phone WHERE owner_code='" . $company[0]['company'] . "' " . $where . " union select phone from sp_owner_phone WHERE owner_code in (select other_code from sp_owner_fujin where owner_code='" . $company[0]['company'] . "') " . $where . "");
  1030. // }else{
  1031. // $union_sql=M()->query("select phone from sp_owner_phone WHERE owner_code='".$company[0]['company']."' union select phone from sp_owner_phone WHERE owner_code in (select other_code from sp_owner_fujin where owner_code='".$company[0]['company']."')");
  1032. // }
  1033. if (count($union_sql) == 0) {
  1034. exit;
  1035. }
  1036. $openids = $this->array_column1($union_sql, "phone");
  1037. if (empty($openids)) {
  1038. echo 'open is null';
  1039. exit;
  1040. }
  1041. if ($dwtype != 17) {
  1042. $status11 = M()->query("SELECT statustime FROM sp_devices_status where deviceid='" . $dataid . "'");
  1043. $time66 = $status11[0]['statustime'];
  1044. if (empty($time66)) {
  1045. $time = $time;
  1046. } else {
  1047. $time = $time66;
  1048. }
  1049. } else {
  1050. $time = $time1;
  1051. }
  1052. if ($dwtype == 16) {
  1053. $status11 = M()->query("SELECT time FROM sp_video2017 where id='" . $insert_id . "'");
  1054. $time66 = $status11[0]['time'];
  1055. if (empty($time66)) {
  1056. $time = $time;
  1057. } else {
  1058. $time = $time66;
  1059. }
  1060. }
  1061. $op = M()->query("SELECT openid FROM sp_wx_customuser WHERE type='wx' and idphone in($openids)");
  1062. $access_token = GetAccess_Token1();
  1063. $address = '警报地址:' . $company[0]['owner_address'] . $company[0]['unitinfo'];
  1064. $deviceid = $dataid;
  1065. $evt_name = $evt_name;
  1066. // $remark='设备名称:'.$company[0]['owner_name'];
  1067. if (!empty($bz)) {
  1068. $remark = $bz;
  1069. } else {
  1070. $remark = '设备名称:' . $company[0]['owner_name'];
  1071. }
  1072. $ljurl = "https://qhome.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/" . $dwtype . "/id/" . $insert_id;
  1073. print_r($ljurl);
  1074. foreach ($op as $o) {
  1075. if (!empty($o['openid'])) {
  1076. $this->SendDeviceAlarm($access_token, $o['openid'], $address, $deviceid, $evt_name, $time, $remark, $ljurl, $url = '');
  1077. }
  1078. }
  1079. }
  1080. }
  1081. } else {
  1082. // 无此设备
  1083. }
  1084. }
  1085. }