Browse Source

智能门锁-设备实时上报数据接口

master
wanghongjun 2 years ago
parent
commit
a418bf872f
  1. 26
      application/api/controller/Smartlock.php
  2. 103
      application/common/SzxfjkSdk/SmartLocks.php
  3. 31
      application/common/YingShiSdk/YingShiSdk.php

26
application/api/controller/Smartlock.php

@ -2,6 +2,7 @@
namespace app\api\controller;
use app\common\SzxfjkSdk\SmartLocks;
use app\common\YingShiSdk\YingShiSdk;
use think\Request;
@ -63,4 +64,29 @@ class Smartlock extends Base
}
}
/**
* 智能门锁-设备实时上报数据
* @param Request $request
* @return false|string
*/
public function smartLocks(Request $request)
{
try {
$deviceInfo = YingShiSdk::DeviceInfo('','',true);
if (!is_array($deviceInfo)) throw new \Exception($deviceInfo);
$deviceStatus = YingShiSdk::DeviceStatus('','',true);
if (!is_array($deviceStatus)) throw new \Exception($deviceStatus);
$param = array_merge($deviceInfo,$deviceStatus);
$pushRes = SmartLocks::TimingDataPush($param);
if (!$pushRes['status']) throw new \Exception($pushRes['msg']);
return $this->jsonSuccess();
} catch (\Exception $exception) {
return $this->jsonError($exception->getMessage());
}
}
}

103
application/common/SzxfjkSdk/SmartLocks.php

@ -0,0 +1,103 @@
<?php
namespace app\common\SzxfjkSdk;
/**
* 智能门锁数据接口
*/
class SmartLocks
{
protected static $url = 'http://1.12.73.13:30014/admin-api';
protected static $v = 'v1';
protected static $token = 'eGluZmFuZ3pob3VfcHVzaHNldA==';
protected static function getUrl()
{
return self::$url . '/' . self::$v . '/';
}
/**
* 设备实时上报数据
* @param $param
* @return array
*/
public static function TimingDataPush($param)
{
$requestUrl = self::getUrl() . 'HumanBodyInductionDetector/TimingdataPush' . '?token=' . self::$token;
$data = [
'id' => $param['deviceSerial'],//设备唯一标识
'pk' => '',//产品型号
'did' => $param['deviceSerial'],//设备编号
'deviceType' => $param['deviceName'],//设备类型
'deviceModel' => $param['model'],//设备型号
'uid' => '',//关联编号(人员或方案)
'dtype' => '',//数据类型(实时上报、报警上报)
'site' => '',//安装地址
'longitude' => '',//经度(当设备无定位芯片时,则字段不显示)
'latitude' => '',//纬度(当设备无定位芯片时,则字段不显示)
'companyName' => '',//设备供应商名称
'timestamp' => date("Y-m-d H:i:s.v"),//数据上传时间
'data' => [
'onlineStatus' => $param['status'],//在线状态//0 为在线,1 为离线
'quantityElectricity' => $param['battryStatus'],//电量
'alarmReason' => '',//报警原因
'alarmType' => '',//报警类型
'eventName' => '',//事件名称
'eventType' => '',//事件类型(0:测试报警,1:正式报警)
'alarmTime' => '',//报警时间
],//数据内容
];
$result = self::curlPost($requestUrl, $data);
if ($result['success'] === true) {
return ['status' => 1,'msg' => '推送成功'];
}
return ['status' => 0,'msg' => '推送失败'];
}
/**
* post请求
* @param $url
* @param array $data
* @return bool|string
*/
protected static function curlPost($url, array $data)
{
$dataJson = json_encode($data);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "30014",
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $dataJson,
CURLOPT_HTTPHEADER => [
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
return $err;
} else {
return json_decode($response, true);
}
}
}

31
application/common/YingShiSdk/YingShiSdk.php

@ -52,28 +52,36 @@ class YingShiSdk
if ($jsonResponse['code'] != '200') return $jsonResponse['msg'];
self::$accessToken = $jsonResponse['data']['accessToken'];
return $jsonResponse['data']['accessToken'];
}
/**
* 获取设备状态信息
* @param $accessToken
* @param $deviceSerial
* @param bool $autoGet
* @return mixed|string
*/
public static function DeviceStatus($accessToken,$deviceSerial)
public static function DeviceStatus($accessToken,$deviceSerial,$autoGet = false)
{
$url = 'https://open.ys7.com/api/lapp/device/status/get';
$curlData = self::curlYingshiApi($url,[
$requestData = [
'accessToken' => $accessToken,
'deviceSerial' => $deviceSerial
]);
];
if ($autoGet) {
$requestData['accessToken'] = self::getAccessToken();
$requestData['deviceSerial'] = self::$deviceSerial;
}
$curlData = self::curlYingshiApi($url,$requestData);
$err = $curlData['err'];
$response = $curlData['response'];
if ($err) return "cURL Error #:" . $err;
if ($err) return $err;
$jsonResponse = json_decode($response,true);
@ -86,21 +94,26 @@ class YingShiSdk
* 获取单个设备信息
* @param $accessToken
* @param $deviceSerial
* @param bool $autoGet
* @return mixed|string
*/
public static function DeviceInfo($accessToken,$deviceSerial)
public static function DeviceInfo($accessToken,$deviceSerial,$autoGet = false)
{
$url = 'https://open.ys7.com/api/lapp/device/info';
$curlDataInfo = YingShiSdk::curlYingshiApi($url,[
$requestData = [
'accessToken' => $accessToken,
'deviceSerial' => $deviceSerial
]);
];
if ($autoGet) {
$requestData['accessToken'] = self::getAccessToken();
$requestData['deviceSerial'] = self::$deviceSerial;
}
$curlDataInfo = YingShiSdk::curlYingshiApi($url,$requestData);
$err = $curlDataInfo['err'];
if ($err) return "cURL Error #:" . $err;
if ($err) return $err;
$response = $curlDataInfo['response'];

Loading…
Cancel
Save