【已解决】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

网关设备, 语音中控设备等
18625210969
Posts: 27

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

Dingtalk_20230215093006.jpg
Last edited by 18625210969 on 2023年 Feb 17日 16:59, edited 1 time in total.

Tags:
Kyson
Posts: 189

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 分钟。

18625210969
Posts: 27

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

log如附件,6七分钟时间,没看到进入回调。
另外有没有比较安全一点的发log的方式?里面可能涉及项目信息和产品信息。

Dingtalk_20230215111150.jpg
子设备在线离线测试.log
(232.54 KiB) Downloaded 54 times
Kyson
Posts: 189

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

你是在哪里调用 tuya_iot_set_dev_hb_cfg 接口的呢?没看到有调用该接口的日志,该接口会打印 set_dev_hb cfg 关键字。

对于上传的日志,你可以进行脱敏处理再上传,或者走工单的方式提问。

18625210969
Posts: 27

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

例程user_dev_svc_init中,如下图

Dingtalk_20230215170242.jpg
Kyson
Posts: 189

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

是不是 tp 类型不一致?你可以加些调试打印看看,看下有没有调用配置心跳接口。

18625210969
Posts: 27

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

加了调试,发现问题了,但不知从哪里解决?
tuya_iot_dev_traversal()返回NULL,如图:

Dingtalk_20230216140351.jpg
Kyson
Posts: 189

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

SDK 还没初始化,你把这接口放到 tuya_iot_sdk_start 之后试试看。

18625210969
Posts: 27

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

放在tuya_iot_sdk_start之后了,仍然NULL,如图:

Dingtalk_20230216155049.jpg
Kyson
Posts: 189

Re: 【求助】【网关】【TuyaOS SDK】没有进入子设备心跳回调函数

我看有配置心跳的打印了,放之前应该是正常的。NULL 是因为循环结束了,你在 if 语句加个打印就会看到。

Post Reply