ZigBee组播通信原理



组播通信原理
组播通信:在Zigbee网络,模块可以分组来标记,发送的模块如果组号和网络里面标记模块的组号相对应,那么这些模块就可以
拿到这些无线数据包。


组播的特点:
1,分组中的编号是两个字节(即组号是两个字节)
2,组号必须和已经定义了的端点相关联。
   即:组都是和模块里已经定义了的端点相关联,如果我们说一个模块标记为组0x01,那么这个模块里面至少有一个定义了的
   端点与这个和组(0x01)相关联
 
3,发送模块必须指明发送给哪个组,哪个端点,簇编号,原则上,只要当接收模块的这三个参数匹配上了,才能拿到和处理这样
一个无线数据包。

4,组标记中,同一个模块下的定义的一个组,可以关联多个可用的端点,同一个端点也可以关联多个组。


代码示例:

#define SAMPLEAPP_FLASH_CLUSTERID    2        //簇编号
#define SAMPLEAPP_FLASH_GROUP                 0x0001 //组编号


afAddrType_t  SampleApp_Flash_DstAddr;    //组播
// Setup for the flash command's destination address - Group 1
SampleApp_Flash_DstAddr.addrMode          = (afAddrMode_t)afAddrGroup;//注意这里发送模式为组播
SampleApp_Flash_DstAddr.endPoint          = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr.shortAddr    = SAMPLEAPP_FLASH_GROUP;//注意这里是接收模块的组编号


endPointDesc_t SampleApp_epDesc;
SampleApp_epDesc.endPoint   = SAMPLEAPP_ENDPOINT;//模块的端点
SampleApp_epDesc.task_id    = &SampleApp_TaskID;//指明数据由接收方的哪一个任务来处理
SampleApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
SampleApp_epDesc.latencyReq = noLatencyReqs;
afRegister( &SampleApp_epDesc );//绑定

aps_Group_t   SampleApp_Group;
SampleApp_Group.ID = 0x0001; //接收模块的组编号
osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );//把组跟端点关联,一定要端点关联

uint8         SampleApp_TransID = 0; //发送成功的帧条数,由底层负责更新

uint8 buffer[3];
uint16 flashTime = 856;//组播的数据
buffer[0] = (uint8)(SampleAppFlashCounter++);
buffer[1] = LO_UINT16( flashTime );
buffer[2] = HI_UINT16( flashTime );
if ( AF_DataRequest( &SampleApp_Flash_DstAddr,
                     &SampleApp_epDesc,
                     SAMPLEAPP_FLASH_CLUSTERID,
                     3,
                     buffer,
                     &SampleApp_TransID,
                     AF_DISCV_ROUTE,
                     AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{

}




代码很简单,有以下几点需要说明一下:

1,在使用上广播没有什么区别,仅仅是地址模式、地址内容不一样
2,可以调用aps_RemoveGroup方法解除关联。
2,协调器用到了组,要引入#include "aps_groups.h" 头文件。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zigbee是一种无线通信协议,它基于IEEE 802.15.4标准,并且使用了低功耗和短距离的无线网络。在Python中,我们可以使用第三方库来实现Zigbee通信Zigbee通信原理如下: 1. 网络拓扑结构:Zigbee网络可以采用星型、网状或混合结构。其中,一个设备作为协调器(Coordinator)负责创建和管理整个网络,其他设备则作为终端设备(End Device)或路由器(Router)连接到协调器。 2. 层次结构:Zigbee通信采用多层协议栈,包括物理层(Physical Layer)、介质访问控制层(MAC Layer)、网络层(Network Layer)和应用层(Application Layer)。物理层负责无线信号的传输,MAC层处理数据的帧结构、数据传输和网络拓扑管理,网络层处理路由选择和数据包转发,应用层提供各种应用程序接口。 3. 数据传输:Zigbee使用小数据包传输,每个数据包包含目标地址、源地址、数据内容和校验等字段。通信过程中,设备间通过无线信道进行数据的发送和接收。 在Python中,我们可以使用Zigpy库来实现Zigbee通信。Zigpy是一个基于Python的Zigbee库,它提供了对Zigbee网络的操作和控制。通过Zigpy,我们可以创建Zigbee网络、添加设备、发送和接收数据等。同时,我们还可以使用其他第三方库来处理与Zigbee设备的通信,如Zigbee2mqtt、ZHA等。 需要注意的是,为了实现Zigbee通信,我们需要硬件支持,如Zigbee网关、Zigbee模块或开发板。这些硬件设备通常提供相应的API和协议栈,可以与Python进行交互。在使用Python进行Zigbee通信前,我们需要确保硬件设备的兼容性和正确配置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值