空中升级 (OTA) 更新
通过 OTA 升级,无需物理接触设备,也可远程更新节点的固件。
概述
在 RainMaker 中,OTA 更新可以:
- 检查可用的固件更新。
- 发起节点 OTA 更新。
- 监控 OTA 更新任务的状态。
检查 OTA 更新
使用 checkOTAUpdate 方法,检查该节点是否有可用的空中升级(OTA)更新。
try {
const otaResponse = await node.checkOTAUpdate();
console.log("OTA update availability:", otaResponse);
if (otaResponse.otaAvailable) {
console.log("Update available:", otaResponse.fwVersion);
console.log("OTA Job ID:", otaResponse.otaJobId);
console.log("File size:", otaResponse.fileSize);
}
} catch (error) {
console.error("Error checking OTA update:", error);
}
ESPOTAUpdateResponse 接口
checkOTAUpdate 方法返回一个 ESPOTAUpdateResponse 对象,包含 OTA 更新可用性及其详细信息。
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
| otaAvailable | 布尔值 | 是 | 指示设备是否有可用的 OTA 更新。 |
| status | 字符串 | 是 | OTA 更新的状态。 |
| description | 字符串 | 是 | OTA 更新的描述。 |
| fwVersion | 字符串 | 是 | 可用于更新的固件版本。 |
| otaJobId | 字符串 | 是 | 可用于发起更新的 OTA 任务 ID。 |
| fileSize | 数字 | 是 | 固件文件的大小(以字节为单位)。 |
| url | 字符串 | 否 | 用于下载固件的 URL。 |
| fileMD5 | 字符串 | 否 | 用于校验的固件文件的 MD5 哈希值。 |
| streamId | 字符串 | 否 | OTA 更新的流 ID。 |
| metadata | Record<string, any> | 否 | 与 OTA 更新相关的附加元数据。 |
示例:检查 OTA 更新并使用返回结果
try {
const otaResponse = await node.checkOTAUpdate();
if (otaResponse.otaAvailable) {
console.log("OTA Update Available!");
console.log("Firmware Version:", otaResponse.fwVersion);
console.log("Description:", otaResponse.description);
console.log("File Size:", otaResponse.fileSize, "bytes");
console.log("Status:", otaResponse.status);
console.log("OTA Job ID:", otaResponse.otaJobId);
// 使用 otaJobId 发起更新
if (otaResponse.otaJobId) {
// 可以使用此任务 ID 调用 pushOTAUpdate
console.log("Ready to update with job ID:", otaResponse.otaJobId);
}
// 可选字段
if (otaResponse.url) {
console.log("Firmware URL:", otaResponse.url);
}
if (otaResponse.fileMD5) {
console.log("File MD5:", otaResponse.fileMD5);
}
if (otaResponse.metadata) {
console.log("Metadata:", otaResponse.metadata);
}
} else {
console.log("No OTA update available. Current status:", otaResponse.status);
}
} catch (error) {
console.error("Error checking OTA update:", error);
}