IndexController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Model\Communite;
  4. use App\Model\DeviceInfo;
  5. use App\Server\DeviceServer;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Blade;
  8. use QL\QueryList;
  9. class IndexController extends Controller
  10. {
  11. public function testOpreation()
  12. {
  13. $id = request('id');
  14. $device = DeviceInfo::where(['id'=>$id])->first();
  15. $rule = json_decode($device->lock_rule);
  16. foreach ($rule as $key=>$box){
  17. $device_box[] = $key;
  18. }
  19. return view('test_opreation',['box'=>$device_box,'device'=>$device]);
  20. }
  21. function object_array($array) {
  22. if(is_object($array)) {
  23. $array = (array)$array;
  24. }
  25. if(is_array($array)) {
  26. foreach($array as $key=>$value) {
  27. $array[$key] = object_array($value);
  28. }
  29. }
  30. return $array;
  31. }
  32. //下发协议
  33. public function send_protocol()
  34. {
  35. $type = request('type');
  36. $id = request('id');
  37. $box_name = request('box_name');
  38. $device = DeviceInfo::where('id',$id)->first();
  39. if(empty($type) || empty($id)){
  40. return json_encode(['code'=>601,'msg'=>'缺少必要参数']);
  41. }
  42. if(empty($device)){
  43. return json_encode(['code'=>602,'msg'=>'设备不存在']);
  44. }
  45. $lock_rule = json_decode($device->lock_rule);
  46. switch ($type){
  47. case 1;
  48. $rule = ['cmd'=>'start_test'];
  49. break;
  50. case 2;
  51. $rule = ['cmd'=>'stop_test'];
  52. break;
  53. case 3;
  54. $open_time = date('Y-m-d H:i:s',(time() + 180));
  55. $close_time = date('Y-m-d H:i:s',(time() + 240));
  56. $start_time = date('Y-m-d H:i:s',(time() - 60));
  57. foreach ($lock_rule as $box_name){
  58. sleep(22);
  59. $rule = [$box_name=>['type'=>1,'start_time'=>$start_time,'open_time'=>$open_time,'close_time'=>$close_time,'value'=>'','query'=>3600]];
  60. $res = (new DeviceServer())->sendMsg($device->device_name ,$rule);
  61. }
  62. break;
  63. case 4;
  64. $open_time = date('Y-m-d H:i:s',(time() + 180));
  65. $close_time = date('Y-m-d H:i:s',(time() + 240));
  66. $start_time = date('Y-m-d H:i:s',(time() - 60));
  67. $rule = [$box_name=>['type'=>1,'start_time'=>$start_time,'open_time'=>$open_time,'close_time'=>$close_time,'value'=>'','query'=>3600]];
  68. break;
  69. }
  70. if(type != 3){
  71. $res = (new DeviceServer())->sendMsg($device->device_name,$rule);
  72. }
  73. if($res['Success'] == true){
  74. return json_encode(['code'=>200,'msg'=>'下发命令成功']);
  75. } else {
  76. return json_encode(['code'=>400,'msg'=>'下发命令失败']);
  77. }
  78. }
  79. //获取设备信息
  80. public function get_boxname()
  81. {
  82. $id = request('id');
  83. $box_name = request('box_name');
  84. $device = DeviceInfo::where('id',$id)->first();
  85. $rule = json_decode($device->lock_rule);
  86. foreach ($rule as $key=>$box){
  87. $device_box['box'][] = ['name'=>$key];
  88. }
  89. $device_box['id'] = $id;
  90. $device_box['device_name'] = $device->device_name;
  91. return json_encode(['code'=>200,'msg'=>'ok','data'=>$device_box]);
  92. }
  93. }