主要内容

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,此示例生成并解码以下集群的帧:

  1. 识别集群:该集群将设备设置为识别模式(如闪烁灯)。的帧生成和解码识别的命令(见[第3.5条]4])。

  2. 颜色控制集群:该集群改变照明设备的颜色。的帧生成和解码移动到颜色命令(见[第5.2条]4])。

  3. 电平控制集群:该集群修改设备的电平(如灯泡的强度、门的关闭程度或加热器的强度)。的帧生成和解码移动到关卡命令(见[第3.10条]4])。

  4. 场景集群:场景集群设置和召回场景(即同一设备中其他集群的存储属性值集)。的帧生成和解码场景视图命令(见[第3.7条]4])。

  5. 组集群:该集群管理设备组,例如,通过创建或删除一个组,或通过发现组成员。的帧生成和解码添加组命令(见[第3.6条]4])。

除了说明的命令之外,本示例还提供了为上述五个集群的所有命令生成和解码帧的实现(参见进一步的探索查看完整列表)。

识别集群ZCL负载的生成与解码

一个无线个域网。IdentifyFrameConfigconfiguration对象用于生成和解码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秒)内逐步将当前颜色(红色)更改为不同的值(绿色)。颜色是用…来描述的xy根据国际照明委员会(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负载的生成与解码

一个无线个域网。SceneFrameConfigconfiguration对象用于生成和解码场景集群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负载的生成与解码

一个无线个域网。GroupFrameConfigconfiguration对象用于生成和解码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可以对其进行分析。

选定的参考书目

  1. ZigBee联盟,ZigBee轻连接标准,1.0版,2012年4月5日。

  2. ZigBee联盟,ZigBee规范文档053474r17, 2007

  3. IEEE局域网和城域网标准第15.4部分:低速率无线个人区域网络(lr - wpan)

  4. ZigBee联盟,ZigBee集群库规范,修订版6,2016年1月。

  5. CIE 1931色彩空间。国际物权诉讼委员会。剑桥大学出版社,剑桥

  6. Wireshark软件:https://www.wireshark.org/

相关的话题

Baidu
map