ZigBee轻链路帧生成与解码
此示例演示如何生成和解码ZigBee®Light Link应用程序配置文件的帧[1使用ZigBee和UWB的通信工具箱™库。
背景
ZigBee标准[2指定低速率无线个人区域网络(lr - wpan)的网络层(NET或NWK)和应用层(APP或APL)。这些NET和app层规范建立在IEEE®802.15.4™的PHY和MAC规范之上[3.].ZigBee设备应用于家庭自动化和传感器网络,与物联网(IoT)趋势高度相关。
ZigBee应用层由多个子层组成:(我)应用程序支持子层(APS)(2)ZigBee集群库(ZCL)。
APS和ZCL头遵循所有应用程序概要文件和ZigBee集群的通用格式(见[2]和2.4在[4),分别)。的ZCL有效载荷只在某些集群中使用,并且遵循特定于集群的格式。通用的APS和ZCL报头的生成和解码在ZigBee家庭自动化帧生成和解码的例子。这个示例演示了特定于集群的ZigBee轻链路ZCL有效负载的生成和解码。
集群和命令
在轻连接应用概要中指定的7个集群中[1,此示例生成并解码以下集群的帧:
除了说明的命令之外,本示例还提供了为上述五个集群的所有命令生成和解码帧的实现(参见进一步的探索查看完整列表)。
识别集群ZCL负载的生成与解码
一个无线个域网。IdentifyFrameConfig
configuration对象用于生成和解码Identify集群的ZCL有效负载。这样的对象描述Identify集群有效负载和所有适用的属性。的无线个域网。IdentifyFrameGenerator
函数接受一个无线个域网。IdentifyFrameConfig
对象,描述识别集群有效负载,并以字节为单位输出生成的有效负载。下面的代码为要求设备识别4秒的命令创建ZCL有效负载。
%为标识集群创建配置对象identifyConfigTx =无线个域网。IdentifyFrameConfig (...“CommandType”,“确定”,...“IdentifyTime”4);%用于识别集群的帧生成(ZCL有效负载)identifyPayload = zigbee.IdentifyFrameGenerator (identifyConfigTx);
的无线个域网。IdentifyFrameDecoder
函数接受命令名和以字节为单位的识别集群有效负载并输出无线个域网。IdentifyFrameConfig
对象,描述标识集群有效负载。命令名从ZCL头的解码中检索。的“解码家庭自动化ZigBee无线电的ZCL报头”一节ZigBee家庭自动化帧生成和解码的例子。
identifyConfigRx =无线个域网。IdentifyFrameDecoder (“确定”identifyPayload)
CommandType: 'Identify' IdentifyTime: 4
下面的代码可视化了一个“软件灯泡”,它演示了在接收帧中指定的识别效果。
灯泡= plotBulb (“白色”);zigbeeIdentifyBulb(灯泡,identifyConfigRx.IdentifyTime);关闭(灯泡);
颜色控制簇ZCL负载的生成与解码
一个无线个域网。ColorControlFrameConfig
配置对象用于生成和解码颜色控制集群的ZCL有效负载。这样的对象描述颜色控制集群有效负载和所有适用的属性。的无线个域网。ColorControlFrameGenerator
函数接受一个无线个域网。ColorControlFrameConfig
对象,该对象描述颜色控制集群有效负载,并以字节为单位输出生成的有效负载。以下代码生成一个颜色控制集群有效负载,指示照明设备在50分秒(5秒)内逐步将当前颜色(红色)更改为不同的值(绿色)。颜色是用…来描述的x,y根据国际照明委员会(CIE)制定的CIE 1931色彩空间[5].
灯泡= plotBulb (“红色”);
为颜色控制集群创建配置对象colorCtrlConfigTx =无线个域网。ColorControlFrameConfig (...“CommandType”,“搬到颜色”,...“颜色清除剂”, 16384,...“肤色”, 39322,...“时间”, 50);%分秒单位%用于颜色控制集群的帧生成(ZCL负载)colorControlPayload = zigbee.ColorControlFrameGenerator (colorCtrlConfigTx);
的无线个域网。ColorControlFrameDecoder
函数接受命令名和以字节为单位的颜色控制集群有效负载,并输出一个无线个域网。ColorControlFrameConfig
对象,该对象描述颜色控制集群有效负载。命令名从ZCL头的解码中检索。的“解码家庭自动化ZigBee无线电的ZCL报头”一节ZigBee家庭自动化帧生成和解码的例子。
colorCtrlConfigRx =无线个域网。ColorControlFrameDecoder (...“搬到颜色”colorControlPayload)
CommandType: 'Move to Color' ColorX: 16384 colorory: 39322时间:50
下面的命令使用“软件灯泡”来可视化接收帧中指定的颜色控制效果。具体来说,灯泡的颜色在5秒内逐渐从红色变为绿色。
zigbeeMoveBulbColor (...灯泡,...colorCtrlConfigRx。颜色清除剂,...colorCtrlConfigRx。颜色显著的,...colorCtrlConfigRx.Time);
接下来,同样的效果出现在不同的颜色轨迹上(从绿色到紫色)。
colorCtrlConfigTx2 =无线个域网。ColorControlFrameConfig (...“CommandType”,“搬到颜色”,...“颜色清除剂”, 19661,...“肤色”, 6554,...“时间”, 50);colorControlPayload2 =无线个域网。ColorControlFrameGenerator (...colorCtrlConfigTx2);colorCtrlConfigRx2 =无线个域网。ColorControlFrameDecoder (...“搬到颜色”, colorControlPayload2);zigbeeMoveBulbColor (...灯泡,...colorCtrlConfigRx2。颜色清除剂,...colorCtrlConfigRx2。颜色显著的,...colorCtrlConfigRx2.Time);暂停(1.5);
水平控制集群ZCL负载的生成与解码
一个无线个域网。LevelControlFrameConfig
配置对象用于生成和解码级别控制集群ZCL有效负载。这些对象描述了一个级别控制集群有效负载和所有适用的属性。的无线个域网。LevelControlFrameGenerator
函数接受一个无线个域网。LevelControlFrameConfig
对象,该对象描述级别控制集群有效负载,并以字节为单位输出生成的有效负载。以下代码创建一个级别控制集群有效负载,指示设备将其当前级别更改为指定值。
%创建级别控制集群配置对象levelCtrlConfigTx =无线个域网。LevelControlFrameConfig (...“CommandType”,“搬到水平”,...“水平”, 20岁,...“过渡”1);%级别控制集群帧生成(ZCL有效负载)levelControlPayload = zigbee.LevelControlFrameGenerator (levelCtrlConfigTx);
的无线个域网。LevelControlFrameDecoder
函数以字节为单位接受命令名和级别控制集群有效负载,并输出一个无线个域网。LevelControlFrameConfig
对象,该对象描述级别控制集群有效负载。命令名从ZCL头的解码中检索。的“解码家庭自动化ZigBee无线电的ZCL报头”一节ZigBee家庭自动化帧生成和解码的例子。
levelCtrlConfigRx =无线个域网。LevelControlFrameDecoder (...“搬到水平”levelControlPayload)
levelCtrlConfigRx = LevelControlFrameConfig with properties: CommandType: 'Move to Level' Level: 20 TransitionTime: 1
虽然电平控制簇可用于调节光的强度,但颜色控制簇将其留给电平控制簇来控制照明设备颜色的亮度。下面的示例使用接收的电平控制帧来增加灯泡的亮度级别。
zigbeeMoveBulbColor (...灯泡,...colorCtrlConfigRx2。颜色清除剂,...colorCtrlConfigRx2。颜色显著的1...levelCtrlConfigRx.Level);
场景集群ZCL负载的生成与解码
一个无线个域网。SceneFrameConfig
configuration对象用于生成和解码场景集群ZCL有效负载。这样的对象描述了一个场景集群有效负载和所有适用的属性。的无线个域网。ScenesFrameGenerator
函数接受一个无线个域网。ScenesFrameConfig
对象描述场景集群有效负载,并以字节为单位输出生成的有效负载。下面的代码生成一个场景集群有效负载,请求设备传输描述场景的不同帧(查看场景响应)。
%创建场景集群配置对象scenesConfigTx =无线个域网。ScenesFrameConfig (“CommandType”,“场景”,...“GroupID”,“1234”,“SceneID”,“56”);%场景集群帧生成(ZCL有效负载)scenesPayload = zigbee.ScenesFrameGenerator (scenesConfigTx);
的无线个域网。SceneFrameDecoder
函数接受命令名和一个以字节为单位的场景集群有效负载,并输出一个无线个域网。SceneFrameConfig
对象描述场景集群有效负载。命令名从ZCL头的解码中检索。的“解码家庭自动化ZigBee无线电的ZCL报头”一节ZigBee家庭自动化帧生成和解码的例子。
scenesConfigRx =无线个域网。ScenesFrameDecoder (“场景”scenesPayload)
CommandType: 'View Scene' GroupID: '1234' SceneID: '56'
群簇ZCL负载的生成与解码
一个无线个域网。GroupFrameConfig
configuration对象用于生成和解码Groups集群ZCL有效负载。这些对象描述Groups集群有效负载和所有适用的属性。的无线个域网。GroupsFrameGenerator
函数接受一个无线个域网。GroupsFrameConfig
对象描述Groups集群有效负载,并以字节为单位输出生成的有效负载。下面的代码创建了一个Groups集群有效负载,指示设备将指定的组添加到其group表中。
%组集群配置对象的创建groupsConfigTx =无线个域网。GroupsFrameConfig (“CommandType”,“添加组”,...“GroupName”,“食堂”,“GroupID”,“1234”);%分组集群帧生成(ZCL有效负载)groupsPayload = zigbee.GroupsFrameGenerator (groupsConfigTx);
的无线个域网。GroupFrameDecoder
函数接受命令名和以字节为单位的Groups集群有效负载,并输出无线个域网。GroupFrameConfig
对象,描述组集群有效负载。命令名从ZCL头的解码中检索。的“解码家庭自动化ZigBee无线电的ZCL报头”一节ZigBee家庭自动化帧生成和解码的例子。
groupsConfigRx =无线个域网。GroupsFrameDecoder (“添加组”groupsPayload)
CommandType: '添加组' GroupID: '1234' GroupName: 'Dining Hall'
Wireshark解码
生成的帧可以转换为PCAP格式,可以用Wireshark进行分析和可视化[6].这个过程可以作为一个额外的验证步骤,提倡ZigBee和UWB通信工具箱库以符合标准的方式生成和解码帧。
PCAP文件需要用来自所有其他层和子层(MAC、NET、APS、ZCL)的头包住ZCL有效负载。以下命令为本例中生成的ZCL有效负载生成一个PCAP文件,该文件可以用Wireshark加载。
% ZLL配置文件IDzllProfileID = zigbee.profileID (“光链接”);payloadsWithInfo(1) =结构(...“有效载荷”identifyPayload,...“ProfileID”zllProfileID,...“ClusterSpecific”,真的,...“ClusterID”zigbee.clusterID (“确定”),...“CommandType”,“确定”,...“方向”,“上行”);payloadsWithInfo(2) =结构(...“有效载荷”colorControlPayload,...“ProfileID”zllProfileID,...“ClusterSpecific”,真的,...“ClusterID”zigbee.clusterID (“颜色控制”),...“CommandType”,“搬到颜色”,...“方向”,“上行”);payloadsWithInfo(3) =结构(...“有效载荷”levelControlPayload,...“ProfileID”zllProfileID,...“ClusterSpecific”,真的,...“ClusterID”zigbee.clusterID (液位控制的),...“CommandType”,“搬到水平”,...“方向”,“上行”);payloadsWithInfo(4) =结构(...“有效载荷”scenesPayload,...“ProfileID”zllProfileID,...“ClusterSpecific”,真的,...“ClusterID”zigbee.clusterID (“场景”),...“CommandType”,“场景”,...“方向”,“上行”);payloadsWithInfo(5) =结构(...“有效载荷”groupsPayload,...“ProfileID”zllProfileID,...“ClusterSpecific”,真的,...“ClusterID”zigbee.clusterID (“组织”),...“CommandType”,“添加组”,...“方向”,“上行”);%添加来自其他层/子层的标题:MPDUs = zigbeeAddProtocolHeaders (payloadsWithInfo);导出MPDUs到PCAP格式zigbeeExportToPcap (MPDUs“zigbeeLightLink.pcap”);用Wireshark打开PCAP文件
进一步的探索
您可以进一步研究以下生成器和解码函数,以及相关的配置对象:
无线个域网。一个PSFrameConfig
,无线个域网。一个PSFrameGenerator
,无线个域网。一个PSFrameDecoder
无线个域网。ZCLFrameConfig
,无线个域网。ZCLFrameGenerator
,无线个域网。ZCLFrameDecoder
>无线个域网。IdentifyFrameConfig
,无线个域网。IdentifyFrameGenerator
,无线个域网。IdentifyFrameDecoder
无线个域网。ColorControlFrameConfig
,无线个域网。ColorControlFrameGenerator
,无线个域网。ColorControlFrameDecoder
无线个域网。LevelControlFrameConfig
,无线个域网。LevelControlFrameGenerator
,无线个域网。LevelControlFrameDecoder
无线个域网。ScenesFrameConfig
,无线个域网。ScenesFrameGenerator
,无线个域网。ScenesFrameDecoder
无线个域网。GroupsFrameConfig
,无线个域网。GroupsFrameGenerator
,无线个域网。GroupsFrameDecoder
这些实用程序没有文档记录,它们的API或功能将来可能会改变。要查看这些实用程序的源代码,请使用edit函数。例如,输入:
编辑无线个域网。一个PSFrameConfig
在MATLAB®命令行打开无线个域网。一个PSFrameConfig
.
除了本例中演示的命令外,提供的实现还支持下表中列出的命令。中间列的命令可以导出为PCAP文件,Wireshark可以对其进行分析。
选定的参考书目
ZigBee联盟,ZigBee轻连接标准,1.0版,2012年4月5日。
ZigBee联盟,ZigBee规范文档053474r17, 2007
IEEE局域网和城域网标准第15.4部分:低速率无线个人区域网络(lr - wpan)
ZigBee联盟,ZigBee集群库规范,修订版6,2016年1月。
CIE 1931色彩空间。国际物权诉讼委员会。剑桥大学出版社,剑桥
Wireshark软件:https://www.wireshark.org/