看zstack的绑定机制,绑定是靠cluster ID和endpoint ID 来识别不同的设备,这样就有个疑问了,比如,在ZHA应用里面,有很多个符合ZCL规范的灯,这些灯,cluster ID和 endpoint ID是一样的,那在一个网络中绑定的时候,要怎么区分这些具有相同类型的设备来实现不同的控制?
一直很疑惑,是只能靠区分不同设备的扩展地址来区分吗?
Yue TANG:
看看ZCL的GROUPS, SCENES,IDENTIFY 等其他cluster. 印象中ZLL就是使用这些簇可以实现非常灵活地灯光控制,包括单控,群控,场景等。
zdahai:
回复 Yue TANG:
hi,TY
我想了解的是,如果做一个产品灯,这个灯符合ZCL规范的,那我做一批这样的灯,这些灯的属性等都是一样的(因为是下载的同样的软件),那问题来了:
1. 如果有2个以上的灯安装应用在同一个网络下的时候,这些相同的灯,要怎么区分开来,比如 节点SW1 控制 light 1, 节点SW2控制 light2…节点SW n 控制light n,这里的所有light n 其实都是相同的东西, 绑定要怎么去实现?
2. 在ZHA里面,如果用EZMode,问题1中的应用场合会冲突吗?
不知道你明白我疑问没有?
Yue TANG:
回复 zdahai:
如果你纯灯光应用,建议你用ZLL来做,ZLL里遥控器会记录所有灯的信息包括短地址,用如下结构,再配合group,scense等簇,就可以非常灵活地控制。
typedef struct{ zllRemoteLinkedTarget_t arr[MAX_LINKED_TARGETS];} zllRemoteLinkedTargetList_t;
typedef struct{ uint16 Addr; // linked target's short address uint16 profileID; uint16 deviceID; uint8 deviceVersion; uint8 EP; // linked target's end-point} zllRemoteLinkedTarget_t;
如果你是HA, 老实说,不太适合你这种单一逻辑设备的应用,程序还一样。我的建议是,除了Ezmode bonding,可以考虑使用Z-Stack Commissioning Cluster 。
一般要做一个手机app, 通过手机和网关配合,可视地进行配对。如下例子,仅供参考
http://processors.wiki.ti.com/index.php/ZigBee_Lighting_Gateway?keyMatch=android%20ZLL&tisearch=Search-EN
zdahai:
回复 Yue TANG:
谢谢TY,我的应用是HA,实验了一下,自动上电绑定是不行,通过一个按键触发绑定的方式,是可以实现的,这样就有点麻烦,比如,灯这些,你必须在安装之前就先绑定好,要不然安装到房顶的时候,去按按键操作就不太方便了,另外,你说的ZLL遥控器的方式去触发绑定,感觉也不是很方便,我看资料说的,是需要遥控器靠近灯来操作的,但如果灯安装到房顶了,这距离就比较大,没办法靠近了。所以能上电自动绑定就最好了,这种方式才能称上全自动。不知道还有没有别的思路能实现自动绑定?
另外,测试了绑定的实验,有发现,如果是终端按键控制协调器的LED灯,LED灯的状态变化响应时间跟按键延迟很小很小,但如果是反过来,用协调器上的按键控制终端的LED灯,LED灯的状态变化响应时间会有1s左右延迟,抓包发现,协调器不是马上就发包,而是有延迟一段时间才有包。不知道是哪里可以设置?
这个问题在另外一个帖子里:
http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/104943.aspx
这种现象是正常吗?谢谢!