如何为主机 MCU 设备实现 OTA?
RainMaker 平台支持上传 MCU 固件并将其下发到设备。设备可通过 OTA 回调中的 metadata 字段,区分收到的 OTA URL 是面向 ESP Wi-Fi 模组还是主机 MCU。
管理面板设置: 创建 OTA 任务时,展开 Advanced 选项并勾选 Host MCU,将该镜像标记为主机 MCU OTA。

固件实现: 将 esp_rmaker_ota_enable_default 替换为自定义 OTA 回调,并检查 ota_data->metadata:
#include <esp_rmaker_ota.h>
esp_err_t esp_rmaker_custom_ota_cb(esp_rmaker_ota_handle_t ota_handle, esp_rmaker_ota_data_t *ota_data)
{
if (ota_data->metadata) {
if (strcmp(ota_data->metadata, "{\"esp.ota.target\":\"host_mcu\"}") == 0) {
/* 这是 MCU OTA — 记录 URL 并处理下载/烧录 */
/* 调用 esp_rmaker_ota_report_status 上报进度 */
return ESP_OK;
}
}
return esp_rmaker_ota_default_cb(ota_handle, ota_data);
}
/* 注册自定义 OTA 回调 */
esp_rmaker_ota_config_t ota_config = {
.server_cert = NULL,
.ota_cb = esp_rmaker_custom_ota_cb,
};
esp_rmaker_ota_enable(&ota_config, OTA_USING_TOPICS);
如需区分多个 MCU 目标,在创建 OTA 任务时使用 Custom Metadata 字段(例如设置 key target,value mcu1)。设备会在 ota_data->metadata 中收到 {"esp.ota.target":"host_mcu","target":"mcu1"}。

