Create Firmware File

为一个产品创建固件。

操作权限

需授权的资源

所需操作权限

设备管理

Full Access

请求格式

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

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

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

productKey

Query

必需

String

产品的Product key。

请求参数(Body)

请求Body的格式为multipart/form-data,由两个form-data组成:

  • 固件元数据的form-data;

  • 固件文件的form-data;

固件元数据form-data的Header

名称

必需/可选

数据类型

描述

Content-Disposition

必需

Content-Disposition: form-data; name=”metadata”

name 为常量,表示元数据消息体名称


固件元数据form-data的Body

名称

必需/可选

数据类型

描述

name

必需

StringI18n

固件国际化名称。见 国际化名称结构体>>

version

必需

String

固件版本。

signMethod

必需

String

固件文件的签名算法,支持 md5sha256

sign

必需

String

固件文件签名。

desc

可选

String

固件描述

enableVerification

必需

Boolean

固件用于升级任务时是否必须验证过。 true 为必须验证。 false 为可以不验证。


固件文件form-data的Header

名称

必需/可选

数据类型

描述

Content-Disposition

必需

Content-Disposition: form-data; name=”file”; filename=”yourFileName”

name 为常量,表示消息体名称; filename 表示固件对应文件名

响应参数

名称

数据类型

描述

data

FirmwareCreateResult结构体

已创建的固件ID。结构体的结构见下表。

FirmwareCreateResult结构体

名称

数据类型

描述

firmwareId

String

创建成功的固件ID。

错误码

代码

错误信息

描述

24601

Firmware version already exists

具有此版本的固件已存在。

24602

Firmware name already exists

具有该名称的固件已存在。

24603

Not allowed to create firmware concurrently

无法同时创建固件。

示例

请求示例

url: https://{apigw-address}/connect-service/v2.1/ota-firmwares?action=create&orgId=yourOrgId&productKey=yourProductKey
method: POST
requestBody:
  固件元数据form-data:
    Header:
    Content-Disposition: form-data; name="metadata"
    Body:
    {
    "name": {
        "defaultValue": "testDefaultValue"
    },
    "version": "yourVersion",
    "signMethod": "md5",
    "sign": "7eb565583c040b76b7466af1ecb553f3",
    "enableVerification": false,
    "desc": "ota firmware"
    }

返回示例

{
    "code": 0,
    "msg": "OK",
    "requestId": "9bba8197-d6d6-4fe2-a3d2-65153ab6376c",
    "data": {
        "firmwareId": "5ee0edb729b990001b9acf9a"
    }
}

Java SDK调用示例

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

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.common.StringI18n;
import com.envisioniot.enos.connect_service.v2_1.ota.firmware.CreateFirmwareFileRequest;
import com.envisioniot.enos.connect_service.v2_1.ota.firmware.CreateFirmwareFileResponse;
import com.envisioniot.enos.connect_service.vo.ota.SignMethod;

import java.io.File;

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

        String orgId = "yourOrgId";
        String productKey = "yourProductKey";

        CreateFirmwareFileRequest request = new CreateFirmwareFileRequest();
        request.setOrgId(orgId);
        request.setProductKey(productKey);
        StringI18n stringI18n = new StringI18n("testFirmware");
        request.setName(stringI18n);

        request.setVersion("testVersion");
        // Select your firmware file
        request.setFile(new File("yourFilePath"));
        // Choose MD5 or SHA256 as signMethod, the signature of firmware file will be generated automatically
        request.setSignMethod(SignMethod.MD5);
        request.setDesc("testDesc");
        // If enableVerification is true, the firmware must be verified before you create an upgrade task
        request.setEnableVerification(false);

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

    }
}