### 概述
数据推送是用于开发者开发自己个性化业务系统时,让平台向用户指定的第三方URL地址通过Http或Https推送设备产生的数据(如设备变量数据,定位数据等)。
### 操作流程
#### .需要准备一台有外网ip的服务器
#### .提供进行http推送地址校验和接收http数据推送的http服务
#### .把地址提供给坤典云平台配置Http推送地址
### 推送地址校验
推送的时候会对接口进行校验,会向`提供的推送地址`上发送get请求,验证地址的合法性,需要返回相应的数据进行校验。
接口校验方式如下:
| 请求类型 | get |
| --- | --- |
| 请求 | {url}?verify=0123abcd (随机8位数字或字母) |
| 返回内容 | body为verify的值(如:0123abcd) 注:返回内容只有verify(8个字符)的值,不要加其它任何字符 |
### 推送限制
每个用户每秒最多推送10条数据,超出部分数据会丢失
### 接口回复
* 服务器收到http推送后应立即进行回复,推送失败超过10分钟发送报警邮件和短信,超过半小时发送报警邮件和短信并关闭推送开关
* 正常回复`状态码:``Status Code:200 OK`,`body`中内容为空
* 服务器5秒内没有收到回复视为超时
### http推送格式
类型:post
协议类型:http
| 字段 | | 说明 |
| --- | --- | --- |
| | Content-Type | application/json |
| body | | json格式 |
#### 原始数据
| 类型 | 内容 | | 类型 | 说明 |
| --- | --- | --- | --- | --- |
|
body | type | | transmission | 数据点类型 |
| | deviceId | | string | 设备id |
| | data | | base64 | 透传的数据(转为base64传输) |
#### 设备数据点上报数据推送
| 类型 | | 内容 | | 类型 | 说明 |
| --- | --- | --- | --- | --- | --- |
|
body | type | | | dataPoint | 数据点类型 |
| | data | | | | 数据 |
| | | dataPoints | | array | 内容如下 |
| | | | dataPointId | int | 数据点id |
| | | | slaveName | string | 从机名称 |
| | | | variableName | string | 变量名称 |
| | | | value | string | 数值 |
| | | | err | int | 错误码。
0:正常,非0异常。
1:从机无应答
2:从机给了一个错误应答3:无法连接
4:无此key |
| | | | time | long | 时间戳(秒) |
| | | deviceId | | string | 设备id |
| | | deviceName | | string | 设备名称 |
`示例:`
```
{
"type": "dataPoint",
"data": {
"version": 0,
"dataPoints": [
{
"dataPointId": 123123,
"slaveName": "1",
"variableName": "123",
"value": "42.12",
"err": 0,
"time": 1539311832
}
],
"deviceId": "123",
"deviceName": "balabala"
}
}
```
#### 设备定位数据
| 类型 | | 内容 | | 类型 | |
| --- | --- | --- | --- | --- | --- |
|
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 | 设备id |
| | | deviceName | | 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",
"deviceName": "balabala"
}
}
```