【Zigbee】TuyaOS zigbee低功耗传感电池电量逻辑介绍
Posted: 2022年 Dec 15日 11:17
TuyaOS Zigbee传感低功耗电池电量逻辑说明
概念说明
1.首次采集时间:设备在刚上电、入网时,会有较多任务要处理,耗电较高,此时采集电量会得到偏低值;因此设备会延迟一段时间等待电池回升到稳定值时再进行采集,上报真实的电量值。默认首次采集时间为20min(可配置)。
2.采集等待静默时间:电量采集会选在没有射频收发时进行,如果采集时正处于射频收发,则顺延静默时间再进行采集。注:TuyaOS暂不支持该功能,为预留功能选项,后续增加。
3.最大采集周期:设备会在这个间隔内进行一次电量采集。
逻辑介绍
1.功能启动与停止:电池电量逻辑在入网、在网重上电时启动;在本地离网、远程离网时停止。
2.功能逻辑:
1)启动时,立即上报100%电量,刷新APP面板显示。
2)开启定时器,延迟首次采集时间
,采集真实电量值并上报,APP显示真实值。
3)每隔最大采集周期
采集一次电量,暂存于RAM中。
4)到达心跳上报时间时,上报RAM中的电量值,并更新到属性。
5)不可充电电池电量不允许回升。
6)当电量在一个心跳上报周期内下降超过20%时,当次心跳只上报下降20%,剩余的等下个周期上报。
7)当实际电量低于20%时,心跳周期时间降低至25%,加快低电量上报。
3.流程图
使用说明
初始化:
Code: Select all
/**
* @description: oem init
* @param [in] none
* @return: none
*/
STATIC VOID_T app_oem_init(VOID_T)
{
...
#if APP_BATTERY_SUPPORT
TBL_BATTERY_INFO_T bat_info = TBL_BATTERY_INIT_INFO;
tbl_battery_config_init(&bat_info, NULL, 0);
#endif
}
逻辑启动:
Code: Select all
/**
* @brief zigbee network network change callback(user can rewrite this API)
*
* @param[in] status: network status
* @return VOID_T
*/
VOID_T tal_zg_nwk_status_changed_callback(TAL_ZG_NWK_STATUS_E status)
{
STATIC BOOL_T power_on_rejoin = TRUE;
switch (status)
{
...
case TAL_ZG_NWK_JOIN_OK:
{
USER_PR_DEBUG("nwk_join_ok---\r\n");
#if APP_BATTERY_SUPPORT
tbl_battery_start();
#endif
break;
}
case TAL_ZG_NWK_REJOIN_OK:
{
USER_PR_DEBUG("nwk_rejoin_ok---\r\n");
if (power_on_rejoin == FALSE) {
//Normal rejoin, sleep dev don't need care.
break;
}
...
#if APP_BATTERY_SUPPORT
tbl_battery_start();
#endif
power_on_rejoin = FALSE;
break;
}
...
case TAL_ZG_NWK_REMOTE_LEAVE:
{
#if APP_BATTERY_SUPPORT
tbl_battery_stop();
#endif
break;
}
case TAL_ZG_NWK_LOCAL_LEAVE:
{
USER_PR_DEBUG("nwk_local_leave---\r\n");
#if APP_BATTERY_SUPPORT
tbl_battery_stop();
#endif
break;
}
...
}
}