demo
概述
数据推送是用于开发者开发自己个性化业务系统时,让平台向用户指定的第三方URL地址通过Http或Https推送设备产生的数据(如设备变量数据,定位数据等)。
注:http推送有频率限制(具体见“推送限制”),对于大数据量高频率高实时性数据,建议使用javasdk
功能开启
共分两步
1. 有人云IoT->增值服务->购买基础二次开发包/购买企业版/购买旗舰版,获取二次开发权益(三项增值服务均提供数据推送服务)
2. 有人云IoT-> 扩展功能->二开申请,获取数据推送教程
操作流程
.需要准备一台有外网ip的服务器
.提供进行http推送地址校验和接收http数据推送的http服务
.有人云平台配置Http推送地址
配置Http推送目标地址
目标URL格式: {http/https}://{address}:{port}/{path},注:端口号为必须,不能省略
推送地址校验
方向:有人云->用户提供的服务器
打开推送开关的时候会对接口进行校验,会向用户填写的推送地址
上发送get请求,验证地址的合法性,需要返回相应的数据进行校验。
接口校验方式如下:
请求类型 | get |
---|---|
请求 | {url}?verify=1234abcd (随机8位数字或字母) |
返回内容 | body为verify的值(如:1234abcd) 注:返回内容只有verify(8个字符)的值,不要加其它任何字符 |
推送限制
基础二开每个用户每秒最多推送10条数据,高级二开每个用户每秒最多推送50条数据,超出部分数据会丢失
接口回复
方向:用户提供的服务器->有人云
- 服务器收到http推送后应立即进行回复,推送失败未回复超过半小时关闭推送开关
- 正常回复
状态码:
Status Code:200 OK
,body
中内容为空 - 服务器5秒内没有收到回复视为超时
http推送格式
类型:post
协议类型:http
字段 | 说明 | |
---|---|---|
Content-Type | application/json | |
body | json格式 |
原始数据
方向:有人云->用户提供的服务器
类型 | 内容 | 类型 | 说明 | |
---|---|---|---|---|
body |
type | transmission | 数据点类型 | |
cusdeviceNo | string | 设备编号 | ||
data | base64 | 透传的数据(转为base64传输) |
说明
有人云IoT中绑定模板的设备和添加到透传组的设备不推送原始数据
设备数据点上报数据推送
方向:有人云->用户提供的服务器
类型 | 内容 | 类型 | 说明 | ||
---|---|---|---|---|---|
body |
type | dataPoint | 数据点类型 | ||
data | 数据 | ||||
dataPoints | array | 内容如下 | |||
identifier | string | 变量标识 | |||
dataPointId | int | 变量id | |||
slaveName | string | 从机名称 | |||
variableName | string | 变量名称 | |||
value | string | 数值 | |||
err | int | 错误码。 0:正常,非0异常。 1:从机无应答 2:从机给了一个错误应答3:无法连接 4:无此key |
|||
time | long | 时间戳(秒) | |||
cusdeviceNo | string | 设备编号 |
示例:
{
"type": "dataPoint",
"data": {
"version": 0,
"dataPoints": [
{
"identifier":"温度"
"dataPointId": 123123,
"slaveName": "1",
"variableName": "123",
"value": "42.12",
"err": 0,
"time": 1539311832
}
],
"cusdeviceNo": "1233123123123123"
}
}
设备定位数据
方向:有人云->用户提供的服务器
类型 | 内容 | 类型 | |||
---|---|---|---|---|---|
body |
type |
location | 数据点类型 | ||
data | 数据 | ||||
position | |||||
locationType | string | GPS, Cell等 | |||
lng_bd | string | 经度 - 百度 | |||
lat_bd | string | 纬度 - 百度 | |||
lng_wgs | string | 经度 - 原始 | |||
lat_wgs | string | 纬度 - 原始 | |||
lng_gcj | string | 经度 - 火星 | |||
lat_gcj | string | 纬度 - 火星 | |||
time | string | 时间戳(秒) | |||
deviceId | string | 网关编号 |
示例:
{
"type": "position",
"data": {
"version": 0,
"position": {
"locationType": "Cell",
"lngBd": 0,
"latBd": 0,
"lngWgs": 0,
"latWgs": 0,
"lngGcj": 0,
"latGcj": 0,
"time": "1539311832"
},
"deviceId": "123"
}
}