更新时间:2022-02-17 07:07:14下载pdf
固件升级分为 设备升级 和 MCU 升级 两种,固件升级主要用于迭代设备功能以及修复功能缺陷。
接口说明
Wi-Fi 设备、Zigbee 网关、摄像头等设备的固件初始化接口。
ITuyaOta newOTAInstance(String devId);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
实例代码
ITuyaOta iTuyaOta = TuyaHomeSdk.newOTAInstance("devId");
接口说明
ITuyaOta newOTAInstance(String meshId, String devId, String nodeId);
参数说明
参数 | 说明 |
---|---|
meshId | Zigbee 网关 ID |
devId | Zigbee 子设备 ID |
nodeId | Zigbee 子设备 Mac 地址,可以从子设备的 DeviceBean 查询 |
实例代码
ITuyaOta iTuyaOta = TuyaHomeSdk.newOTAInstance("meshId", "devId", "nodeId");
接口说明
iTuyaOta.getOtaInfo(new IGetOtaInfoCallback({
@Override
void onSuccess(List<UpgradeInfoBean> list) {
}
@Override
void onFailure(String code, String error) {
}
});
UpgradeInfoBean
参数说明
字段 | 类型 | 描述 |
---|---|---|
upgradeStatus | int | 升级状态
|
version | String | 最新版本 |
currentVersion | String | 当前版本 |
timeout | int | 超时时间,单位:秒 |
upgradeType | int | 升级方式
|
type | int | 待升级设备
|
typeDesc | String | 模块描述 |
lastUpgradeTime | long | 上次升级时间,单位:毫秒 |
接口说明
iTuyaOta.setOtaListener(new IOtaListener() {
@Override
public void onSuccess(int otaType) {
}
@Override
public void onFailure(int otaType, String code, String error) {
}
@Override
public void onFailureWithText(int otaType, String code,
OTAErrorMessageBean messageBean) {
}
@Override
public void onProgress(int otaType, int progress) {
}
@Override
public void onTimeout(int otaType) {
}
@Override
public void onStatusChanged(int otaStatus, int otaType) {
// 3.23.0 版本新增,针对于低功耗类设备会通过该方法返回设备等待唤
// 醒状态。此时 otaStatus 参数返回 5
}
});
参数说明
参数 | 描述 |
---|---|
otaType | 升级的设备类型,参考 UpgradeInfoBean 中的 type 字段 |
调用该方法开始升级,调用后注册的 OTA 监听会返回升级状态,以便您构建界面 UI。
接口说明
iTuyaOta.startOta();
接口说明
离开升级页面后要结束进程,回收内存。
iTuyaOta.onDestory();
本章节示例为常见的 Wi-Fi 设备固件升级流程,蓝牙单点及蓝牙 Mesh 请参考 蓝牙技术体系 中对应的章节。
private ITuyaOta iTuyaOta;
private String mDevId = "your_devId";
public void startOTA() {
initOta();
initListener();
checkOTAInfo();
}
//初始化固件信息
private void initOta() {
iTuyaOta = TuyaHomeSdk.newOTAInstance(mDevId);
}
//添加固件升级监听
private void initListener() {
iTuyaOta.setOtaListener(new IOtaListener() {
@Override
public void onSuccess(int otaType) {
iTuyaOta.onDestroy();
Log.i(TAG, "upgrade success");
}
@Override
public void onFailure(int otaType, String code, String error) {
iTuyaOta.onDestroy();
Log.i(TAG, "upgrade failure, errorCode = " + code
+ ",errorMessage = " + error);
}
@Override
public void onFailureWithText(int otaType, String code, OTAErrorMessageBean messageBean) {
iTuyaOta.onDestroy();
Log.i(TAG, "upgrade failure, errorCode = " + code
+ ",errorMessage = " + messageBean.text);
}
@Override
public void onProgress(int otaType, int progress) {
Log.i(TAG, "upgrade progress = " + progress);
}
@Override
public void onTimeout(int otaType) {
iTuyaOta.onDestroy();
Log.i(TAG, "upgrade timeout");
}
@Override
public void onStatusChanged(int otaStatus, int otaType) {
}
});
}
//查询固件升级信息
private void checkOTAInfo() {
iTuyaOta.getOtaInfo(new IGetOtaInfoCallback() {
@Override
public void onSuccess(List<UpgradeInfoBean> upgradeInfoBeans) {
if (hasHardwareUpdate(upgradeInfoBeans)) {
//开始升级
iTuyaOta.startOta();
}
}
@Override
public void onFailure(String code, String error) {
Log.i(TAG, "Get OTA info failed,errorCode=" + code
+ ",errorMessage=" + error);
}
});
}
private boolean hasHardwareUpdate(List<UpgradeInfoBean> list) {
if (null == list || list.size() == 0)
return false;
for (UpgradeInfoBean upgradeInfoBean : list) {
if (upgradeInfoBean != null && upgradeInfoBean.getUpgradeStatus() == 1)
return true;
}
return false;
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈