一个协调器下面挂多个类型的终端(开关,插座,灯)
比如说我要控制所有的灯同时亮灭,可以在灯的初始化里面预设相同的组ID
那如果我要组播控制某几个灯亮,另外几个灯灭,这个怎么实现
因为灯默认的组ID都是一样的(不可能每个灯都下载不一样的程序),
能不能在协调器这边直接控制某个终端加如某个组和从某个组退出来?具体如何实现?
如果在在协调器这边直接控制某个终端加如某个组和从某个组退出来,终端这边要不要做什么初始化?
YiKai Chen:
协调器这边可以用 zclGeneral_SendGroupAdd/zclGeneral_SendGroupRemove來去控制某个终端加入某个组和从某个组退出来,终端这边要加上預編譯ZCL_GROUP
Alvin Chen:
一个设备可以加入多个组。
Alvin Chen:
回复 Alvin Chen:
关于GROUP和SENCE先去看下面的文档:
dev.ti.com/…/node
Part 2: Groups and Scenes Clusters
user5367314:
回复 YiKai Chen:
请问睡眠的终端是否可以接收组播数据?
看到文档描述睡眠的终端可以接收广播数据,但是没说是否可以接收组播数据?
NWK_BROADCAST_SHORTADDR_DEVALL (0xFFFF) – the message will be sent to all devices in the network
(includes sleeping devices). For sleeping devices, the message is held at its parent until the sleeping device polls for
it or the message is timed out (NWK_INDIRECT_MSG_TIMEOUT in f8wConfig.cfg).
YiKai Chen:
回复 user5367314:
睡眠的终端是否可以接收组播数据?
如果剛好醒著的話可以收到,但是一般都會漏接
Alvin Chen:
回复 user5367314:
睡眠设备无法接收任何信息。如果在发送端还在重发中刚好唤醒了可以拿到包。
睡眠时关闭了RF跟 什么发送方式无关。如果要求实时性以及不丢包就直接不做低功耗设备,用ZR。
user5367314:
回复 YiKai Chen:
我这边的睡眠终端是每秒POLL一次的,
协调器默认的HOLD时间是7秒,所有我的睡眠终端应该能收到组播数据对吧?
文档里说. For sleeping devices, the message is held at its parent until the sleeping device polls for
it or the message is timed out
Alvin Chen:
回复 user5367314:
你这样是可以的,如果超时就会被释放掉,但是感觉1s 一次poll rate 在功耗上意义不是很大。
YiKai Chen:
回复 user5367314:
HOLD时间是7秒是給indirect message的,不是broadcast跟groupcast
user5367314:
回复 YiKai Chen:
那3.0.2里默认的broadcast跟groupcast 协调器端的hold时间是多长?