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;
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
Content-Disposition | 必需 | Content-Disposition: form-data; name=”metadata” | name 为常量,表示元数据消息体名称 |
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
name | 必需 | StringI18n | 固件国际化名称。见 国际化名称结构体>> |
version | 必需 | String | 固件版本。 |
signMethod | 必需 | String | 固件文件的签名算法,支持 md5 , sha256 |
sign | 必需 | String | 固件文件签名。 |
desc | 可选 | String | 固件描述 |
enableVerification | 必需 | Boolean | 固件用于升级任务时是否必须验证过。 true 为必须验证。 false 为可以不验证。 |
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
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);
}
}