zigbee 绑定

一    ,两台zigbee设备绑定成功的两个必要条件:  1,profileID相同    2,clusterID对应(即一个设备的输出 和输入分别等于另一台设备的输入和输出)






二  ,两台zigbee设备之间完成通信,主要有一下几种方式:  1,广播发送,这种方式不需要知道目标设备的16位网络地址,因为网络中的所有设备都会收到信息,相应的,

此方式对系统的开销(比如耗电量)也是最大 的    ;                2 ,单播发送,这种方式对系统的开销最小,也最常用。要实现单播发送,两台设备必须先绑定或者匹配(类似绑定的操作);其实绑定操作和匹配操作的区别并不大,说实话我也不知道这两者的具体区别,先不管吧,只要学会绑定就够用了。下面是绑定的具体步骤:

A为协调器,B和C是需要建立绑定的两个EndDevice。

节点B和C分别通过按键机制调用函数ZDP_EndDeviceBindReq,这个函数将会向协调器发出绑定请求,如果在16S内两个节点都执行了此函数,协调器就会协助实现绑定。绑定表放在OutCluster那边,即绑定表存放在输出控制命令的那边。

         注意:

#        节点B和C需具有互补性,即B的outcluster是C的incluster。

#       绑定后只能是outcluster节点B给incluster节点C发送控制命令,因为只有B中保存C的信息(绑定表),不能反过来控制。

#        规定的时间

          这个时间由参数APS_DEFAULT_MAXBINDING_TIME决定,默认为16秒。


绑定成功之后,两台设备就可以发送消息了,但是 只能是outcluster节点B给incluster节点C发送控制命令,而且B向C发送控制消息时,并不需要知道C设备的16位网络地址,那消息怎么传送到C设备呢?答案是通过ep描述符和ClusterID  ,举例如下:



                                      发送参数中afAddrType_t *dstAddr如下:
                                       dstAddr.addrMode = afAddrNotPresent;
                                       dstAddr.endPoint = 注册的EP号;
                                       dstAddr.addr.shortAddr = 可以忽略;
              endPointDesc_t *srcEP 为注册的EP描述
              uint16 cID           为注册的命令号如TOGGLE_LIGHT_CMD_ID   //ClusterID  
              其它参数正常









                                    
 3 ,组播发送,这种发送介于单播发送和广播发送之间,可灵活控制目标设备的数量,即只向指定组里面的设备发送,想接受消息的设备只需要在本地创建组,并向aps注册组即可,举例如下:

SampleApp_Group.ID = 0x0001;
  osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
  aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );

















  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BINDING KuangJunBin:本文是作者根据TI Z-Stack开发文档,ZigBee Specification-2007,《Zigbee Wireless Networking》等英文资料整合和翻译而成,采用中英双语对照方便读者理解,文中翻译不当之处,望广大同行不吝赐教。推广ZigBee技术,提高国内电子行业的国际影响力,是我们无线通讯工程师的愿景。本文欢迎转载,请保留作者信息和出处,作为支持我继续努力前行的动力,谢谢! E-mail:kuangjunbin@gmail.com In the Zigbee 2006 release,the binding mechanism is implemented in all devices and is called source binding. Binding allows an application to send a packet without knowing the destination address,the APS layer determines the destination address from its binding table,and then forwards the message on to the destination application(or multiple applications)or group. ZigBee2006版本中规,在全部节点中实现机制,并将其称为源机制允许一个应用服务在不知道目标地址的情况下向对方(的应用服务)发送数据包。发送时使用的目标地址将由应用支持子层(APS)从表中自动获得,从而能使消息顺利被目标节点的一个或多个应用服务,乃至分组接收。 Binding Table 1.Defined in RAM,but can be saved in Flash if the NV_RESTORE compiler option is used 2.Stored on source node(REFLECTOR compiler option required) 3.Entries map messages to their intended destination 4.Each entry in the binding table contains the following: typedef struct { uint16 srcIdx;//Source index uint8 srcEP;//Source endpoint uint8 dstGroupMode;//Specifies normal or group addressing uint16 dstIdx;//Destination index or group address uint8 dstEP;//Destination endpoint uint8 numClusterIds;//Number of cluster IDs in the clusterIdList below uint16 clusterIdList[MAX_BINDING_CLUSTER_IDS]; }BindingEntry_t; 表 1. 表存放的位置是内存中预先义的RAM块,如果编译选项NV_RESTORE被激活,也能保存在Flash里。 2. 表放置在源节点(需要激活编译选项REFLECTOR)。 3. 表的条目把需要发送的消息映射到它们的目标地址上。 4. 表中每个条目(entry)包括以下内容: 表条目结构体的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值