123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- <?php
- namespace App\Http\Controllers;
- use App\Model\DeviceInfo;
- use App\Model\LockInfo;
- use App\Model\SystemConfig;
- use App\Server\DeviceServer;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Artisan;
- use Illuminate\Support\Facades\Blade;
- use Illuminate\Support\Facades\Cache;
- use QL\QueryList;
- class IndexController extends Controller
- {
- public function testOpreation(Request $request)
- {
- // Artisan::call('SDR: 1 1');
- // Artisan::call('SDR', [
- // 'id' => 1, 'type' => 1
- // ]);
- //echo strtotime('+60 days');dd('ok');
- $id = $request->get('id');
- $device = DeviceInfo::where(['device_name'=>$id])->first();
- if($device->type == 1){
- $img = SystemConfig::get('lock_config','box_img_four');
- } else {
- $img = SystemConfig::get('lock_config','box_img_five');
- }
- $type = $device->type;
- switch($type) {
- case DeviceInfo::BOXFOUR;
- $n = 4;
- break;
- case DeviceInfo::BOXFIVE;
- $n = 5;
- break;
- case DeviceInfo::BOXFOURRECYCLE;
- $n = 5;
- break;
- case DeviceInfo::BOXFIVERECYCLE;
- $n = 6;
- break;
- default;
- $n = 5;
- break;
- }
- for ($i = 1; $i<$n;$i++){
- $device_box[] = $i;
- }
- return view('test_opreation',['img'=>$img,'id'=>$id]);
- }
- function object_array($array) {
- if(is_object($array)) {
- $array = (array)$array;
- }
- if(is_array($array)) {
- foreach($array as $key=>$value) {
- $array[$key] = object_array($value);
- }
- }
- return $array;
- }
- //下发协议
- public function send_protocol()
- {
- $type = request('type');
- $id = request('id');
- $device = DeviceInfo::where('device_name',$id)->first();
- $cache_key = $id .'rule_type';
- $re_type = Cache::get($cache_key);
- $time1 = 240;//3分钟定时
- $opt = 180;
- $cpt = 240;
- if(empty($type) || empty($id)){
- return json_encode(['code'=>601,'msg'=>'缺少必要参数']);
- }
- if(empty($device)){
- return json_encode(['code'=>602,'msg'=>'设备不存在']);
- }
- // echo '缓存类型--'.$re_type.' 当前类型:--'.$type;
- if(empty($re_type) && in_array([4,5,6],$re_type)){
- if($type == 4) Cache::put($cache_key,$re_type,$time1);
- } else {
- if($type != $re_type) return json_encode(['code'=>603,'msg'=>'设备下发协议冲突']);
- }
- // return json_encode(['code'=>200,'msg'=>'不重复']);
- switch ($type){
- case 1:
- $rule = ['cmd'=>'start_test'];
- break;
- case 2:
- $rule = ["cmd"=>"stop_test"];
- sleep(6);
- break;
- case 3:
- $open_time = date('H:i',(time() + $opt));
- $close_time = date('H:i',(time() + $cpt));
- $start_time = date('Y-m-d H:i:s',(time() - 60));
- $type_arr = [1=>4,2=>5,3=>5,4=>6];
- for ($i = 1; $i<=$type_arr[$type]; $i++){
- $rule = ['box'.$i=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>'']],'query'=>3600];
- $res = (new DeviceServer())->sendMsg($device->device_name ,json_encode($rule));
- sleep(22);
- }
- // $lock_rule = json_decode($device->lock_rule);
- // foreach ($lock_rule as $box_name){
- // sleep(22);
- // $rule = [$box_name=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>'']],'query'=>3600];
- // $res = (new DeviceServer())->sendMsg($device->device_name ,$rule);
- // }
- break;
- case 4:
- $box_name = request('box_name');
- if(empty($box_name)){
- return json_encode(['code'=>601,'msg'=>'缺少必要参数']);
- }
- $open_time = date('H:i',(time() + $opt));
- $close_time = date('H:i',(time() + $cpt));
- $start_time = date('Y-m-d H:i',(time() - 60));
- $rule = ['box'.$box_name=>[['type'=>1,'start'=>$start_time,'open'=>$open_time,'close'=>$close_time,'value'=>''],],'query'=>3600];
- break;
- case 5:
- $rule = ["cmd"=>"start_update"];
- break;
- case 6:
- $rule = ["cmd"=>"reset"];
- break;
- }
- // $rule = ["cmd"=>"stop_test"];
- // dd(json_encode($rule));
- if($type != 3){
- $res = (new DeviceServer())->sendMsg($device->device_name,json_encode($rule));
- }
- if(!empty($res) && $res['Success'] == true){
- return json_encode(['code'=>200,'msg'=>'下发命令成功']);
- } else {
- return json_encode(['code'=>601,'msg'=>'下发命令失败']);
- }
- }
- //获取设备信息
- public function get_boxname()
- {
- $id = request('id');
- $device = DeviceInfo::where('device_name',$id)->first();
- if(empty($device)){
- return json_encode(['code'=>200,'msg'=>'ok','data'=>[]]);
- }
- $lock_config = SystemConfig::get('lock_config');
- $data['id'] = $device->id;
- $data['device_name'] = $device->device_name;
- $data['device_type'] = $device->device_type;
- $img_field_arr = [
- 1=>'box_img_four',
- 2=>'box_img_five',
- 3=>'box_img_refour',
- 4=>'box_img_refive',
- ];
- $data['device_image'] = $lock_config[$img_field_arr[$device->device_type]];
- return json_encode(['code'=>200,'msg'=>'ok','data'=>$data]);
- }
- //设备升级与重置命令
- public function updateDevice()
- {
- $device_name = request('id');
- $type = request('type'); //设备类型
- $phone = request('phone'); //电话
- $deviceService = (new DeviceServer());
- if(empty($type) || empty($phone)){
- return genApiData(601,'参数错误');
- }
- if(!preg_match("/^1[34578]\d{9}$/",$phone,$match)){
- return genApiData(601,'手机号码错误');
- }
- $data['device_type'] = $type;
- $data['phone'] = $phone;
- $device_info = DeviceInfo::where(['device_name'=>$device_name])->first();
- if($device_info->device_type == $type){
- return genApiData(602,'设备类型重复请重新选择');
- }
- $device_property = $deviceService->getProperty($device_info->iot_id);
- $last_version = SystemConfig::get('lock_config','soft_version');
- $res = DeviceInfo::where('device_name',$device_name)->update($data);
- if($res){
- if($device_property['data']['version'] == '' || $device_property['data']['version'] != $last_version){
- $rule = ["cmd"=>"start_update"];
- $res = $deviceService->sendMsg($device_name ,json_encode($rule));
- if($res['Success'] == 'success') {
- return genApiData(600,'设备更新新中');
- }
- } else {
- $res = DeviceInfo::where('device_name',$device_name)->update($data);
- }
- return genApiData(200,'更新成功');
- }
- return genApiData(601,'异常设备,请联系后台管理员',$res);
- // if(empty($device_info)){
- // return genApiData(601,'异常设备,请联系后台管理员','');
- // }
- //
- //
- // return genApiData(601,'更新失败','');
- //
- // if($type == 1){
- // $rule = ["cmd"=>"start_update"];
- // } else if ($type == 2){
- // $rule = ["cmd"=>"reset"];
- // } else {
- // $rule = ["cmd"=>"start_update"];
- // }
- // $res = $deviceService->sendMsg($device_name,json_encode($rule));
- // if($res['Success'] == 'success') {
- // return json_encode(['code'=>200,'msg'=>'发送命令成功','data'=>'']);
- // }
- // return json_encode(['code'=>601,'msg'=>'发送命令成功','data'=>'']);
- }
- }
- //use AlibabaCloud\Client\AlibabaCloud;
- //use AlibabaCloud\Client\Exception\ClientException;
- //use AlibabaCloud\Client\Exception\ServerException;
- //
- //// Download:https://github.com/aliyun/openapi-sdk-php
- //// Usage:https://github.com/aliyun/openapi-sdk-php/blob/master/README.md
- //
- //AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessSecret>')
- // ->regionId('cn-shanghai')
- // ->asDefaultClient();
- //
- //try {
- // $result = AlibabaCloud::rpc()
- // ->product('Iot')
- // // ->scheme('https') // https | http
- // ->version('2018-01-20')
- // ->action('GetThingModelTsl')
- // ->method('POST')
- // ->host('iot.cn-shanghai.aliyuncs.com')
- // ->options([
- // 'query' => [
- // 'RegionId' => "cn-shanghai",
- // 'ProductKey' => "a15yVIP0Onl",
- // 'ModelVersion' => "Software_Version",
- // ],
- // ])
- // ->request();
- // print_r($result->toArray());
- //} catch (ClientException $e) {
- // echo $e->getErrorMessage() . PHP_EOL;
- //} catch (ServerException $e) {
- // echo $e->getErrorMessage() . PHP_EOL;
- //}
|