xixuan_repeat(); //新接入摄像头接口测试 //$this->new_joggle(); //乐橙token // $this->token(); //乐橙直播列表 // $this->list(); //根据序列号获取直播地址和直播状态 // $this->address(); //区域下摄像头接口测试 // $this->camera_list(); //区域列表接口测试 // $this->mine_list(); } //区域列表接口测试 public function mine_list(){ $result = MineServices::getHaiKangArea(968, CameraEnum::REQUEST_TYPE_LOCAL); dd($result); } //区域下摄像头接口测试 public function camera_list(){ $result = CameraServices::getHaiKangCamera(968, '64018155582160000014', CameraEnum::CAMERA_TYPE_ALL); dd($result); //同步区域下摄像头 if ($result['status']) { $trans_arr = []; $index_code_arr = []; foreach ($result['data'] as $k => $v) { $ip = ''; $port = ''; $com_number = ''; //当前摄像头index_code数组 $index_code_arr[$k] = $v['camera_id']; $params = [ 'mine_id' => 4840, 'camera_name' => $this->transformCameraName($v['camera_name']), 'index_code' => $v['camera_id'], 'revert_id' => CameraEnum::CAMERA_DEFAULT_REVERT_ID, 'camera_source' => CameraEnum::CAMERA_SOURCE_2, 'ip' => $ip, 'port' => $port, 'com_number' => $com_number, ]; CameraList::updateOrCreate(['index_code' => $v['camera_id']], $params); } //删除不存在的摄像头 CameraList::where('mine_id', $val->id)->where('index_code', '!=', NULL)->whereNotIn('index_code', $index_code_arr)->delete(); } } //转义摄像头名称中的特殊字符 public function transformCameraName($camera_name) { $camera_name = trim($camera_name); $camera_name = str_replace('#', '号', $camera_name); $camera_name = str_replace(' ', '-', $camera_name); $camera_name = str_replace('+', '', $camera_name); return $camera_name; } //直播列表 public function list(){ // At_0000bd7f06fa796842778d92b50d4d2d $url = 'https://openapi.lechange.cn/openapi/liveList'; //当前的UTC时间戳 $time= strtotime(date('Y-m-d H:i:s',time())); //随机字符串 $nonce = md5(time()); //授权信息之appid $appId='lc753b03152e3b4f1e'; //授权信息之appSecret $appSecret='cc9b1224acd24571a5daf18e8c7f94'; //拼接计算“签名原始串” $signStr="time:$time,nonce:$nonce,appSecret:$appSecret"; //计算摘要 sign $sign=md5($signStr); //业务参数 $params = [ 'token'=>'At_0000bd7f06fa796842778d92b50d4d2d', 'queryRange'=>"1-99" ]; //组装调用接口的body体内容 $data = json_encode([ 'system'=> [ 'ver'=>'1.0', 'sign'=>$sign, 'appId'=>$appId, 'time'=>$time, 'nonce'=>$nonce ], 'params'=>empty($params)? new \stdClass():$params, 'id'=>'88' ]); //http调用 $ret = $this->curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //调用后返回输出 // dd(nl2br($utf8)); $aa = json_decode(nl2br($utf8), true); dd($aa['result']['data']); } //根据序列号获取直播地址和直播状态 public function address(){ // At_0000bd7f06fa796842778d92b50d4d2d $url = 'https://openapi.lechange.cn/openapi/getLiveStreamInfo'; //当前的UTC时间戳 $time= strtotime(date('Y-m-d H:i:s',time())); //随机字符串 $nonce = md5(time()); //授权信息之appid $appId='lc753b03152e3b4f1e'; //授权信息之appSecret $appSecret='cc9b1224acd24571a5daf18e8c7f94'; //拼接计算“签名原始串” $signStr="time:$time,nonce:$nonce,appSecret:$appSecret"; //计算摘要 sign $sign=md5($signStr); //业务参数 $params = [ 'token'=>'At_0000bd7f06fa796842778d92b50d4d2d', 'deviceId'=>'6J0C716PAZ6CF87', 'channelId'=>22 ]; //组装调用接口的body体内容 $data = json_encode([ 'system'=> [ 'ver'=>'1.0', 'sign'=>$sign, 'appId'=>$appId, 'time'=>$time, 'nonce'=>$nonce ], 'params'=>empty($params)? new \stdClass():$params, 'id'=>'88' ]); //http调用 $ret = $this->curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //调用后返回输出 dd(nl2br($utf8 )); } public function token(){ // At_0000bd7f06fa796842778d92b50d4d2d $url = 'https://openapi.lechange.cn:443/openapi/accessToken'; //当前的UTC时间戳 $time= strtotime(date('Y-m-d H:i:s',time())); //随机字符串 $nonce = md5(time()); //授权信息之appid $appId='lc753b03152e3b4f1e'; //授权信息之appSecret $appSecret='cc9b1224acd24571a5daf18e8c7f94'; //拼接计算“签名原始串” $signStr="time:$time,nonce:$nonce,appSecret:$appSecret"; //计算摘要 sign $sign=md5($signStr); //业务参数 $params = []; //组装调用接口的body体内容 $data = json_encode([ 'system'=> [ 'ver'=>'1.0', 'sign'=>$sign, 'appId'=>$appId, 'time'=>$time, 'nonce'=>$nonce ], 'params'=>empty($params)? new \stdClass():$params, 'id'=>'88' ]); //http调用 $ret = $this->curl_post($data, $url); $utf8 = iconv('utf-8', 'UTF-8', $ret); //调用后返回输出 echo 'result:
'.nl2br($utf8 ).'
'; } function curl_post($data,$url) { $ch = curl_init(); $res= curl_setopt ($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec ($ch); curl_close($ch); if ($result == NULL) { return 0; } return $result; } //新接入摄像头接口测试 public function new_joggle(){ $mine_id_list = MineListExt::where('is_hak', 1)->pluck('mine_id')->all(); // dd($mine_id_list); $result = MineServices::getHaiKangArea(4569, CameraEnum::REQUEST_TYPE_LOCAL);//配合修改mineext和haikangcontroller里打印 dd($result); } //宁煤洗选重复摄像头 public function xixuan_repeat(){ $mine_all = DB::table('mine_list')->where('deleted_at',null)->get();//所有区域 //宁煤下各矿在离线数量 $mine_list = DB::table('mine_list')->where('parent_id',968)->where('deleted_at',null)->get(); $mine_use = [];//宁煤下每个矿所有区域 foreach($mine_all as $key=>$value){ if(count(explode('|',$value->degree)) > 1){ if(explode('|',$value->degree)[0] == 968 && explode('|',$value->degree)[1] == 2429){ $mine_use[] = $value->id; } } } $total = DB::table('camera_list') ->select('camera_list.camera_name','camera_list.camera_status','mine_list.title') ->leftJoin('mine_list','mine_list.id','=','camera_list.mine_id') ->whereIn('camera_list.mine_id',$mine_use) ->where('camera_list.deleted_at',null) ->where('mine_list.deleted_at',null) ->orderBy('mine_list.title') ->get(); // dd($total); $aa = []; foreach($total as $k=>$v){ $aa[] = $v->camera_name; } $unique_arr = array_unique ( $aa ); // dd($unique_arr); $repeat_arr = array_diff_assoc ( $aa, $unique_arr ); return $repeat_arr; } public function getDcsApiData() { $apiUrl = "http://7.250.4.3:4300/v1/common/GetPointRealDataByPageV3"; $client = new Client(); $r = request()->all(); if(isset($r['p'])) { $p = $r['p']; $k = $r['k']; } else { $p = $r; } $body = [ 'headers' => [ 'Authorization' => 'Bearer appkey_100100', 'Content-Type'=>'application/json; charset=utf-8', // 其他头部信息 ], 'json' =>[ 'PageNum'=>"-1", "PointIds"=>$p ] ]; // 发送 HTTP POST 请求 $response = $client->post($apiUrl, $body); // 获取 API 响应的 JSON 数据 $res = json_decode($response->getBody(), true); if($res['IsSuccessful'] == 0) { return $res; } $data = isset($res['Data'])? $res['Data']: null; $transformedData['data']=[]; for ($i = 0; $i < count($data); $i++) { $dic = $data[$i]; $trans['v'][] = $dic['V']; $trans['list'][$i] = [ 'id'=>$dic['ID'], 'nm'=>$dic['PointName'], 'v'=>$dic['V'], ]; $trans['kv'][$dic['ID']] = $dic['V']; } if (!empty($k) && isset($trans[$k])) { return $trans[$k]; } return $trans; } public function getDcsOpcData() { // $shell = "echo 'success' "; // $shellExec = shell_exec($shell); // // var_dump($shellExec); // if($shellExec){echo 'ok';} else {echo 'error'} $pids = [ "ns=12380;s=九八零变电所80Z004照明回路_Ia", "ns=12380;s=九八零变电所5105_IA", "ns=12380;s=九八零变电所5101_UB", # 添加其他节点地址... ]; $pyPath = "/home/python_proj/python_custom_script/zaoquan/dcs/"; $pyFName = "test1.py"; $pyKeyWord = "/usr/bin/python311"; $pidsJson = json_encode($pids); $command = "$pyKeyWord {$pyPath}{$pyFName}". ' ' . escapeshellarg("{$pidsJson}"); // $output = shell_exec($command); // return shell_exec($command); try { // 调用Python脚本 $output = shell_exec($command); // 解析Python脚本返回的JSON数据 $data = json_decode($output, true); // $data['a'] = 'aaa'; // 返回JSON格式的数据给前端 header('Content-Type: application/json'); echo json_encode($data); } catch (Exception $e) { // 返回错误消息给前端 header('Content-Type: application/json'); echo json_encode(array("error" => $e->getMessage())); } } }