HC 物联网系统对接协议

HC 物联网系统对接协议

说明

代码:https://gitee.com/java110/MicroCommunityThings

官网:http://www.homecommunity.cn/

开发前必读

协议规范设计

第三方调用开放接口时,需使用 https 协议、Json 数据格式、UTF8 编码

注:建议封装统一的 API 请求接口,便于进行 token 容错处理,以及相关日志打
印等

请求参数:默认使用 json 方式(access_token 必须传至http header 中)

通用响应报文格式:

   {
   "code":0,
   "msg":"返回码描述内容",
   "data": {}
   }

通用响应报文字段说明:

名称类型描述
codeInteger返回码
msgString对返回码的文本描述内容
dataObject返回数据(部分接口无返回数据)

通用错误码说明

状态描述
0成功
-1失败

授权认证-获取access_token

根据 appId+appSecret 换取 access_token。access_token 是平台全局接口的唯一凭证,调用其他接口均需传 access_token
参数到Http header 中 如 access_token 12312312。

请求方式:GET

请求地址: /extApi/auth/getAccessToken?appId=APPID&appSecret=APPSECRET

注:此处标注大写的单词 APPID 和 APPSECRET,为需要替换的变量,根据实际获取值更新。其它接口也采用相同的标注,不
再说明。

请求参数:

名称类型是否必填示例值描述
appIdString2fe1465ce30f4bc1b71978d42349c6APPID
appSecretString2fe1465ce30f4bc1b71978d42349c2APP 秘钥

响应参数:

名称类型示例值描述
access_tokenString2fe1465ce30f4bc1b71978d42349c6accessToken 访问凭据
expires_inInteger7200过期时间为 7200 秒,即 2 小时

响应示例:

    {
        "code":0,
        "msg":"成功",
        "data":{
            "access_token": "225262e8b548b77f76f018d218291647",
            "expires_in": 7200
            }
    }

参考代码:

    //@Java110Synchronized 为分布式全局锁 根据 实际替换为自己的全局锁代码
    @Java110Synchronized(value = "hc_get_token")
    public static String get(RestTemplate restTemplate,boolean refreshAccessToken) {
        //先从缓存中获取是否存在access_token
        String token = CommonCache.getValue(IotConstant.HC_TOKEN);
        if (!StringUtil.isEmpty(token) && !refreshAccessToken) {
            return token;
        }
        HttpHeaders headers = new HttpHeaders();
        HttpEntity httpEntity = new HttpEntity(headers);
        String url = IotConstant.getUrl(IotConstant.GET_TOKEN_URL.replace("APP_ID", IotConstant.getAppId()).replace("APP_SECRET", IotConstant.getAppSecret()));
        ResponseEntity<String> tokenRes = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);

        if (tokenRes.getStatusCode() != HttpStatus.OK) {
            throw new IllegalArgumentException("获取token失败" + tokenRes.getBody());
        }
        JSONObject tokenObj = JSONObject.parseObject(tokenRes.getBody());

        if (!tokenObj.containsKey("code") || ResultVo.CODE_OK != tokenObj.getInteger("code")) {
            throw new IllegalArgumentException("获取token失败" + tokenRes.getBody());
        }

        token = tokenObj.getJSONObject("data").getString("access_token");
        int expiresIn = tokenObj.getJSONObject("data").getInteger("expires_in");

        CommonCache.setValue(IotConstant.HC_TOKEN, token, expiresIn - 200);

        return token;
    }

1.小区资源操作

1.1 新增小区

请求方式: POST

请求地址:/extApi/community/addCommunity

请求参数:

名称类型是否必填示例值描述
nameStringHC小区小区名称
addressString青海省西宁市小区地址
cityCodeString510104地区码
extCommunityIdString702020042194860039小区外部编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "name": "HC小区",
    "address": "青海省西宁市",
    "cityCode": "510104",
    "extCommunityId": "702020042194860039",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

1.2 修改小区

请求方式: POST

请求地址:/extApi/community/updateCommunity

请求参数:

名称类型是否必填示例值描述
nameStringHC小区小区名称
addressString青海省西宁市小区地址
cityCodeString510104地区码
extCommunityIdString702020042194860039小区外部编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "name": "HC小区",
    "address": "青海省西宁市",
    "cityCode": "510104",
    "extCommunityId": "702020042194860039",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

1.3 删除小区

请求方式: POST

请求地址:/extApi/community/deleteCommunity

请求参数:

名称类型是否必填示例值描述
extCommunityIdString702020042194860039小区外部编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "extCommunityId": "702020042194860039",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

2.设备资源操作

2.1 新增设备

请求方式: POST

请求地址:/extApi/machine/addMachine

请求参数:

名称类型是否必填示例值描述
machineCodeString101010设备编码
machineVersionStringv1.0设备版本
machineNameStringHC门禁设备名称
machineTypeCdString9999设备类型 9999 门禁9996 道闸9997 考勤机
machineIpString192.168.1.1设备IP
machineMacString11:1:11:1设备mac
extMachineIdString702020042194860037外部设备编码
extCommunityIdString702020042194860039外部小区编码
hmIdString1设备协议 HC物联网系统提供
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "machineCode": "101010",
    "machineName": "HC门禁",
    "machineTypeCd": "9999",
    "extMachineId": "702020042194860037",
    "extCommunityId": "702020042194860039",
    "hmId": "702020042194860039",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

2.2 修改设备

请求方式: POST

请求地址:/extApi/machine/updateMachine

请求参数:

名称类型是否必填示例值描述
machineCodeString101010设备编码
machineVersionStringv1.0设备版本
machineNameStringHC门禁设备名称
machineTypeCdString9999设备类型 门禁9999
machineIpString192.168.1.1设备IP
machineMacString11:1:11:1设备mac
extMachineIdString702020042194860037外部设备编码
extCommunityIdString702020042194860039外部小区编码
hmIdString1设备协议 HC物联网系统提供
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "machineCode": "101010",
    "machineName": "HC门禁",
    "machineTypeCd": "9999",
    "extMachineId": "702020042194860037",
    "extCommunityId": "702020042194860039",
    "hmId": "702020042194860039",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

2.3 删除设备

请求方式: POST

请求地址:/extApi/machine/deleteMachine

请求参数:

名称类型是否必填示例值描述
extMachineIdString702020042194860037外部设备编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "extMachineId": "702020042194860037",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

2.4 远程开门

请求方式: POST

请求地址:/extApi/machine/openDoor

请求参数:

名称类型是否必填示例值描述
extMachineIdString702020042194860037外部设备编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "machineCode": "101010",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

2.5 重启设备

请求方式: POST

请求地址:/extApi/machine/restartMachine

请求参数:

名称类型是否必填示例值描述
extMachineIdString702020042194860037外部设备编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "machineCode": "101010",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

3.用户资源操作

3.1 添加用户

请求方式: POST

请求地址:/extApi/user/addUser

请求参数:

名称类型是否必填示例值描述
userIdString702020042194860037用户ID
faceBase64Stringbase64base64图片
startTimeString2020-12-01 00:00:00开始时间
endTimeString2020-12-31 00:00:00结束时间
nameString张三名称
idNumberString63216111111111111身份证
personTypeString2002人员类型,1001 员工 2002 业主 3003 访客
machineCodeString101010设备编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "userId": "702020042194860037",
    "faceBase64": "base64",
    "startTime": "2020-12-01 00:00:00",
    "endTime": "2020-12-31 00:00:00",
    "name": "张三",
    "idNumber": "63216111111111111",
    "personType": "2002",
    "machineCode": "101010",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

3.2 编辑用户

请求方式: POST

请求地址:/extApi/user/updateUser

请求参数:

名称类型是否必填示例值描述
userIdString702020042194860037用户ID
faceBase64Stringbase64base64图片
startTimeString2020-12-01 00:00:00开始时间
endTimeString2020-12-31 00:00:00结束时间
nameString张三名称
idNumberString63216111111111111身份证
machineCodeString101010设备编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "userId": "702020042194860037",
    "faceBase64": "base64",
    "startTime": "2020-12-01 00:00:00",
    "endTime": "2020-12-31 00:00:00",
    "name": "张三",
    "idNumber": "63216111111111111",
    "machineCode": "101010",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

3.3 删除用户

请求方式: POST

请求地址:/extApi/user/deleteUser

请求参数:

名称类型是否必填示例值描述
userIdString702020042194860037用户ID
machineCodeString101010设备编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "userId": "702020042194860037",
    "machineCode": "101010",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

3.4 清空用户

请求方式: POST

请求地址:/extApi/user/clearUser

请求参数:

名称类型是否必填示例值描述
machineCodeString101010设备编码
taskIdString102020042194860045任务ID,第三方生成唯一值

请求示例:

{
    "machineCode": "101010",
    "taskId": "102020042194860045"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":{
       "taskId": "102020042194860045"
    }
}

4. 开门记录资源

4.1 开门上报

说明:HC物联网系统将开门记录上报第三方平台,需要物联网平台配置

请求方式: POST

请求地址:第三方平台提供

请求参数:

名称类型是否必填示例值描述
userIdString702020042194860037用户ID
userNameString张三用户名称
machineCodeString101010设备编码
openTypeCdString1000开门方式 1000 人脸开门 2000 钥匙开门
similarString100开门相似度
photoStringbase64,xxx抓拍照片
dateTimeString2020-12-27 00:00:00开门时间
extCommunityIdString702020042194860039小区ID
recordTypeCdString8888记录类型,8888 开门记录 6666 访客留影

请求示例:

{
    "userId": "702020042194860037",
    "userName": "张三",
    "machineCode": "101010",
    "openTypeCd": "1000",
    "similar": "100",
    "photo": "base64,xxx",
    "dateTime": "2020-12-27 00:00:00",
    "extCommunityId": "702020042194860039",
    "recordTypeCd": "8888"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":""
}

4.2 指令上报执行结果

说明:当和物联网系统异步交互时 或者物联网系统采用mqtt 协议时,执行结果 需要异步方式上报,需要物联网系统配置地址

请求方式: POST

请求地址:第三方平台提供

请求参数:

名称类型是否必填示例值描述
taskIdString702020042194860037任务ID,第三方系统调用结果时传递
codeInteger0指令执行状态码 0 成功 其他失败
msgString成功指令执行说明

请求示例:

{
    "taskId": "702020042194860037",
    "code": 0,
    "msg": "成功"
}

返回示例:

{
    "code":0,
    "msg":"成功",
    "data":""
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值