You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.7 KiB
101 lines
2.7 KiB
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Services\CameraDeviceService;
|
|
use GuzzleHttp\Client;
|
|
use Illuminate\Console\Command;
|
|
|
|
/**
|
|
* 检测设备状态信息
|
|
*/
|
|
class SetCameraData extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
* @var string
|
|
*/
|
|
protected $signature = 'run:set-camera-data';
|
|
|
|
/**
|
|
* The console command description.
|
|
* @var string
|
|
*/
|
|
protected $description = 'Command description';
|
|
|
|
protected string $sysUrl;
|
|
protected string $sysPost;
|
|
protected string $sysHttp;
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->sysUrl = env('SYS_URL', '192.168.66.16');
|
|
$this->sysPost = env('SYS_POST', '');
|
|
$this->sysHttp = env('SYS_HTTP', 'http');
|
|
}
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*/
|
|
public function handle()
|
|
{
|
|
// 获取所有设备信息
|
|
$ip = '192.168.66.64';
|
|
$service = new CameraDeviceService($ip);
|
|
$url = $this->sysHttp . '://' . $this->sysUrl;
|
|
$Host = $this->sysUrl;
|
|
if ($this->sysPost) {
|
|
$url .= ':' . $this->sysPost;
|
|
$Host .= ':' . $this->sysPost;
|
|
}
|
|
|
|
$curl = curl_init();
|
|
|
|
curl_setopt_array($curl, [
|
|
CURLOPT_PORT => $this->sysPost,
|
|
CURLOPT_URL => $url . "/api/device/camera/getBody",
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_ENCODING => "",
|
|
CURLOPT_MAXREDIRS => 10,
|
|
CURLOPT_TIMEOUT => 30,
|
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
|
CURLOPT_CUSTOMREQUEST => "GET",
|
|
CURLOPT_POSTFIELDS => "",
|
|
CURLOPT_HTTPHEADER => [
|
|
"Accept: */*",
|
|
"Accept-Encoding: gzip, deflate, br",
|
|
"Cache-Control: no-cache",
|
|
"Connection: keep-alive",
|
|
"Host: {$Host}",
|
|
"User-Agent: PostmanRuntime-ApipostRuntime/1.1.0"
|
|
],
|
|
]);
|
|
|
|
$response = curl_exec($curl);
|
|
$err = curl_error($curl);
|
|
|
|
curl_close($curl);
|
|
|
|
if ($err) {
|
|
echo "cURL Error #:" . $err;
|
|
exit;
|
|
}
|
|
if ($response) {
|
|
$resData = json_decode($response, true);
|
|
if (isset($resData['error']) && $resData['error'] < 1) {
|
|
$body = $resData['body'];
|
|
} else {
|
|
echo $resData['message'] ?? '';
|
|
exit;
|
|
}
|
|
// 通过设备信息获取设备状态
|
|
|
|
$service->setColor($body);
|
|
}
|
|
|
|
echo 'SUCCESS';
|
|
exit;
|
|
// 返回告诉设备状态情况
|
|
}
|
|
}
|
|
|