物联网后台管理
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.
 
 
 
 
 

103 lines
3.3 KiB

<?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'].'001',//设备唯一标识
'pk' => 'CS-HD50-NB',//产品型号
'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['code']) {
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);
}
}
}