轻量级设备 Open API
1. open api概述
OpenAPI主要包括5大接口分类,分别是移动端登录授权、设备绑定、设备控制、数据查询、设备升级。
1.1 open api主要功能
1.1.1 登录授权
- 此类接口是基于百度账号体系研发开放的,此文档只涉及到“登陆授权”、“获取用户信息”接口
- 如果开发者没有自己的登录授权,可以直接使用OpenAPI提供的授权机制
- 如果开发者要使用自己的登录授权,需要联系我们开通第三方授权,但是无法使用这类接口
1.1.2 设备绑定
- 此类接口用于用户对设备进行绑定、解绑和修改名字等功能
- 可以根据设备UUID和token来获取指定设备的详细信息
1.1.3 设备控制
- 获取设备自描述资源
- 对指定设备发送控制命令
1.1.4 数据查询
- 查询设备是否在线、设备历史数据和设备实时数据
1.1.5 设备升级
- 查询设备最新版本
- 获取版本详情
- 指定设备按照指定OTA版本进行升级
- 查询升级状态
1.2 使用场景
目前我们也提供了Android SDK,包含了openapi的所有功能,如果开发android,推荐使用我们的Android APP SDK。如果开发ios系统应用,适合直接使用openapi。
2. 获取方式
2.1 环境准备
使用接口必要的流程和配置
- 先使用百度账号登录DuerOS开放平台
- 进行开发者认证,审核身份
- 新建一个基于mbed的产品,默认会产生20个测试设备,或者通过创建批次获取更多的设备
- 主要使用设备的数据是deviceUuid和相应的token(bind_token)
-
为产品添加数据点(或者直接添加数据点模板)
- 补充应用配置
- 获得client_id(API Key),client_secret(Secret Key),根据不用的应用系统配置相应的参数,用于身份签名和验证
- 以上步骤都完成,此文档的接口才能使用
2.2 接口访问签名
部分接口需要提供在HTTP Header里面提供签名才能被允许访问.
签名X-IOT-Signature
生成方法如下:
{nonce}:SHA1({nonce}+{apikey}+{secret}+{access_token})
各参数说明:
nonce
(string) 由16个随机字符组成: a-z, A-Z, 0-9; 同一个Nonce只能使用一次, 每次请求接口都必须重新生成apikey
(string) client_id(API Key)secret
(string) 密钥- WEB应用 使用 client_secret(Secret Key)
- Android应用 使用 包名+apk签名
- iOS应用 使用 BundleID
access_token
(string) APP得到用户授权后拿到的access_token
, 如果某些接口不需要验证该access_token, 则该值填空
2.3 接口错误码
code | 含义 |
---|---|
1001 | auth fail |
1002 | app auth fail |
1003 | parameter is error |
1004 | body parameter is not json format |
1005 | signature nonce is used |
1006 | redis server is error |
1007 | signature is null or error |
1204 | project id error |
1208 | device uuid invalid |
1209 | device not exist |
1211 | accountUuid not found |
1212 | user and devices do not bind |
1218 | user no permissions |
1219 | device token invalid |
1223 | app not bind project |
1224 | project appid invalid! |
1226 | lack of signature or token! |
1227 | batch id invalid! |
1228 | token and device do not match |
1229 | device has been bind by other account |
1232 | packageId invalid |
1305 | command name invalid |
1308 | method invalid |
1338 | device not reachable |
1339 | name length out of range |
1340 | device name is empty |
1401 | data query params invalid |
1506 | package id invalid |
1801 | device id is empty |
1802 | account has not power to access this device |
1803 | the number of device beyond 20 |
1902 | lack of strategy id or valid |
1905 | user can not use this strategy id |
2001 | create ota task params is error |
2004 | device is running to update |
2005 | task id or device uuid is error |
2007 | device version is higher than package version |
3. open api功能
1、移动客户端(Android/iOS/SDK) OAuth
1.1使用Authorization Code登陆授权
Request
名称 | 类型 | 说明 |
---|---|---|
client_id | string | 必须参数,注册应用时获得的API Key |
response_type | string | 必须参数,为code |
state | string | 非必须参数,用于保持请求和回调的状态,授权服务器在回调时(重定向用户浏览器到“redirect_uri”时),会在Query Parameter中原样回传该参数。OAuth2.0标准协议建议,利用state参数来防止CSRF攻击 |
scope | string | 非必须参数,以空格分隔的权限列表,若不传递此参数,代表请求用户的默认权限。关于权限的具体信息请参考“权限列表” |
display | string | 非必须参数,登录和授权页面的展现样式,移动设备使用“mobile”,具体参数定义请参考自定义授权页面一节 |
redirect_uri | string | 必须参数,授权后要回调的URI,即接收Authorization Code的URI。如果用户在授权过程中取消授权,会回调该URI,并在URI末尾附上error=access_denied参数。对于无Web Server的应用,其值可以是http://openapi.baidu.com/oauth/2.0/login_success,此时用户同意授权后,授权服务会将Authorization Code直接显示在URI末尾。非http://openapi.baidu.com/oauth/2.0/login_success值的redirect_uri按照如下规则进行匹配:(1)如果开发者在“授权安全设置”中配置了“授权回调地址”,则redirect_uri必须与“授权回调地址”中的某一个相匹配;(2)如果未配置“授权回调地址”,redirect_uri所在域名必须与开发者注册应用时所提供的网站根域名列表或应用的站点地址(如果根域名列表没填写)的域名相匹配。请参考授权回调地址配置进行注册 |
Response
http://openapi.baidu.com/oauth/2.0/login_success?code=ae09c6d71adddac0099c8478158e76e7&state=123
- Parameters
名称 | 类型 | 说明 |
---|---|---|
code | string | 每一个Authorization Code的有效期为10分钟,并且只能使用一次,再次使用将无效。 |
通过code,获取refresh_token和access_token Request
名称 | 类型 | 说明 |
---|---|---|
grant_type | string | 必须参数,此值固定为“authorization_code” |
code | string | 必须参数,通过上面第一步所获得的Authorization Code |
client_id | string | 必须参数,应用的API Key |
client_secret | string | 必须参数,应用的Secret Key |
redirect_uri | string | 必须参数,该值必须与获取Authorization Code时传递的“redirect_uri”保持一致 |
Response
{
"expires_in": 2592000,
"refresh_token": "your_refresh_token",
"access_token": "your_access_token",
"session_secret": "your_session_secret",
"session_key": "your_session_key",
"scope": "basic"
}
- 响应数据包格式
名称 | 类型 | 说明 |
---|---|---|
access_token | string | 要获取的Access Token |
expires_in | string | Access Token的有效期,以秒为单位;请参考Access Token生命周期 |
refresh_token | string | 用于刷新Access Token 的 Refresh Token,所有应用都会返回该参数;(10年的有效期) |
scope | string | Access Token最终的访问范围,即用户实际授予的权限列表(用户在授权页面时,有可能会取消掉某些请求的权限),关于权限的具体信息参考权限列表一节 |
session_key | string | 基于http调用Open API时所需要的Session Key,其有效期与Access Token一致 |
session_secret | string | 基于http调用Open API时计算参数签名用的签名密钥 |
1.2获取用户信息
Request
Response 200 (application/json)
{
"uid":"3657819769",
"uname":"test",
"portrait":"a8da797178323239a601"
}
名称 | 类型 | 说明 |
---|---|---|
uid | uint | 当前登录用户的数字ID |
uname | string | 当前登录用户的用户名。只用于显示,可能会发生变化,不保证全局唯一 |
portrait | string | 当前登录用户的头像 |
2、设备绑定
2.1用户绑定设备 [POST /device/bind]
Request
- parameters
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备唯一的标识id |
token | string | 设备绑定的bindToken |
refreshToken | string | 授权成功返回的refresh_token |
-
headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
- body
{ "deviceUuid": "0083000000000a", "token": "6dd5790b2163a0132e6c65c6dd6f9ef2", "refreshToken": "22.587635cc7c4b5bfc5b061fcdc19eeca2.315360000.1816848097.1647011623-9887758" }
Response 200 (application/json)
{
"data": true,
"code": "0",
"message": ""
}
- 异常输出
status | 说明 |
---|---|
404 | accountUuid没有找到 |
406 | 设备没有找到 |
500 | 服务器错误 |
2.2修改绑定设备名称(需要设备与用户先进行绑定) [PUT /device/name/update]
Request
- parameters
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备唯一的标识id |
name | string | 设备名称 |
-
headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
- body
{ "deviceUuid": "0083000000000a", "name": "testname" }
Response 201 (application/json)
{
"data": {
"uuid": "0083000000000a",
"projectId": 131,
"deviceBatchId": 106,
"name": "testname",
"bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
"osVersionId": 160,
"status": "UNACTIVATED",
"version": 1,
"activateTime": null,
"lastHeartbeatTime": null,
"createTime": "2017-06-07T02:46:30Z",
"updateTime": "2017-06-07T06:10:14Z"
},
"code": "0",
"message": "",
"total": 1
}
2.3解除绑定(需要设备与用户先进行绑定) [POST /device/unbind]
Request
- parameters
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备唯一的标识id |
-
headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
- body
{ "deviceUuid": "0083000000000a" }
Response 200 (application/json)
{
"data": true,
"code": "0",
"message": ""
}
2.4获取用户所有绑定的设备 [GET /device/bind/list]
Request
- parameters
名称 | 类型 | 说明 |
---|---|---|
start | int | 起始元素, 默认0 |
limit | int | 每页大小, 每页的个数,默认20且不得超过100 |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": [
{
"projectId": 131,
"deviceBatchId": 106,
"name": "",
"bindToken": "9614b7fd4af0305d412056cc0391d4b1",
"osVersionId": 160,
"status": "UNACTIVATED",
"version": 1,
"activateTime": null,
"lastHeartbeatTime": null,
"createTime": "2017-06-07T02:46:30Z",
"updateTime": "2017-06-07T02:46:30Z",
"osVersion": "0.0.0.0",
"deviceUuid": "0083000000000b",
"projectName": "doc_test",
"type": "WIFI",
"seriesName": "故事机"
},
{
"projectId": 131,
"deviceBatchId": 106,
"name": "testname",
"bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
"osVersionId": 160,
"status": "UNACTIVATED",
"version": 1,
"activateTime": null,
"lastHeartbeatTime": null,
"createTime": "2017-06-07T02:46:30Z",
"updateTime": "2017-06-07T06:10:14Z",
"osVersion": "0.0.0.0",
"deviceUuid": "0083000000000a",
"projectName": "doc_test",
"type": "WIFI",
"seriesName": "故事机"
}
],
"code": "0",
"message": "",
"limit": 100,
"start": 0,
"total": 2
}
- 返回字段说明
名称 | 说明 |
---|---|
version | 设备使用版本:1为研发中的设备,0为投入使用的设备 |
2.5根据设备UUID和token获取指定设备详细信息 [GET /device/info/by_token]
Request
-
url
https://openapi-iot.baidu.com/v1/device/info/by_token?deviceUuid=[deviceUuid]&token=[token] - parameters
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备唯一的标识id |
token | string | 设备bindToken |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": {
"uuid": "0083000000000a",
"projectId": 131,
"deviceBatchId": 106,
"name": "testname",
"bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
"osVersionId": 160,
"status": "UNACTIVATED",
"version": 1,
"activateTime": null,
"lastHeartbeatTime": null,
"createTime": "2017-06-07T02:46:30Z",
"updateTime": "2017-06-07T06:10:14Z",
"osVersion": "0.0.0.0",
"deviceUuid": "0083000000000a",
"projectName": "doc_test",
"type": "WIFI",
"seriesName": "故事机",
"batchName": "0000"
},
"code": "0",
"message": "",
"total": 1
}
2.6 根据设备UUID获取指定设备详细信息(需要设备与用户先进行绑定) [GET /device/info/by_uuid]
Request
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备唯一的标识id |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": {
"uuid": "0083000000000a",
"projectId": 131,
"deviceBatchId": 106,
"name": "testname",
"bindToken": "6dd5790b2163a0132e6c65c6dd6f9ef2",
"osVersionId": 160,
"status": "UNACTIVATED",
"version": 1,
"activateTime": null,
"lastHeartbeatTime": null,
"createTime": "2017-06-07T02:46:30Z",
"updateTime": "2017-06-07T06:10:14Z",
"osVersion": "0.0.0.0"
},
"code": "0",
"message": "",
"total": 1
}
3、设备控制
3.1 获取设备自描述资源(需要设备与用户先进行绑定) [GET /device/resource]
Request
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备唯一的标识id |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": {
"resources": [
{
"name": "play",
"resourceType": "voice",
"type": "string",
"label": "播放内容",
"description": "可通过“播放儿歌”“播放春天在哪里”“上一首”“下一首”等语音指令控制播放内容",
"pattern": {},
"uri": "/play",
"protocol": [
"COAP",
"HTTP"
],
"method": [
"GET",
"PUT"
]
},
{
"name": "volume",
"resourceType": "voice",
"type": "int",
"label": "音量",
"description": "可通过“调高音量”“调低音量”等语音指令调节设备音量",
"pattern": {
"min": 0,
"max": 16,
"step": 1
},
"uri": "/volume",
"protocol": [
"COAP",
"HTTP"
],
"method": [
"GET",
"PUT"
]
},
{
"name": "switch",
"resourceType": "",
"type": "bool",
"label": "关机",
"description": "关闭设备",
"uri": "/switch",
"protocol": [
"COAP",
"HTTP"
],
"method": [
"GET",
"PUT"
]
},
{
"name": "power",
"resourceType": "",
"type": "int",
"label": "电量",
"description": "查询电量",
"pattern": {
"min": 0,
"max": 100,
"step": 1
},
"uri": "/power",
"protocol": [
"COAP",
"HTTP"
],
"method": [
"GET"
]
}
],
"report": []
},
"code": "0",
"message": "",
"total": 1
}
3.2 对指定设备发送控制命令(需要设备与用户先进行绑定) [POST /device/control/send]
Request
- parameters
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备唯一的标识id |
method | string | GET读取数据点数据,PUT修改数据点数据 |
name | string | 数据点标识名 |
content | string | 控制命令所携带的参数,比如填写修改值 |
-
headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
- body
{ "deviceUuid":"01a800000072af", "method":"PUT", "name":"power", "content":"1" }
Response 200 (application/json)
{
"data": {
"code": "2.05",
"content": "75",
"name":"power",
},
"total": 1,
"code": "0",
"message": ""
}
4、数据查询
4.1查询设备是否在线(需要设备与用户先进行绑定) [POST /device/query/data/connect]
Request
-
url
https://openapi-iot.baidu.com/v1/device/query/data/connect - parameters
名称 | 类型 | 说明 |
---|---|---|
deviceUuids | string[ ] | 设备uuid数组,一次最多查询20个设备uuid |
-
headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
- body
{ "deviceUuids":["0083000000000a","0083000000000b"] }
Response 200 (application/json)
{
"data": [
{
"deviceUuid": "0083000000000a",
"status": false
},
{
"deviceUuid": "0083000000000b",
"status": false
}
],
"code": "0",
"message": "",
"total": 1
}
4.2查询设备历史数据(需要设备与用户先进行绑定) [GET /device/query/data/history]
Request
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备ID |
propertyKey | string | 数据点,可选,不选默认全部数据点 |
propertyType | string | 数据点类型(REPORT,RESOURCE),可选,不选默认全部数据点 |
startTime | string | utc时间,例如为2017-04-14T08:31:10Z |
endTime | string | utc时,例如为2017-04-14T08:31:10Z |
limit | int | 默认20,不能超过100 |
nextPage | long | 下一页数据的参数,在接口返回内容参数nextPage中获取,如果为null,则表示没有数据 |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": [
{
"timeStamp": 1495044775000,
"value": "{id=108956,+rate=8000,+segment=15,+eof=true,+channel=1}",
"key": "voice_control"
},
{
"timeStamp": 1495034776000,
"value": "{id=108956,+rate=8000,+segment=7,+voice_data=JgAAACwL9NxOU7tUy0tFYxxkcVz1h8fh02TJ/VEyVc9mtSD2fK0fsMl3JgAAACunuCmTZbF4FkujpJ4ZJXdZOckSLoOx5Y81du5dR8Roa99kmYlHJgAAAC+2OCt1oWqfuMN1dQUjF5kdiYX5vlJPsfCnXPVXiXk7MVMG9HFnJgAAACk65VyUSh4jsa8DdeoliWRmBhFkhhKncvUyC6B5FujAXXDmUvKXJgAAACkyl1yTTcqk3BKz43cmMU2B1bu6dpMXqiHOuz0ESYvJ2RU8X5bnJgAAACkyl1yyTF995XLf6sbe4XjP6BJjHFOHmCSPPOekCeJWi1IkRzdnJgAAACkii2nSTTLLh7aTF5ImRV9AlkFmd5MHjsqAUuNvKbxR55ZX2Eh3JgAAACk8i1XvS38iJoXiNbHCg8zZKfC/AJMbiNnYYdQREGrWDhhfrI4XJgAAAC24ZhLNIs9I/dEPzfB6q4HjUTa7At2H0FV32IyR4WPrkCy4Nh33JgAAAC+T5JTQJZ6Q9IyPxvJ9Ost7hOvO64T5g7s69SaiC8Tu8MopR7HHJgAAACoXH/fw0e9Yh8q1Sk7W4UTtl8rr6S1B6c/Uj4UC9W7r7pc2WGXHJgAAACoXWvfyMCZeZhKa05Gtk0cdwZ+bDSHLv10+d9adOYRi8EnmDaanJgAAACgTsNjSxas/2fqHcNk5n4F0WTmgQMwOqrGGF6On/lnq7ragwDbXJgAAAC4c/PDSOaOH9ZNsnhMCzWnVl9leQicj3Q4eoHNk4wHtk1rAv7vnJgAAACgLWtgTKI6Bi01uLkNmmUP6HcZmL8dB2B3FvWh+4E/R1VA+JyzH,+eof=false,+channel=1}",
"key": "voice_control"
},
{
"timeStamp": 1495034185000,
"value": "{id=108955,+rate=8000,+segment=15,+eof=true,+channel=1}",
"key": "voice_control"
},
{
"timeStamp": 1495034085000,
"value": "{id=108955,+rate=8000,+segment=14,+voice_data=JgAAACzTCkdJzVapC3RUm9emm6IxGPJJcuDH0UWIsjA4vvjtpoCENhb3JgAAACk3nlTJZcNGkOOmJPmxD75a+oNHLOLc3/bMqVlXQOHse+5pZU8HJgAAAC/fKr9Jerd7UihNgdzxN5gWPBATBj09yDo0/IhaAOP/ras+0KrnJgAAAC3Gk2SJRnehkLde64+4+fAbjpT2SkdV1FuzSEbMo27d8hxbbaunJgAAACzbZA5I9/s2Kul+xdeSD5CrV9v4yQeH2JyFXBavYEFnru55xMFHJgAAACzdSr5IdrbnqtKPqlnXzbQ7kR69bL9wwXXnOwaAaursi0JuO/jnJgAAAC3GnK+JpXcc0PWP6JfOO5QF4LsELq+N0W1xATL83D5tKB/yIvVHJgAAAC3crKtJGrvRsE8y6Wwpj5y15Bjrbo09yjKbHUnmXuboRYJzBOrXJgAAACzOFL9JtPdt9bMK/HVq4XrXnaod28xdoUwsDezFCZbpjnh/hFyHJgAAACzGir5poV9V9ADljYWUN7I9nXC5GO84qk4aEt3WBv5RHAd7/eQnJgAAACzear5pMzc9eP3IeXZoj2YeKQRguSUZ0A4lV2556w3Um07cVKJHJgAAACk2uFco3Y8KiiCLDWIt9ZhetT1ljfZRwV+3T2reSabukG1rlxlHJgAAACzGC9qKim5CJUQyPeEYMzTCMXrHQdmdqmonOTNPh4rnZC2GWB+nJgAAACzSvrtJAn9pFXsdHtVhW12QSROPpB5Tte1EEFcp483M71quHwvHJgAAACzd6r2IFX9GaZPG2dBPj4ir1RfpxRz2xa8Qi44Uky7X40BaqpLH,+eof=false,+channel=1}",
"key": "voice_control"
},
...
]
"nextPage": 1495034775000,
"code":"0",
"limit": 4
}
4.3查询设备实时数据(需要设备与用户先进行绑定) [GET /device/query/data/realtime]
Request
- parameters
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备ID |
propertyKey | string | 设备自描述上报的字段,比如空调有温度属性(temperature),设备会上报temperature这个字段,那么对温度的历史数据查询就是:propertyKey = temperature |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": {
"value": 94,
"timeStamp": 1495034775000
},
"code": "0",
"message": "",
"total": 1
}
5、用户设备升级
5.1查询设备最新版本(需要设备与用户先进行绑定) [GET /device/ota/new_version]
Request
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备ID |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": {
"deviceUuid": "01a800000072b0",
"packageId": 484,
"strategyId": 1132,
"type": "PASSIVE",
"newOsVersion": "1.1.1.1",
"originalOsVersion": "1.0.1.1",
"isUpdating": true
},
"code": "0",
"message": "",
"total": 1
}
- 返回字段说明
data | 说明 |
---|---|
null | 设备不需要升级 |
不为null | type为 “PASSIVE”,需要用户手动升级 |
5.2获取版本详情 [GET /device/ota/version/info]
Request
名称 | 类型 | 说明 |
---|---|---|
packageId | long | OTA版本id |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": {
"projectId": 4,
"osVersionId": 4,
"description": "tt",
"size": 521,
"status": "RELEASED",
"createTime": "2015-11-07T06:07:51Z",
"updateTime": "2015-11-07T06:07:51Z",
"osVersion": "1.0.0.0"
},
"total": 1,
"code": "0",
"message": ""
}
5.3指定设备按照指定OTA版本升级(需要设备与用户先进行绑定) [POST /device/ota/update]
Request
- parameters
名称 | 类型 | 说明 |
---|---|---|
packageId | string | OTA版本id |
deviceUuid | string | 设备uuid |
strategyId | string | 升级策略id |
-
headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
- body
{ "packageId": 480, "deviceUuid":"01a60000000004", "strategyId": 123 //可选 }
Response 201 (application/json)
{
"data": true,
"code": "0",
"message": "",
"total": 1
}
5.4查询升级状态(需要设备与用户先进行绑定) [GET /device/ota/update/status]
Request
名称 | 类型 | 说明 |
---|---|---|
deviceUuid | string | 设备uuid |
- headers
X-IOT-APP: {apikey} X-IOT-Signature: {sign} X-IOT-Token: {token}
Response 200 (application/json)
{
"data": {
"taskId": 13450,
"deviceUuid": "01a800000072db",
"packageId": 508,
"otaStrategyId": 1148,
"osVersionId": 751,
"status": "SUCCESS",
"eventLog": "2017-04-10 10:26:02 [Success] OK\n2017-04-11 02:26:02 {\"transaction\":\"77\",\"event\":0}\n2017-04-11 02:26:20 {\"percent\":0,\"transaction\":\"77\",\"event\":4}\n2017-04-11 02:26:20 {\"transaction\":\"77\",\"event\":6}\n2017-04-11 02:26:20 {\"transaction\":\"77\",\"event\":2}\n2017-04-11 02:26:20 {\"transaction\":\"77\",\"event\":10}\n",
"createTime": "2017-04-10T10:26:00Z",
"updateTime": "2017-04-10T10:26:21Z",
"osVersion": "4.0.0.2"
},
"code": "0",
"message": "",
"total": 1
}
- 返回字段说明
status | 添加字段 | 说明 |
---|---|---|
CREATED | 暂未开始升级 | |
SUCCESS | 升级成功 | |
INSTALLED | 推送成功 | |
RUNNING | 补充percent字段 | 升级进度,0~1 |
FAILED | 补充failure字段 | 错误描述 |