HTTP协议设备接入 ¶
准备工作 ¶
启动物联网平台 ¶
请参考教程5分钟快速运行
创建产品 ¶
访问产品管理菜单栏,点击创建产品按钮,根据页面提示填写参数,然后单击“确定”,完成产品的创建。
参数 | 参数值 |
---|---|
产品名称 | 电表 |
所属品类 | 标准品类 |
选择标准品类 | 进入选择品类页面,输入多功能电表,点击查询,选择搜索结果 |
节点类型 | 直连设备 |
接入协议 | HTTP |
数据类型 | 标准物模型 |
网络类型 | 以太网 |
工厂 | 根据实际情况填写 |
描述 | 请根据实际情况填写 |
点击进入产品详情页面,点击"为发布"按钮,发布产品。
创建设备 ¶
访问设备管理菜单栏,点击添加设备按钮,添加方式选择单个设备,根据页面提示填写参数,然后单击“确定”,完成设备的创建。
参数 | 参数值 |
---|---|
设备名称 | test_001 |
所属产品 | 电表 |
关联驱动 | 不填写 |
设备描述 | 请根据实际情况填写 |
下载官方HTTP驱动 ¶
访问驱动镜像菜单栏,点击驱动市场,下载HTTP协议驱动。
下载成功后,会在我的驱动出现一条记录。
设备与驱动绑定 ¶
访问设备管理菜单栏,勾选刚刚创建的设备,点击批量驱动绑定按钮,弹出绑定页面,关联驱动选择HTTP官方驱动开头的数据,点击确定按钮进行绑定。
绑定成功后,关联驱动一栏会出现驱动具体驱动名称。
启动驱动 ¶
打开Docker启动参数开关,输入-p 8089:8089
点击确定。
点击启动按钮,启动官方驱动。
下载接口请求模拟工具 ¶
准备Postman客户端。下载地址:https://www.postman.com/
认证鉴权 ¶
用户调用如下接口时,需要在请求Header中添加token,token的值是采用HmacMD5算法计算出来的。 其中输入为 设备ID与产品编号拼接,中间用&分割,Key为设备密钥,如图。
在计算连接密码时,可以使用在线工具辅助计算。https://www.idcd.com/tool/encrypt/hmac
设备在线 ¶
URL ¶
POST /api/v1/device/online/:deviceId/:productId
deviceId与productId需要根据项目实际情况做替换。
请求参数 ¶
请求Header参数
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
token | 是 | String | 参数说明:获取方法样例请参见认证鉴权。 |
响应参数 ¶
公共参数
参数 | 参数类型 | 描述 |
---|---|---|
success | Bool | 参数说明:是否调用成功。 |
code | Integer | 参数说明:调用失败时,返回的错误码,更多信息,请参见状态码。 |
error_msg | String | 参数说明:调用失败时,返回的出错信息。 |
请求示例 ¶
curl --location --request POST 'http://81.68.82.102:8090/api/v1/device/online/36475151/37402339' \
--header 'token: 47a6d2cea9bdac9e6dd4f79afd72f0fb'
响应示例 ¶
{
"success": true,
"code": 200,
"error_msg": "success"
}
设备离线 ¶
URL ¶
POST /api/v1/device/offline/:deviceId/:productId
deviceId与productId需要根据项目实际情况做替换。
请求参数 ¶
请求Header参数
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
token | 是 | String | 参数说明:获取方法样例请参见认证鉴权。 |
响应参数 ¶
公共参数
参数 | 参数类型 | 描述 |
---|---|---|
success | Bool | 参数说明:是否调用成功。 |
code | Integer | 参数说明:调用失败时,返回的错误码,更多信息,请参见状态码。 |
error_msg | String | 参数说明:调用失败时,返回的出错信息。 |
请求示例 ¶
curl --location --request POST 'http://81.68.82.102:8090/api/v1/device/offline/36475151/37402339' \
--header 'token: 47a6d2cea9bdac9e6dd4f79afd72f0fb'
响应示例 ¶
{
"success": true,
"code": 200,
"error_msg": "success"
}
设备属性上报 ¶
URL ¶
POST /api/v1/device/thing/property/post/:deviceId/:productId
deviceId与productId需要根据项目实际情况做替换。
请求参数 ¶
请求Header参数
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
token | 是 | String | 参数说明:获取方法样例请参见认证鉴权。 |
请求Body参数
参数名称 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号。String类型,每个消息ID在当前设备中具有唯一性。 |
version | String | 协议版本号,目前协议版本号唯一取值为1.0。 |
params | Object | 请求参数。如以上示例中,设备上报了的两个属性Ia(A相电流)和Ib(B相电流)的信息。具体属性信息,包含属性上报时间(time)和上报的属性值(value)。 |
time | Integer | 属性上报时间戳,类型为UTC毫秒级时间。 该参数为可选字段。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序,建议消息中带有时间戳。 若上传time,物联网平台的云端保存上传的时间作为属性上报时间。 若不上传time,物联网平台的云端自动生成属性上报时间并保存。 |
value | Any | 上报的属性值。 |
响应参数 ¶
公共参数
参数 | 参数类型 | 描述 |
---|---|---|
success | Bool | 参数说明:是否调用成功。 |
code | Integer | 参数说明:调用失败时,返回的错误码,更多信息,请参见状态码。 |
error_msg | String | 参数说明:调用失败时,返回的出错信息。 |
请求示例 ¶
curl --location 'http://81.68.82.102:8090/api/v1/device/thing/property/post/36475151/37402339' \
--header 'token: 47a6d2cea9bdac9e6dd4f79afd72f0fb' \
--header 'Content-Type: application/json' \
--data '{
"id":"ea2d8a36-844c-4d49-8102-5e6ce7d90b57",
"params":{
"Ia":{
"value":40,
"time":1712473482000
}
}
}'
响应示例 ¶
{
"success": true,
"code": 200,
"error_msg": "success"
}
设备事件上报 ¶
URL ¶
POST /api/v1/device/thing/event/post/:deviceId/:productId
deviceId与productId需要根据项目实际情况做替换。
请求参数 ¶
请求Header参数
参数 | 是否必选 | 参数类型 | 描述 |
---|---|---|---|
token | 是 | String | 参数说明:获取方法样例请参见认证鉴权。 |
请求Body参数
参数名称 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号。String类型,每个消息ID在当前设备中具有唯一性。 |
version | String | 协议版本号,目前协议版本号唯一取值为1.0。 |
params | Object | 请求参数。如以上示例中,设备上报了M_STATUS(表计通讯故障)事件。 |
eventTime | Integer | 属性上报时间戳,类型为UTC毫秒级时间。 该参数为可选字段。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序,建议消息中带有时间戳。 若上传time,物联网平台的云端保存上传的时间作为属性上报时间。 若不上传time,物联网平台的云端自动生成属性上报时间并保存。 |
eventCode | String | 事件标识符。 |
outputParams | Any | 事件输出参数。 |
响应参数 ¶
公共参数
参数 | 参数类型 | 描述 |
---|---|---|
success | Bool | 参数说明:是否调用成功。 |
code | Integer | 参数说明:调用失败时,返回的错误码,更多信息,请参见状态码。 |
error_msg | String | 参数说明:调用失败时,返回的出错信息。 |
请求示例 ¶
curl --location 'http://81.68.82.102:8090/api/v1/device/thing/event/post/36475151/37402339' \
--header 'token: 47a6d2cea9bdac9e6dd4f79afd72f0fb' \
--header 'Content-Type: application/json' \
--data '{
"id":"ea2d8a36-844c-4d49-8102-5e6ce7d90b33",
"version":"1.0",
"params":{
"eventCode":"Error",
"eventTime":1712474219000,
"outputParams":{
"M_STATUS":true
}
}
}'
响应示例 ¶
{
"success": true,
"code": 200,
"error_msg": "success"
}
状态码 ¶
状态码 | 信息 | 说明 |
---|---|---|
200 | - | 成功 |
10001 | system error | 系统错误 |
10002 | rpc request error | rpc请求错误 |
10003 | too many requests | 并发请求数据超过设定 |
10004 | the format of result is error | 请求数据格式错误 |
20001 | device not found | 未找到该设备 |
30001 | product not found | 未找到该产品 |
40001 | data size is not within the defined range | 上报数据大小未在指定区间 |
40002 | data report type error | 上报数据格式错误 |
40003 | property code not found | 属性标识符没有找到 |
40004 | event code not found | 事件标识符没有找到 |
40005 | data length is greater than the defined | 上报数据长度未在指定区间 |
40006 | invalid Parameter | 无效的uri参数 |
40007 | auth PermissionDeny | token错误 |