WaterwarnController.class.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. <?php
  2. namespace Home\Controller;
  3. use Think\Controller;
  4. use Think\Cache\Driver;
  5. include '../Common/function.php';
  6. class WaterwarnController extends PushWarnController
  7. {
  8. public function js_cs()
  9. {
  10. $counterfile = "/var/www/html/jdxf/log/balong.txt";
  11. $num = displaycounter($counterfile);
  12. return $num;
  13. }
  14. public function bj()
  15. {
  16. $Data = I('post.');
  17. $log = "[时间" . date("Y-m-d H:i:s") . "]报警数据:" . json_encode($Data) . "\r\n";
  18. $filename_log = "/var/www/html/jdxf/log/yg_log" . date("Y-m-d") . ".log";
  19. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  20. if (empty($Data['phone'])) {
  21. dump($Data['phone']);
  22. exit;
  23. }
  24. if (!empty($Data['IMEI'])) {
  25. $dataid = $Data['IMEI'];
  26. } else if (!empty($Data['IEMI'])) {
  27. $dataid = $Data['IEMI'];
  28. } else {
  29. exit;
  30. }
  31. $time1 = $Data['time'];
  32. $insert_id = $Data['insert_id'];
  33. $bz = $Data['bz'];
  34. //3小时以内相同设备报警未处理则不推送
  35. $time = $time1;
  36. $unique_number = $dataid;
  37. $redis = new \Redis();
  38. $result = $redis->connect('47.98.201.73', 6379);
  39. $pd = 1;
  40. if ($result == 1) {
  41. $res = $redis->get("$unique_number");
  42. if ($res == 1) {
  43. // echo "1----";
  44. $pd = 1;
  45. } else if (!empty($res)) {
  46. // echo "2----".floor((strtotime($Data['time'])-strtotime($res))%86400/3600);
  47. if (floor((strtotime($Data['time']) - strtotime($res)) / 3600) > 3) {
  48. // echo "2.1----";
  49. $pd = 1;
  50. } else {
  51. echo "2.2----";
  52. $pd = 0;
  53. }
  54. } else {
  55. // echo "3----";
  56. $pd = 1;
  57. }
  58. $res1 = $redis->get("$unique_number");
  59. var_dump($res);
  60. $redis->set("$unique_number", "$time");
  61. $redis->close();
  62. }
  63. switch ($Data['evt']) {
  64. case 'y01':
  65. $status = '报警';
  66. $where = " AND data2 like '%6%'";
  67. break;
  68. case 'y02':
  69. $status = '报警静音';
  70. $where = " AND data2 like '%6%'";
  71. break;
  72. case 'y03':
  73. $status = '保留';
  74. $where = " AND data2 like '%6%'";
  75. break;
  76. case 'y04':
  77. $status = '低压';
  78. $where = " AND data2 like '%6%'";
  79. break;
  80. case 'y05':
  81. $status = '故障';
  82. $where = " AND data2 like '%6%'";
  83. break;
  84. case 'y06':
  85. $status = '保留';
  86. $where = " AND data2 like '%6%'";
  87. break;
  88. case 'y07':
  89. $status = '火灾报警';
  90. $where = " AND data2 like '%6%'";
  91. break;
  92. case 'y08':
  93. $status = '温度报警';
  94. $where = " AND data2 like '%6%'";
  95. break;
  96. case 'y09':
  97. $status = '烟感电量低';
  98. $where = " AND data2 like '%6%'";
  99. break;
  100. case 'y10':
  101. $status = '防拆报警';
  102. $where = " AND data2 like '%6%'";
  103. break;
  104. case 'y11':
  105. $status = '发射电路故障';
  106. $where = " AND data2 like '%6%'";
  107. break;
  108. case 'y12':
  109. $status = '设备自检';
  110. $where = " AND data2 like '%6%'";
  111. break;
  112. case 'ds02':
  113. $status = '门窗关闭';
  114. // $where=" AND data2 like '%6%'";
  115. break;
  116. case 'ds01':
  117. $status = '门窗开启';
  118. // $where=" AND data2 like '%6%'";
  119. break;
  120. case 'ds03':
  121. $status = '电池电量低';
  122. // $where=" AND data2 like '%6%'";
  123. break;
  124. case 'gs01':
  125. $status = '可燃气体告警';
  126. // $where=" AND data2 like '%6%'";
  127. break;
  128. case 'gs02':
  129. $status = '电池电量低';
  130. // $where=" AND data2 like '%6%'";
  131. break;
  132. case 'gs03':
  133. $status = '设备防拆';
  134. // $where=" AND data2 like '%6%'";
  135. break;
  136. default:
  137. $status = '其他' . $Data['evt'];
  138. $where = " AND data2 like '%6%'";
  139. break;
  140. }
  141. $company = M()->query("select 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 ='" . $dataid . "'");
  142. $union_sql = M()->query("select phone from sp_owner_phone WHERE owner_code='" . $company[0]['company'] . "' " . $where . " and statusbb=1 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 . " and statusbb=1 ");
  143. // print_r("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 . "");
  144. if (count($union_sql) == 0) {
  145. exit;
  146. }
  147. $openids = $this->array_column1($union_sql, "phone");
  148. if (empty($openids)) {
  149. echo 'open is null';
  150. exit;
  151. }
  152. $status11 = M()->query("SELECT statustime FROM sp_devices_status where deviceid='" . $dataid . "'");
  153. $op = M()->query("SELECT openid FROM sp_wx_customuser WHERE type='wx' and idphone in($openids)");
  154. $access_token = GetAccess_Token1();
  155. // print_r($access_token);
  156. $address = '警报地址:' . $company[0]['owner_address'] . $company[0]['unitinfo'];
  157. $deviceid = $dataid;
  158. $type = $status;
  159. $time = $time1;
  160. // $remark='设备名称:'.$company[0]['owner_name'];
  161. if (!empty($bz)) {
  162. $remark = $bz;
  163. } else {
  164. $remark = '设备名称:' . $company[0]['owner_name'];
  165. }
  166. if ($Data['evt'] == 'ds01' || $Data['evt'] == 'ds02' || $Data['evt'] == 'ds03') {
  167. $ljurl = "https://qhome.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/130/id/" . $insert_id;
  168. } else if ($Data['evt'] == 'gs01' || $Data['evt'] == 'gs02' || $Data['evt'] == 'gs03') {
  169. $ljurl = "https://qhome.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/131/id/" . $insert_id;
  170. } else {
  171. $ljurl = "https://qhome.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/1/id/" . $insert_id;
  172. }
  173. // $ljurl = "https://iot.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/1/id/".$insert_id;
  174. if ($company[0]['dwtype'] != 129) {
  175. if ($pd == 1) {
  176. foreach ($op as $o) {
  177. if (!empty($o['openid'])) {
  178. $a = $this->SendDeviceAlarm($access_token, $o['openid'], $address, $deviceid, $type, $time, $remark, $ljurl, $url = '');
  179. $log = "[时间" . date("Y-m-d H:i:s") . "]返回数据:" . json_encode($a) . "\r\n";
  180. $filename_log = "/var/www/html/jdxf/log/yg_fh_log" . date("Y-m-d") . ".log";
  181. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  182. print_r($a);
  183. }
  184. }
  185. }
  186. }
  187. }
  188. /**
  189. * "evt" => "09",
  190. * "IMEI" => 设备编号,
  191. * "DateTime" => 时间,
  192. * "Interval" => 间隔时间,
  193. * "Status" => 状态,
  194. * "Battery" => 电量,
  195. * "Signal" => 信号,
  196. * "Unit" => 单位,
  197. * "Pressure" => 水压值,
  198. * "phone" => 电话,
  199. * "insert_id" => 插入表id
  200. * @return [type] [description]
  201. */
  202. public function message_water()
  203. {
  204. $Data = I('post.');
  205. $log = "[时间" . date("Y-m-d H:i:s") . "]报警数据:" . json_encode($Data) . "\r\n";
  206. $filename_log = "/var/www/html/jdxf/log/sj_log" . date("Y-m-d") . ".log";
  207. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  208. if (empty($Data['phone'])) {
  209. dump($Data['phone']);
  210. exit;
  211. }
  212. if (!empty($Data['IMEI'])) {
  213. $dataid = $Data['IMEI'];
  214. } else if (!empty($Data['IEMI'])) {
  215. $dataid = $Data['IEMI'];
  216. } else {
  217. exit;
  218. }
  219. $insert_id = $Data['insert_id'];
  220. $time = $Data['time'];
  221. $bz = $Data['bz'];
  222. //3小时以内相同设备报警未处理则不推送
  223. $unique_number = $dataid;
  224. $redis = new \Redis();
  225. $result = $redis->connect('47.98.201.73', 6379);
  226. $pd = 1;
  227. if ($result == 1) {
  228. $res = $redis->get("$unique_number");
  229. if ($res == 1) {
  230. // echo "1----";
  231. $pd = 1;
  232. } else if (!empty($res)) {
  233. // echo "2----".floor((strtotime($Data['time'])-strtotime($res))%86400/3600);
  234. if (floor((strtotime($Data['time']) - strtotime($res)) / 3600) > 3) {
  235. // echo "2.1----";
  236. $pd = 1;
  237. } else {
  238. echo "2.2----";
  239. $pd = 0;
  240. }
  241. } else {
  242. // echo "3----";
  243. $pd = 1;
  244. }
  245. $res1 = $redis->get("$unique_number");
  246. var_dump($res);
  247. $redis->set("$unique_number", "$time");
  248. $redis->close();
  249. }
  250. $nb_evt = $Data['evt_c'];
  251. switch ($Data['evt']) {
  252. case 'WP1':
  253. $status = '低压';
  254. $where = " AND data2 like '%3%'";
  255. break;
  256. case 'WP2':
  257. $status = '高压';
  258. $where = " AND data2 like '%3%'";
  259. break;
  260. case 'WP3':
  261. $status = '故障';
  262. $where = " AND data2 like '%3%'";
  263. break;
  264. case 'WP4':
  265. $status = '离线';
  266. $where = " AND data2 like '%5%'";
  267. break;
  268. case 'LL1':
  269. $status = '低水位';
  270. $where = " AND data2 like '%3%'";
  271. break;
  272. case 'LL2':
  273. $status = '高水位';
  274. $where = " AND data2 like '%3%'";
  275. break;
  276. default:
  277. $status = '其他' . $Data['Status'];
  278. $where = " AND data2 like '%3%'";
  279. break;
  280. }
  281. print_r($nb_evt);
  282. if (!empty($nb_evt)) {
  283. $status = $nb_evt;
  284. $where = " AND data2 like '%3%'";
  285. }
  286. print_r($status);
  287. $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 . "'");
  288. $union_sql = M()->query("select phone from sp_owner_phone WHERE owner_code='" . $company[0]['company'] . "' " . $where . " and statusbb=1 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 . " and statusbb=1 ");
  289. // print_r("select phone from sp_owner_phone WHERE owner_code='" . $company[0]['company'] . "' " . $where . " and statusbb=1 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 . " and statusbb=1 ");
  290. if (count($union_sql) == 0) {
  291. exit;
  292. }
  293. $openids = $this->array_column1($union_sql, "phone");
  294. // print_r($openids);
  295. if (empty($openids)) {
  296. echo 'open is null';
  297. exit;
  298. }
  299. $status11 = M()->query("SELECT statustime FROM sp_devices_status where deviceid='" . $dataid . "'");
  300. $op = M()->query("SELECT openid FROM sp_wx_customuser WHERE type='wx' and idphone in($openids)");
  301. // print_r("SELECT openid FROM sp_wx_customuser WHERE type='wx' and idphone in($openids)");
  302. $access_token = GetAccess_Token1();
  303. // print_r("测试计划access_token=" . $access_token);
  304. $access_token1 = S('accesToken');
  305. // print_r($access_token1);
  306. $address = '警报地址:' . $company[0]['owner_address'] . $company[0]['unitinfo'];
  307. $deviceid = $dataid;
  308. $type = $status;
  309. if (empty($time)) {
  310. $time = $status11[0]['statustime'];
  311. }
  312. // $remark='设备名称:'.$company[0]['owner_name'];
  313. $ljcompany = $company[0]['company'];
  314. if (!empty($bz)) {
  315. $remark = $bz;
  316. } else {
  317. $remark = '设备名称:' . $company[0]['owner_name'];
  318. }
  319. $ljurl = "https://qhome.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/2/id/" . $insert_id;
  320. //判断是否推送
  321. if ($pd == 1) {
  322. foreach ($op as $o) {
  323. if (!empty($o['openid'])) {
  324. //token,微信id,地址,设备号,类型,时间,设备名称(或者其他内容)
  325. //{{first.DATA}}$address
  326. //设备号:{{keyword1.DATA}}$deviceid
  327. //报警类型:{{keyword2.DATA}}$type
  328. //时间:{{keyword3.DATA}}$time
  329. //{{remark.DATA}}$remark
  330. $arr = $this->SendDeviceAlarm($access_token, $o['openid'], $address, $deviceid, $type, $time, $remark, $ljurl, $url = '');
  331. $log = "[时间" . date("Y-m-d H:i:s") . "]返回数据:" . json_encode($arr) . "\r\n";
  332. $filename_log = "/var/www/html/jdxf/log/sj_fh_log" . date("Y-m-d") . ".log";
  333. file_put_contents($filename_log, $log, FILE_APPEND | LOCK_EX);
  334. print_r($arr);
  335. }
  336. }
  337. }
  338. }
  339. public function message_electrical()
  340. {
  341. $Data = I('post.');
  342. if (empty($Data['phone'])) {
  343. dump($Data['phone']);
  344. exit;
  345. }
  346. $dataid = $Data['device_code'];
  347. $openids = $Data['phone'];
  348. $insert_id = $Data['insert_id'];
  349. $bz = $Data['bz'];
  350. //3小时以内相同设备报警未处理则不推送
  351. $time = $Data['time'];
  352. $unique_number = $dataid;
  353. $redis = new \Redis();
  354. $result = $redis->connect('47.98.201.73', 6379);
  355. $pd = 1;
  356. if ($result == 1) {
  357. $res = $redis->get("$unique_number");
  358. if ($res == 1) {
  359. // echo "1----";
  360. $pd = 1;
  361. } else if (!empty($res)) {
  362. // echo "2----".floor((strtotime($Data['time'])-strtotime($res))%86400/3600);
  363. if (floor((strtotime($Data['time']) - strtotime($res)) / 3600) > 3) {
  364. // echo "2.1----";
  365. $pd = 1;
  366. } else {
  367. echo "2.2----";
  368. $pd = 0;
  369. }
  370. } else {
  371. // echo "3----";
  372. $pd = 1;
  373. }
  374. $res1 = $redis->get("$unique_number");
  375. var_dump($res);
  376. $redis->set("$unique_number", "$time");
  377. $redis->close();
  378. }
  379. switch ($Data['evt']) {
  380. case 'EF1':
  381. $status = '欠压报警';
  382. $where = " AND data2 like '%7%'";
  383. break;
  384. case 'EF2':
  385. $status = '过压报警';
  386. $where = " AND data2 like '%7%'";
  387. break;
  388. case 'EF3':
  389. $status = '过流报警';
  390. $where = " AND data2 like '%7%'";
  391. break;
  392. case 'EF4':
  393. $status = '漏电报警';
  394. $where = " AND data2 like '%7%'";
  395. break;
  396. case 'EF5':
  397. $status = '回路1温度超限报警';
  398. $where = " AND data2 like '%7%'";
  399. break;
  400. case 'EF6':
  401. $status = '回路2温度超限报警';
  402. $where = " AND data2 like '%7%'";
  403. break;
  404. case 'EF7':
  405. $status = '回路3温度超限报警';
  406. $where = " AND data2 like '%7%'";
  407. break;
  408. // case 'EF8':
  409. // $status='温度4超高';
  410. // $where=" AND data2 like '%7%'";
  411. // break;
  412. case 'EF9':
  413. $status = '离线';
  414. $where = " AND data2 like '%5%'";
  415. break;
  416. default:
  417. $status = '其他' . $Data['evt'];
  418. $where = " AND data2 like '%3%'";
  419. break;
  420. }
  421. $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 . "'");
  422. // if ($company[0]['company']==10215){
  423. // echo '该单位下电器火灾告警屏蔽';
  424. // exit();
  425. // }
  426. $union_sql = M()->query("select phone from sp_owner_phone WHERE owner_code='" . $company[0]['company'] . "' " . $where . " and statusbb=1 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 . " and statusbb=1 ");
  427. if (count($union_sql) == 0) {
  428. exit;
  429. }
  430. $openids = $this->array_column1($union_sql, "phone");
  431. if (empty($openids)) {
  432. echo 'open is null';
  433. exit;
  434. }
  435. $status11 = M()->query("SELECT statustime FROM sp_devices_status where deviceid='" . $dataid . "'");
  436. $op = M()->query("SELECT openid FROM sp_wx_customuser WHERE type='wx' and idphone in($openids)");
  437. $access_token = GetAccess_Token1();
  438. $address = '警报地址:' . $company[0]['owner_address'] . $company[0]['unitinfo'];
  439. $deviceid = $dataid;
  440. $type = $status;
  441. $time = date('Y-m-d H:i:s');
  442. if (!empty($bz)) {
  443. $remark = $bz;
  444. } else {
  445. $remark = '设备名称:' . $company[0]['owner_name'];
  446. }
  447. $ljurl = "https://qhome.usky.cn/jdxf/wxapp2.php/Home/Fireinfo/index/type/7/id/" . $insert_id;
  448. if ($pd == 1) {
  449. foreach ($op as $o) {
  450. if (!empty($o['openid'])) {
  451. $this->SendDeviceAlarm($access_token, $o['openid'], $address, $deviceid, $type, $time, $remark, $ljurl, $url = '');
  452. }
  453. }
  454. }
  455. }
  456. }