Page 1 of 1
【已解决】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 8日 18:35
by clcl
现象:
设备上电后,用 app 控制设备 开/关,能收到网关下发的数据,但过了几十秒之后,这个时候用 app 控制设备 开/关,收不到数据,但上报一直是正常的
详细描述:
低功耗设备,设备上电后,入网成功,
然后网关下发了: cluster 0xEF00, cmd 0x07,
然后我上报了所有的 dp,上报都是成功的,
用 app 控制设备 开/关,能收到下发的dp
然后,过了几十秒之后
如果这个时候用 app 控制设备 开/关,网关不会下发控制命令,抓包器也抓不到报文
但设备主动上报数据没问题(周期性上报电量)
然后我一直点 app 上的 控制按钮,也没反应,也没 log
后面我重启设备,重启之后,入网成功后,网关会把刚刚没下发的dp,一下全部发过来
一直刷 log
想问一下这什么原因?对于低功耗设备,网关下发数据有什么特殊的策略吗?还是程序的配置有问题?
目前给人的感觉是:网关只会在设备上电后的几十秒内下发数据给设备,过了这个时间后,app控制命令,都被网关暂时缓存起来了,等到下次设备再上电,才会一起发给设备
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 9日 16:02
by clcl
我发现初始化时将设备类型从 ZG_SLEEPY_END_DEVICE 改为 ZG_END_DEVICE,就可以收到网关下发的数据
Code: Select all
STATIC VOID_T app_end_device_node_init(VOID_T)
{
TAL_ZG_NODE_CFG_T node_config = {
.node_type = ZG_END_DEVICE,
.tx_power = 10,
.scan_interval = 200,
.scan_duration = ZG_SCAN_DURATION_3,
.config.ed_cfg.poll_config.forever_flag = 0,
.config.ed_cfg.poll_config.fast_swicth_parent = 1,
.config.ed_cfg.poll_config.interval_ms = 1000,
.config.ed_cfg.poll_config.max_failed_times = 5,
.config.ed_cfg.poll_config.duration_after_data_ms = 2000,
.config.ed_cfg.poll_config.duration_after_join_ms = 30000,
.config.ed_cfg.poll_config.duration_after_rejoin_ms = 15000,
.config.ed_cfg.rejoin_config.power_on_active = 1,
.config.ed_cfg.rejoin_config.send_data_active = 1,
.config.ed_cfg.rejoin_config.attempts = 3,
.config.ed_cfg.rejoin_config.interval = 1000,
};
//config zigbee node
tal_zg_node_config(&node_config);
}
但改完后,会一直收到 cluster 0x00, cmd 0x00,然后过一段时间就自动重启了
重启原因是软复位
Code: Select all
[D] : app general msg cb: cluster 0x00, cmd 0x00, payload_len: 2
[D] : payload:
01 00
[D] : app general msg cb: cluster 0x00, cmd 0x00, payload_len: 2
[D] : payload:
01 00
[D] : app general msg cb: cluster 0x00, cmd 0x00, payload_len: 2
[D] : payload:
01 00
[D] : app general msg cb: cluster 0x00, cmd 0x00, payload_len: 2
[D] : payload:
01 00
[D] : app general msg cb: cluster 0x00, cmd 0x00, payload_len: 2
[D] : payload:
01 00
[D] : app general msg cb: cluster 0x00, cmd 0x00, payload_len: 2
[D] : payload:
01 00
[D] : app general msg cb: cluster 0x00, cmd 0x00, payload_len: 2
[D] : payload:
01 00
省略...
[I] : wopener device init start ...
[I] : poweron reset reason: 4, msg: Software triggered reset (TY_RST_SOFTWARE)
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 11日 10:21
by huanghuan
您好,你使用的zigbee子设备开发框架及版本是哪个?
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 11日 11:03
by clcl
如图
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 11日 12:10
by clcl
现在我在 JOIN_OK 事件里执行了 tal_zg_poll_start(); 这个函数,正常了
现在上电几十秒后,也能够正常接收网关的下发数据了,改回原来的 ZG_SLEEPY_END_DEVICE 类型也可以用了
Code: Select all
case TAL_ZG_NWK_JOIN_OK:
{
TAL_PR_TRACE("nwk_join_ok---\r\n");
linp_async_exec(5000, _pub_all_props_cb, NULL);
tal_zg_poll_start();
break;
}
case TAL_ZG_NWK_REJOIN_OK:
{
TAL_PR_TRACE("nwk_rejoin_ok---\r\n");
tal_zg_poll_start();
break;
}
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 11日 15:01
by huanghuan
clcl 2023年 Sep 11日 11:03
如图
图挂了,麻烦再发一下,或者直接说明下相关信息也行
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 11日 15:11
by clcl
Dev Framework:
Type Dev Kit: Sub-Device Development:Zigbee Device Development Kit
Description: TuyaOS zigbee SDK based on EFR32MG21A020 platform.
TuyaOS Version: TuyaOS-3.6.1
Component Dev Kit(s): tuyaos-subdev-zg_1.0.8_efr32_zigbee_zigbee-com_0.0.17
Development Platform:
wireless SoC silabs Zigbee EFR32MG21A020
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 12日 14:20
by huanghuan
你好,如果你需要app下发的数据,低功耗设备可以及时接收,而不需要本地按键触发等动作唤醒后来接收。可以将.config.ed_cfg.poll_config.forever_flag 置为 1
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 12日 14:24
by huanghuan
Code: Select all
forever_flag 表示在网时设备是否定时发送data request向父节点请求数据;
建议开启forever_flag的设备,一般会有网关下发给该设备数据的机制,比如单火开关;
像门磁等只有状态上报而没有下发交互的设备,可以将forever_flag置为false。
fast_swicth_parent 一般用于forever_flag false 时快速判断是否与父节点断开链接
interval_ms 是设置 data request的发送间隔
max_failed_times 是发送多少次data request直到触发rejoin
duration_after_data_ms / interval_ms 是forever_flag = false时,在网发送一次数据后持续的data request次数
duration_after_join_ms / interval_ms 是forever_flag = false时,配网成功时持续的data request次数
duration_after_rejoin_ms / interval_ms 是forever_flag = false时,rejoin成功时持续的data request次数
Code: Select all
power_on_active 是 lost状态 上电主动触发rejoin机制,建议开启
send_data_active 是 lost状态 发数据时触发rejoin机制,建议开启
attempts 是lost状态 触发rejoin机制一组发多少次beacon request
attempts 是lost状态 触发rejoin机制一组隔多久发一次beacon request
如上图所示:一次rejoin尝试3次beacon request,每次beacon request间隔3秒
Re: 【求助】低功耗设备,app控制设备 开/关,但网关不下发数据,但上报没问题
Posted: 2023年 Sep 12日 14:31
by clcl