协议
使用HTTP协议进行API调用需要遵循如下协议,以下接口调用信息需要联系平台技术支持提供:
- api_url:平台调用的接口地址
- app_id:请求调用的APP ID,仅用于设备端与云端通讯
- app_secret:该秘钥用于生成签名,请务必安全保存
- type:设备的型号,需与平台确定硬件产品功能,并分配固定的型号编码
数据传输使用JSON格式。
公共请求参数及示例
| 参数 | 数据类型 | 是否必填 | 说明 |
|---|---|---|---|
| app_id | object | 是 | 请求调用的APP ID,和App Secret一同由平台分配 |
| biz | string | 是 | 业务编码 |
| id | string | 是 | 业务随机id |
| sn | string | 是 | 设备序列号,厂商确保唯一 |
| time | int | 是 | 设备当前时间戳(秒) |
| type | int | 是 | 设备型号,厂商和平台约定,由平台提供 |
| sign | string | 是 | 签名,生成规则如下 |
| data | object/array | 否 | 参数数据部分,不同接口有不同的约定 |
签名规则
- 将请求参数 按照固定顺序app_id、biz、id、sn、time进行拼接得到:app_id=appIdTest&biz=register&id=123&sn=sn123&time=1662024496
- 直接拼接分配的app_secret,得到:app_id=appIdTest&biz=register&id=123&sn=sn123&time=1662024496appSecretTest
- 进行md5加密,计算出签名 sign = F220FB5491C5B6BFF21EAA7EAD8B241D
{"app_id": "appIdTest","biz": "register","id": 123,"sn": "sn123","time": "1662024496","sign": "F220FB5491C5B6BFF21EAA7EAD8B241D","type": "3568",}
公共响应参数及示例
| 参数 | 数据类型 | 是否必填 | 说明 |
|---|---|---|---|
| code | int | 是 | 响应码,0表示处理成功, 非0表示处理失败,参考错误码解释 |
| msg | string | 是 | 响应描述 |
| biz | string | 是 | 业务编码 |
| data | object/array | 否 | 响应数据包内容 |
| time | int | 是 | 服务器当前时间戳,可用于做设备时间校准 |
{"code": 0,"message": "ok","biz": "test","data": [],"time": 1662024496}
通用接口
所有http上报接口均通过该接口, 不同业务通过biz区分
| 接口地址 | {api_url}/api/v2/device/cmd� |
|---|---|
| 请求方法 | POST |
设备注册
设备在建立MQTT连接前,需要动态获取MQTT连接信息,设备在开机联网后可以调用该注册接口获取连接信息。
:::info biz: register
:::
请求参数及示例
| 参数 | 数据类型 | 是否必填 | 说明 |
|---|---|---|---|
| app_version� | string | 否 | 版本号 |
{"app_id": "appIdTest","biz": "register","id": 123,"sn": "sn123","time": "1662024496","sign": "F220FB5491C5B6BFF21EAA7EAD8B241D","type": "3568","data": {"app_version": "1.0.0"}}
响应参数及示例
| 参数 | 子参数 | 数据类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| mqtt | object | 是 | MQTT配置 | |
| host | string | 是 | 数据包ID | |
| port | int | 是 | 数据包内容 | |
| username | string | 是 | 设备登录用户名 | |
| password | string | 是 | 设备登录密码 | |
| client_id | string | 是 | 设备客户端ID | |
| down_topic | string | 是 | 设备订阅主题 | |
| up_topic | string | 是 | 设备数据上报主题 | |
| keepalive | int | 是 | MQTT连接保活间隔 |
{"biz": "register","id": "1683532553840","time": 1683532553,"sn": "1234","app_id": "1234","sign": "bd39a514daead4c524a003afe9aa6cb3","type": "1234","data": {"mqtt": {"host": "iot.ganlin.com","port": 1883,"username": "1234","password": "1234","client_id": "1234","down_topic": "gl-ad-down/1234","up_topic": "gl-ad-up/1234","keepalive": 60}},"code": 0,"msg": "success"}
在线二维码核验
:::info biz: qrcode
:::
请求参数及示例
| 参数 | 数据类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 核验的数据类型, qrcode:二维码 |
| content | string | 是 | 核验内容,如二维码内容 |
{"app_id": "appIdTest","biz": "qrcode","id": 123,"sn": "sn123","time": "1662024496","sign": "F220FB5491C5B6BFF21EAA7EAD8B241D","type": "3568","data": {"type": "qrcode","content": "GL_2hJgj6vBW+UUFu2AYbjIp9x7KQ8hqcIk/pY2d7o38xk="}}
响应参数及示例
| 参数 | 数据类型 | 是否必填 | 说明 |
|---|---|---|---|
| result | int | 是 | 核验结果 |
| person_id | string | 是 | 人员ID |
| check_msg | string | 是 | 核验描述 |
{"biz": "qrcode","id": "1683532553840","time": 1683532553,"sn": "1234","app_id": "1234","sign": "bd39a514daead4c524a003afe9aa6cb3","type": "1234","data": {"result": 0,"person_id": "160xxxxx","check_msg": "通过"},"code": 0,"msg": "success"}
错误码
| Code | 说明 | 备注 |
|---|---|---|
| 100001 | App ID不存在 | |
| 100002 | 签名不正确 | |
| 100004 | App Id和签名不能为空 | |
| 100005 | 该设备型号未注册 |
设备日志上报
:::info biz: log
:::
请求参数及示例
以 form-data的格式上传
| 参数 | 数据类型 | 是否必填 | 说明 |
|---|---|---|---|
| file_content� | string | 是 | 日志内容 (application/octet-stream) |
响应参数及示例
{"biz": "log","id": "1683532553840","time": 1683532553,"sn": "1234","app_id": "1234","sign": "bd39a514daead4c524a003afe9aa6cb3","type": "1234","code": 0,"msg": "success"}
