Search OTA Task


搜索设备执行的某个 OTA 任务的详情及执行进度、状态。

操作权限

需授权的资源

所需操作权限

设备管理

Read

请求格式

POST https://{apigw-address}/connect-service/v2.1/ota-jobs?action=searchTask

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(Body)

名称

必需/可选

数据类型

描述

expression

可选

String

查询表达式,支持类 SQL 的查询。目前支持查询的字段是 jobIddeviceKeyfromVersionstatusdesc

  • jobId 支持等于(=)、in 运算符。

  • deviceKey 支持等于(=)、in 运算符

  • fromVersion 支持等于(=)、in 运算符。

  • status 支持等于(=)、in 运算符。

  • desc 支持等于(=)、in 运算符。

pagination

可选

Pagination 请求结构体

分页参数。如未指定,默认每页10条。每页最大记录数为200条,但为获得最佳性能,建议每页不超过50条。不支持使用 sorters 参数对结果进行排序。详见 Pagination 请求结构体>>

响应参数

名称

数据类型

描述

data

TaskInfo 结构体数组

查询到的 OTA 任务详情。TaskInfo 结构体的结构参见 TaskInfo 结构体>>

TaskInfo 结构体

名称

数据类型

描述

taskId

String

设备所执行的 OTA task 的 ID。同一个 OTA job,在不同设备上执行时,会使用一个 task ID 来唯一标识该 OTA job 在这台设备上执行时的任务流。

orgId

String

资产所属的组织 ID。

assetId

String

设备的asset ID。

productKey

String

设备的 product key。

deviceKey

String

设备的 device key。

jobId

String

OTA job 的 ID。

fromVersion

String

该 OTA task 中,需要升级的固件的版本号。

toVersion

String

该 OTA task 中,固件需要升级到的目标版本号。

progress

Integer

设备升级进度。用0到100之间(包括两端)的数字表示进度百分比。如果是负数,则表示该 task 失败。

desc

String

设备升级状态原因描述。可以返回 EnOS 指定的升级失败原因,具体内容也可由用户在设备端开发 OTA 能力时指定。

status

String

固件升级状态。

  • init : OTA task 已开始

  • published : OTA task 已发布

  • upgrading : OTA task 进行中

  • succeeded : OTA task 成功

  • failed : OTA task 失败

updateTime

Long

固件最近更新时间。

错误码

有关错误码的描述,参见 通用错误码

示例

请求示例

url: https://{apigw-address}/connect-service/v2.1/ota-jobs?action=searchTask&orgId=yourOrgId
method: POST
requestBody:
{
    "expression":"productKey='yourProductKey'",
    "pagination":{
        "pageNo":1,
        "pageSize":5
    }
}

返回示例

{
    "code":0,
    "msg":"OK",
    "requestId":"6b88c1ba-3388-4888-9429-6d332d4dbe2b",
    "data":[
        {
            "taskId":"5ed0de47646542001b3d1146",
            "orgId":"o15475466766371",
            "assetId":"FOrco0Hu",
            "productKey":"BXwU4kMk",
            "deviceKey":"ota-device1",
            "jobId":"5ed0de47646542001b3d1145",
            "fromVersion":"1.0",
            "toVersion":"2.0",
            "progress":null,
            "desc":"user cancel",
            "status":"failed",
            "updateTime":1590746699719
        }
    ],
    "pagination":{
        "sortedBy":null,
        "pageNo":1,
        "pageSize":10,
        "totalSize":1
    }
}

Java SDK 调用示例

package com.envisioniot.enos.connect_service.ota.job;

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.request.Pagination;
import com.envisioniot.enos.connect_service.v2_1.ota.job.task.SearchTaskRequest;
import com.envisioniot.enos.connect_service.v2_1.ota.job.task.SearchTaskResponse;

public class SearchTask {
    public static void main(String[] args) {
        final String appKey = "yourAppKey";
        final String appSecret = "yourAppSecret";
        String serverUrl = "yourServerUrl";

        String orgId = "yourOrgId";

        SearchTaskRequest request = new SearchTaskRequest();
        request.setOrgId(orgId);

        request.setExpression("jobId='yourJobId'");

        Pagination pagination = new Pagination();
        pagination.setPageNo(1);
        pagination.setPageSize(10);

        request.setPagination(pagination);

        SearchTaskResponse response = Poseidon
                .config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
                .url(serverUrl)
                .getResponse(request, SearchTaskResponse.class);
    }
}