设备 HTTP 协议上传数据到 OneNET 接口规范
欢迎访问门户网站 http://open.iot.10086.cn/注册用户,获取最新文档。
版本号 修订日期
修订内容
说明
V1.0
2016/07/08 创建
目录
设备 HTTP 协议上传数据到 OneNET 接口规范 ..............................................................................1
1 设计原则 .................................................................................................................................... 3
2
HTTP 报文格式示例 ...................................................................................................................3
3 文本数据上传 ............................................................................................................................ 4
4 二进制数据上传........................................................................................................................ 6
1 设计原则
使用标准 HTTP 方法实现资源 CURD 操作;
采用 json 作为 API 输入输出;
以 json 输出错误信息。
HTTP 方法
POST
PUT
GET
DELETE
支持的返回码列表:
HTTP 返回码
200
400
401
含义
OK
Bad Request
Not Authorized
403
404
406
422
500
503
Forbidden
Not Found
Not Acceptable
Unprocessable Entity
Internal Server Error
No server error
描述
新增资源信息
更新资源信息
查看资源信息
删除资源
详细描述
在 HTTP body 中以 json 格式
指明详细成功或错误信息,
例如:
{
"errno": 0,
"error":“succ”
}
成 功 、 失 败 指 示 , 主 要 以
errno 是否为零来判断。
2 HTTP 报文格式示例
示例 1:
示例 2:
设备(device)
3 文本数据上传
HTTP 方法
URL
HTTP 头部
HTTP 内容
请求返回
POST
http://api.heclouds.com/devices/
/datapoints
api-key:xxxx-ffff-zzzzz
有多种数据格式,详细见下面说明
{
"errno": 0,
"error":“succ”,
}
说明:
1) 可以一次性向设备云上传多个数据流,每个数据流中有可以包括多个数据点。示例程序
表示向设备云上数据流 temperature 和数据流 key 上传数据。其中 temperature 数据流
有两个数据点,key 数据流也有两个数据点。
2) 如果某个数据流不存在,也就是事先没有通过 4.4.1 节中新增数据流的 API 创建本数据
流,则在增加数据点时,设备云会自动创建一个新的数据流,注意新数据流的 streamid
不可为空。
3) 数据点表示在某个时刻,该数据流的值为多少。其 at 表示时间,为可选字段。如果为
空,则设备云会取当前时间。如果存在其格式必须为"2013-04-22T00:35:43"的形式。
4) 数据点中的 value 表示具体的值,其值为 JSON 对象,可以为整型、字符串多种类型。
如果 value 部分用双引号括起来,则其在设备云存储为字符串,如果不用双引号括起来,
则其表示数字。
5) 数据点对应的时间是数据点的标识的一部分,相同时间的两个数据点,后一个会把前一
个覆盖。一般如果 at 部分取空,设备云会取系统时间,精度为毫秒,如果在一条命令
中某一个数据流包含多个数据点都没有 at 字段,会导致设备云只保存了最后一条。
6) 为了节省流量,增加数据点支持如下简写方式。在请求的 URL 中增加 type 字段,指示
所使用的简写方式。目前 type 支持 3,4,5 三种情况
http:///devices//datapoints?type=3
{“temperature”:22.5,”humidity”:”95.2%”}
表示在数据流 temperature 中增加一个数据点 22.5,在 humidity 中增加一个数据点
95.2%。
http:///devices//datapoints?type=4
{“temperature”:{“2015-03-22T22:31:12”:22.5}}
表示在数据流 temperature 中加一个数据点,在 2015 年 2 月 22 日 22 点 31 分 12
秒的值为 22.5
http://
/devices//datapoints?type=5
,;temperature,2015-03-22T22:31:12,22.5;102;pm2.5,89;10
补充说明:
消息中最前面两位为用户自定义的域中分隔符和域间分隔符,这两个分隔符不能相同。
比如采用逗号作为域中分隔符,分号作为域间分隔符的格式如下:
,;feild0;feild1;…;feildn
其中,每个 field 格式支持 3 种,下面以逗号作为域中分隔符进行说明:
field 格式 1: 3 个子字段,分别是数据流 ID,时间戳,数据值。通用格式:
Datastream_id,datetime,value
field 格式 2: 2 个子字段,分别是数据流 ID 和数据值,省略时间戳。通用格式:
Datastream_id,value
field 格式 3: 1 个子字段,省略了数据 ID 和时间戳,只传输数据值,平台将用该域所
在的位置号(从 0 开始)作为数据流 ID。通用格式:
注意:此格式中的数据点值均视为字符串。
示例:
(1),;temperature,2015-03-22T22:31:12,22.5;102;pm2.5,89
此段数据一共包括 3 个数据点,改写为基本格式为:
{
“datastreams”:[
{
},
{
},
{
“id”:”temperature”,
“datapoints”:[
“at”:”2015-03-22T22:31:12”,
“value”:”22.5”
{
}
]
“id”:”1”,
“datapoints”:[
“value”:”102”
{
}
]
“id”:”pm2.5”,
“datapoints”:[
{
}
“value”:”89”
]
}
]
}
4 二进制数据上传
功能:将二进制的数据保存到设备云,设备云返回该二进制数据的索引;并根据参数,将二
进制数据作为数据点保存到设备下的某个数据流。
HTTP 方法
URL
HTTP 头部
URL 参数
POST
http://api.heclouds.com/bindata
api-key:xxxx-ffff-zzzzz
device_id,必选,该数据所属设备。
datastream_id,必选,该数据所属数据流。
普通二进制数据、文件、图像
{
HTTP 内容
请求返回
"errno": 0,
"error":“succ”,
"data":{
//该数据在设备云的索引
"index":“AJOWFW1133OFO2Z93”
}
}