更新时间:2024-04-26 08:50:21下载pdf
OTA(Over-the-Air Technology)即空中下载技术,是指通过无线网络从远程服务器下载最新的应用或系统,从而对设备固件实现升级。主要有两个应用场景:修复已知 Bug 和增加新功能。
根据通知升级方式的不同,有以下升级方式:
App 提醒升级:用户进入设备面板主动提醒 App 用户,用户可以选择是否升级。
App 强制升级:升级提醒主动推送给 App 用户,用户无权选择,必须升级。
App 检测升级:升级提醒不会主动推送给 App 用户,需要用户主动发起版本检测,才能看到升级提醒。
自动升级由涂鸦开发者平台 自动升级开关 和 App 端自动升级开关共同决定。
tuya_iot_wifi_api.h
base_event_info.h
tuya_svc_upgrade.h
主联网固件的升级包数据一般不用您处理,开发框架会自行处理整个 OTA 主流程。但是如果您有特殊开发需求,需要自己接管升级包的处理,框架也是支持的。
由框架管理主联网固件升级
您自主管理主联网固件升级包
注册主联网固件升级通知回调,代替框架内部注册的函数。
在主联网固件升级通知回调里,调用 启动拉取升级固件包数据 的接口,并按照您的需求自行实现相关回调函数。
在涂鸦开发者平台 创建固件,得到获取固件 key。
调用 设备初始化接口 时,通过入参传入获取的固件 key。
编译工程,得到升级固件,升级固件带 UG 标识。
在涂鸦开发者平台,上传固件,并进行升级配置。
您想自己管理主联网固件升级包时才需要调用。如果您不调用该接口,框架内部会自行注册处理接口。之后的升级数据也会由框架自行处理写入对应区域。
/**
* @brief Register pre-precess handler to replace the default one
*
* @param[in] pre_ug_cb The new handler
*/
VOID tuya_svc_upgrade_register_pre_cb(DEV_UPGRADE_PRE_INFORM_CB pre_ug_cb);
您如果选择 您自主管理主联网固件升级包,则需要在主联网固件升级通知回调中调用该接口,否则无需调用该接口。
/**
* @brief Start to download the specific firmware
*
* @param[in] dev_id ID of sub-device, or NULL for GW
* @param[in] fw Firmware info to download
* @param[in] get_file_cb Callback to transfer data while downloading
* @param[in] pri_data Private data
* @param[in] upgrd_nofity_cb Callback when update is completed or an error occurs
* @param[in] upload_upgrade_percent Upload update percent or not
* @param[in] download_buf_size Buffer size allocated for OTA
*
* @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
*/
OPERATE_RET tuya_svc_upgrade_start(CONST CHAR_T *dev_id,
CONST FW_UG_S *fw,
CONST GET_FILE_DATA_CB get_file_cb,
VOID *pri_data,
CONST UPGRADE_NOTIFY_CB upgrd_nofity_cb,
CONST BOOL_T upload_upgrade_percent,
CONST UINT_T download_buf_size);
如果您选择 您自主管理主联网固件升级包,参考以下示例。
下载联网单品框架后,框架的 apps
目录下有所有功能示例代码集合 tuyaos_demo_examples
,可参考 examples/service_ota/example_main_ota_custom.c
文件中的代码。关于功能示例代码集合的使用,参考 TuyaOS 示例集合。
升级失败原因一般有两大类,即固件下载异常和安装异常,大部分都是下载问题。一般升级进度上报到 90% 以上,基本可以认为固件下载完成,否则可以判断设备固件没有下载完成。
设备网络问题
HMAC 签名验证失败
设备证书问题
代理服务器问题
云存储问题
已发布的固件升级
检查升级是否已经配置规则,以及对应设备是否满足该规则。
未发布的固件升级
检查设备是否已加入升级测试白名单。
如果白名单页面设备版本显示未知,会造成检测不到升级,一般有以下几种原因,请逐一确认。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈