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);

    }
}