更新时间:2025-02-05 03:20:15下载pdf
设备重置是把设备恢复到配网前状态的操作,本文将介绍 TuyaOS 设备重置功能。
根据触发源不同,可以分为本地重置和 App 重置。根据重置后设备所处的状态,又可分为:
普通重置(解除绑定):仅解除设备与云端的绑定关系,云端和设备本地都保留数据。设备重新激活后,与绑定前的数据是一致的。
恢复出厂重置(解绑并清除数据):除了解除设备与云端的绑定关系,还清空云端和设备本地的数据(开发者无需再删除本地的 DB 文件),相当于全新的设备。
tuya_iot_wf_gw_unactive
tuya_iot_wf_gw_reset
ty_sdk_app_reset_cb
回调函数是注册在 TuyaOS SDK 里面,进行重置类型的接收。只要完成了回调函数的注册,不管是哪种重置方式,TuyaOS SDK 都会触发上述回调函数。您可以在该回调函数中执行自定义的行为,例如清空应用的数据等行为。
#include <string.h>
#include <stdio.h>
#include "tuya_iot_wifi_api.h"
/**
* @brief SDK 适配层移除回调
* @param [GW_RESET_TYPE_E] type -> 重置的原因
* @return [*]
*/
VOID ty_sdk_app_reset_cb(GW_RESET_TYPE_E type)
{
printf(" gw reset success. please restart the %d\n", type);
switch (type) {
case GW_LOCAL_RESET_FACTORY: //本地恢复出厂设置
//清除必要业务数据,注意不必再去删除 DB 文件
//注意:最后设备要重启,才能重新进入配网模式
break;
case GW_REMOTE_RESET_FACTORY: //App 下发移除设备并清除数据
//清除必要业务数据,注意不必再去删除 DB 文件
//注意:最后设备要重启,才能重新进入配网模式
break;
case GW_LOCAL_UNACTIVE: //本地重置
//您自行在业务上实现逻辑,例如灯效,声音等
//注意:最后设备要重启,才能重新进入配网模式
break;
case GW_REMOTE_UNACTIVE: //App 重置
//您自行在业务上实现逻辑,例如灯效,声音等
//注意:最后设备要重启,才能重新进入配网模式
break;
case GW_RESET_DATA_FACTORY:// 激活时数据重置
/**
* App 执行解绑并清除数据重置时,或者重新配网的 App 账户与原 App 账户不是同一个家庭账号,则
* 激活时会收到该类型,设备不能重启
* 您可以实现一些业务上的逻辑。
*/
break;
default:
break;
}
return;
/***您根据收到的重置类型,通过事件的形式发送出去,在业务上建立独立任务处理。不要在回调里做复杂事情****/
}
/**
* @brief main 初始化
* @param [*]
* @return [*]
*/
OPERATE_RET main(void)
{
TY_IOT_CBS_S iot_cbs = {0};
iot_cbs.gw_reset_cb = ty_sdk_app_reset_cb; //App 移除配网回调 注册给 TuyaOS SDK
/****具体实现请参考 Demo*****/
/****具体实现请参考 Demo*****/
return 0;
}
// 本地普通重置
OPERATE_RET test_local_unactive(void)
{
OPERATE_RET rt = OPRT_OK;
TUYA_CALL_ERR_LOG(tuya_iot_wf_gw_unactive()); //可以使用按键组合的方式,将设备移除,该接口不会清除云端信息,再次配网后,设备 ID 不变,清扫记录、楼层地图依然存在
return rt;
}
// 本地恢复出厂重置
OPERATE_RET test_local_reset(void)
{
OPERATE_RET rt = OPRT_OK;
TUYA_CALL_ERR_LOG(tuya_iot_wf_gw_reset()); //可以使用按键组合的方式,将设备恢复初始状态,该接口会清除云端保存的该设备信息,例如,清扫记录、楼层地图、设备 ID 等。注意本地也要清除相关信息
return rt;
}
/* tuya sdk gateway reset type */
typedef enum {
GW_LOCAL_RESET_FACTORY = 0,
GW_REMOTE_UNACTIVE,
GW_LOCAL_UNACTIVE,
GW_REMOTE_RESET_FACTORY,
GW_RESET_DATA_FACTORY, //need clear local data when active
} GW_RESET_TYPE_E;
/**
* @brief tuya_iot_wf_gw_unactive
*
* @return OPERATE_RET
*/
OPERATE_RET tuya_iot_wf_gw_unactive(VOID);
/**
* @brief tuya_iot_wf_gw_reset
*
* @return OPERATE_RET
*/
OPERATE_RET tuya_iot_wf_gw_reset(VOID);
可以通过以下两种方式处理后,再重新配网,就会变成全新的设备 ID。
如果配网有切换账号的行为,TuyaOS SDK 会通过 iot_cbs.gw_reset_cb
回调通知业务 GW_RESET_DATA_FACTORY
状态。开发者拿到该状态后,删除本地的总清扫时间、总清扫面积、总清扫次数的 DP 值,并将这些 DP 上报云端与 App 端同步即可。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈