更新时间:2024-09-13 07:26:03下载pdf
设备重置是把设备恢复到配网前状态的操作,本文将介绍 TuyaOS 设备重置功能。
根据触发源不同,可以分为本地重置和 App 重置。根据重置后设备所处的状态,又可分为:
普通重置(解除绑定):仅解除设备与云端的绑定关系,云端和设备本地都保留数据。设备重新激活后,与绑定前的数据是一致的。
恢复出厂重置(解绑并清除数据):除了解除设备与云端的绑定关系,还清空云端和设备本地的数据(您需要手动把本地的 DB 文件删除),相当于全新的设备。
tuya_iot_wf_gw_unactive
tuya_iot_wf_gw_reset
ty_sdk_app_reset_cb
回调函数是注册在 TuyaOS SDK 里面,进行重置类型的接收。只要完成了回调函数的注册,不管是哪种重置方式,TuyaOS SDK 都会触发上述回调函数。您可以在该回调函数中执行自定义的行为,例如清空应用的数据、删除 tuya_user.db
和 tuya_user.db_bak
文件等。
#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()); //可以使用按键组合的方式,将设备移除,该接口不会清除云端信息
return rt; //再次配网后,设备 ID 不变,清扫记录、楼层地图依然存在
}
// 本地恢复出厂重置
OPERATE_RET test_local_reset(void)
{
OPERATE_RET rt = OPRT_OK;
TUYA_CALL_ERR_LOG(tuya_iot_wf_gw_reset()); //可以使用按键组合的方式,将设备恢复初始状态,该接口会清除云端保存的该设备信息
return rt; //例如,清扫记录、楼层地图、设备 ID 等。注意本地也要清除相关信息
}
/* 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。
tuya_user.db
和 tuya_user.db_bak
文件。tuya_user.db
和 tuya_user.db_bak
文件。该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈