停车场管理系统
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.
 
 

190 lines
6.1 KiB

<?php
namespace App\Services;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Http;
class HikParkingCameraService
{
public array $device;
public string $format = 'json';
protected string $MULTI_PARKING_SPACES_LAMP = '/ISAPI/Parking/parkingSpace/multiParkingSpacesLamp';
public function __construct($device)
{
$this->device = [
'protocol' => 'http',
'ip' => '192.168.66.64',
'port' => '',
'username' => 'admin',
'password' => 'Xingtong1124',
];
//$this->device = $device;
}
public function getLight()
{
$url = $this->getUri() . $this->MULTI_PARKING_SPACES_LAMP;
$query = [
'format' => $this->format,
'security' => 1,
'iv' => md5(rand('000000', '999999'))
];
$url .= '?' . http_build_query($query);
$response = Http::timeout(3)
->withoutVerifying()
->withDigestAuth($this->device['username'], $this->device['password'])
->get($url);
//dd($response->json(), $response->body(), $response->object(), $response);
try {
$response = $response->json();
if ($response->getStatusCode() == '200') {
}
} catch (\Exception $e) {
throw $e;
}
}
// 组合 设备ip地址
protected function getUri()
{
$protocol = $this->device['protocol'];
$ip = $this->device['ip'];
$port = $this->device['port'] ?? '';
$uri = $protocol . '://' . $ip;
if ($port) {
$uri .= ':' . $port;
}
return $uri;
}
public function getBody($color_occupy, $color_vacant, $is_flicker)
{
$is_flicker = (bool)$is_flicker;
$body = [
"lampType" => "internal",
"VehicleNumber" => [
"VehicleChannelNum" => 1,
"VehicleChannelList" => [
[
"LampSoure" => "internal", // unrelated
"VehicleNoExist" => [
"enabled" => true,
"flashEnabled" => $is_flicker,
"lampColor" => $color_vacant
],
"VehicleExist" => [
"enabled" => true,
"flashEnabled" => $is_flicker,
"lampColor" => $color_occupy
]
]
]
],
"replaceLampCtrl" => [
"enabled" => false,
"ipV4Address" => "0.0.0.0",
"portNo" => 80,
"username" => "admin",
"password" => "dddf4589f3430f7b7395bb9d35e05b27"
],
"lampStatusArr" => [
[
"name" => "内置灯",
"value" => "相机自控",
"\$\$hashKey" => "062"
],
[
"name" => "外置灯1",
"value" => "相机自控",
"\$\$hashKey" => "063"
],
[
"name" => "外置灯2",
"value" => "相机自控",
"\$\$hashKey" => "064"
],
[
"name" => "外置灯3",
"value" => "相机自控",
"\$\$hashKey" => "065"
]
]
];
return $body;
}
public function updatelight($body)
{
/*$body = [
"lampType" => "internal",
"VehicleNumber" => [
"VehicleChannelNum" => 1,
"VehicleChannelList" => [
[
"LampSoure" => "internal", // unrelated
"VehicleNoExist" => [
"enabled" => true,
"flashEnabled" => false,
"lampColor" => "close"
],
"VehicleExist" => [
"enabled" => true,
"flashEnabled" => false,
"lampColor" => "close"
]
]
]
],
"replaceLampCtrl" => [
"enabled" => false,
"ipV4Address" => "0.0.0.0",
"portNo" => 80,
"username" => "admin",
"password" => "dddf4589f3430f7b7395bb9d35e05b27"
],
"lampStatusArr" => [
[
"name" => "内置灯",
"value" => "相机自控",
"\$\$hashKey" => "062"
],
[
"name" => "外置灯1",
"value" => "相机自控",
"\$\$hashKey" => "063"
],
[
"name" => "外置灯2",
"value" => "相机自控",
"\$\$hashKey" => "064"
],
[
"name" => "外置灯3",
"value" => "相机自控",
"\$\$hashKey" => "065"
]
]
];*/
$url = $this->getUri() . $this->MULTI_PARKING_SPACES_LAMP;
$query = [
'format' => $this->format,
'security' => 1,
'iv' => md5(rand('000000', '999999'))
];
$url .= '?' . http_build_query($query);
$response = Http::timeout(3)
->withoutVerifying()
->withDigestAuth($this->device['username'], $this->device['password'])
->put($url, $body);
//dd($response->json(), $response->body(), $response->object(), $response);
}
}