1) 开发包全名:
tuyaos-gw-integrated_3.5.6_ssd201_eth-wifi-gw-com_0.0.1.tar.gz
2) 问题现象
子设备心跳保活超时回调函数.dev_hb,本来在这个回调函数中自行检测子设备状态,但是log监测始终没有进入这个回调函数,子设备却一直显示在线。
3) 操作流程
子设备心跳配置:tuya_iot_set_dev_hb_cfg(dev_if->id, 120, 3, FALSE);请问里面参数具体什么意思?超时时间到底怎么计算?
4) 问题时间
2023-02-14
【已解决】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
-
- Posts: 27
【已解决】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
Last edited by 18625210969 on 2023年 Feb 17日 16:59, edited 1 time in total.
Tags:
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
完整的网关日志发一下。
Code: Select all
/**
* @brief set sub-device heartbeat timeout param.
*
* @param dev_id sub-device id
* @param hb_timeout_time heartbeat timeout, hb_timeout_time==0xffffffff,always online;if is_sleep==flase, the hb_timeout_time is invaild.
* @param max_resend_times max resend times, default set is 2, don't modify, if you don't know.
* @param is_lowpower TRUE:this sub-device ill skip the heartbeat check.
* @return OPERATE_RET OPRT_OK is success
*/
OPERATE_RET tuya_iot_set_dev_hb_cfg(IN CONST CHAR_T *dev_id,IN CONST TIME_S hb_timeout_time, IN CONST UINT_T max_resend_times, BOOL_T is_lowpower);
tuya_iot_set_dev_hb_cfg 接口在 API 文档上是有说明的。
- hb_timeout_time: 表示超时时间,单位是秒,距离上一次刷新心跳(tuya_iot_fresh_dev_hb)的时间超过该值则认为设备离线。
- max_resend_times: 表示最大查询次数,设备超时没有刷新心跳,会触发
dev_hb
回调查询子设备心跳,查询的次数超过该值,则认为设备离线。 - is_lowpower: 表示是否是低功耗设备,低功耗设备不进行心跳查询。
另外,示例上的注释有误,120 对应的是 2 分钟。
-
- Posts: 27
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
log如附件,6七分钟时间,没看到进入回调。
另外有没有比较安全一点的发log的方式?里面可能涉及项目信息和产品信息。
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
你是在哪里调用 tuya_iot_set_dev_hb_cfg
接口的呢?没看到有调用该接口的日志,该接口会打印 set_dev_hb cfg 关键字。
对于上传的日志,你可以进行脱敏处理再上传,或者走工单的方式提问。
-
- Posts: 27
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
例程user_dev_svc_init中,如下图
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
是不是 tp 类型不一致?你可以加些调试打印看看,看下有没有调用配置心跳接口。
-
- Posts: 27
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
加了调试,发现问题了,但不知从哪里解决?
tuya_iot_dev_traversal()返回NULL,如图:
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
SDK 还没初始化,你把这接口放到 tuya_iot_sdk_start
之后试试看。
-
- Posts: 27
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
放在tuya_iot_sdk_start之后了,仍然NULL,如图:
Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数
我看有配置心跳的打印了,放之前应该是正常的。NULL 是因为循环结束了,你在 if 语句加个打印就会看到。