简介
本开发人员教程旨在说明在 Silicon Labs EmberZNet SoC 平台上“从零开始”进行基本应用程序开发,这意味着在使用 ZCL 应用程序框架 (AF) 及其各种插件时,不会使用“示例应用程序”场景中预先编写的回调代码。 内容涉及 AF 提供的基本结构以及添加插件和回调以不断增加功能,让开发人员能够对如何循序渐进地构建应用程序有一个基本的了解。
概要
本教程包含多个部分,引导用户通过一组预先编写的说明(基于 EmberZNet 5.10.1),来创建 Zigbee 3.0 开/关开关和开/关灯——它们可以通过命令行界面 (CLI) 彼此通话。然后使用应用程序框架 API 指南和 EmberZNet API 指南作为参考编写自定义 C 代码,扩展生成的应用程序,以实现在 Switch(开关)节点上按下按钮即可远程切换 Light (灯)节点上的 LED。
要求
- 知识:
- 级别:初级到中级学习者。
- 概念:Zigbee/ZCL 基础知识,C 编程。
- 预备知识:
- 硬件:EFR32MG12 2.4 GHz 网状网络套件 (P/N: SLWSTK6000B)
- 软件:
- Simplicity Studio v4(已安装无线产品支持和最新更新包)
- EmberZNet 5.10.0 (Gecko SDK Suite v1.1) 或更高版本
- 推荐使用 IAR 嵌入式工作台 7.80.2,但如果协议栈支持,也可以使用 GCC(EmberZNet 6.0.0 和更高版本)
资源
- Z3.0_DIY_Light_and_Switch_setup_instructionsPDF(见下面附件部分)
- UG102: 应用程序框架开发人员指南
- 适用于应用程序框架 V2 的 Ember 应用程序框架 API(和命令行)参考(HTML 格式,见 SDK 文件夹,例如:{STUDIO_V4_INSTALL_DIR}/ developer/sdks/gecko_sdk_suite/ {SDK_SUITE_VERSION_NUMBER}/protocol/zigbee_X.Y/documentation/120-3023-000_AF_V2_API/index.html)
第 1 部分:准备设置
- 启动 Simplicity Studio v4。
- 确保在 Devices(设备)窗格中基于 EFR32MG12 的设备至少存在两个节点(通过 USB 或以太网)。
3. 转至 Window(窗口)> Preference(首选项)> Simplicity Studio> SDK,并确保希望于此练习的 EmberZNet 协议栈版本显示在列表中,并且已启用(复选框已启用)以供使用。 确认/启用后,单击 “OK”(确定)。
a. 如果所需版本尚未安装,请转至 Help(帮助)» Update Software(更新软件),并通过 SDK 选项卡来安装。
转至 File(文件)> Preferences(首选项)> Simplicity Studio > Toolchains(工具链),并确保 IAR ARM 已列出并启用,以及确保在对话框底部的 Description(描述)区域中描述了正确的版本。 (如果 Toolchains(工具链)窗口上半部分的 Version(版本)列显示“0.0.0”,也不用担心。有时,Studio 无法确定整个工具链的程序包版本。) 请注意,EmberZNet 5.8 及更高版本所需的 IAR ARM 版本为 IAR-EWARM v7.80.2)。确认后,单击 “OK”(确定)。如果出现问题,请使用 “Add”(添加)按钮将正确的 IAR ARM 装置添加到 Studio 中。
第 2 部分:为 Switch(开关)创建新的 Simplicity Studio 项目和 AppBuilder 配置
- 转到 File(文件)> New(新建)> Project(项目)> Silicon Labs AppBuilder 项目,然后选择“Next”(下一步)。
- 选择“ZCL Application Framework V2”(ZCL 应用程序框架 V2),然后单击“Next”(下一步)。
- 选择所需的 EmberZNet SoC(非主机)版本,然后单击“Next”(下一步)。
- 选择“Start with a blank application”(从空白应用程序开始),然后单击“下一步”。
- 在“Project name”(项目名称)字段中,输入“开/关开关”项目的名称,例如“MySwitch”,然后单击“Next”(下一步)。
- 在“Boards”(板)列表中,确保 EFR32MG12 收音机板只有唯一条目,如“BRD4161A”或“BRD4162A”。
- 如果列出了其他板类型,请单击其列表项右上角的小“x”将其删除。
- 要向列表项添加新板,请在上面的 Search(搜索)框中输入其名称(如“EFR32MG12”)的一部分。
- 确认 IAR ARM v7.80.2 工具链已列于对话框底部的工具链列表中,然后单击“Finish”(完成)。
第 3 部分:配置和构建开关
- “ZCL clusters”(ZCL 群集)选项卡下,确保 “ZCL device type”(ZCL 设备类型)设置为 “HA On/Off Switch”(HA 开/关开关)。为什么?- 这是展示 ZCL 开/关群集客户端的最基本 Zigbee 设备类型。
- 在 “Znet stack”(Znet 协议栈)选项卡下:
a. 在 “Network configuration”(网络配置)中,将 Security Type(安全类型)更改为“ZigBee 3.0 安全”。
为什么?- 旧的家庭自动化安全方法现在已弃用,Zigbee 3.0 的新设备认证需要 Zigbee 3.0-样式安全,这是旧的 Zigbee 家庭自动化安全模型的超集。有关 ZHA 和 Z3.0 设备之间互操作性的更多详细信息,请参阅此 KBA:
b. 在 “ZDO settings”(ZDO 设置)中,启用 “Enable serial commands for sending ZDO messages”(启用串行命令发送 ZDO 消息)复选框。为什么?- 这为设备发现提供了一些有用的 CLI 命令,我们可以使用这些命令从 Switch 搜索可用的 Light 设备,而无需编写额外的代码。
3.在 “Printing and CLI”(打印和 CLI)选项卡下:
a. 在 “Debug printing”(调试打印)部分,启用 “Enable debug printing”(启用调试打印)复选框。
b. 在同一部分的 “Cluster debugging”(群集调试)下,查看“开/关”两列。
为什么?- 这将在 CLI 上提供额外的调试消息,以告诉我们有关“开/关”群集活动的信息。
4. 在 “HAL configuration”(HAL 配置)选项卡下,确保 “Bootloader”(引导加载程序)选择列表值设置为 "Application”(应用程序)。
为什么?- 虽然通常在开发过程中没有引导加载程序更容易进行原型设计,但所有设备最终都需要一个引导加载程序,因此,最好要养成一种确保有引导加载程序的习惯——具体来说,在开始开发应用程序时,确保有适合产品用例和架构的引导加载程序加载到目标芯片上。 参阅 UG103.6:引导加载基础知识 (https://www.silabs.com/documents/public/user-guides/UG103-06),了解有关不同类型引导加载程序的更多信息。
5. 在 “Plugins”(插件)选项卡下,通过为以下插件启用 “Use?”(使用?)复选框来添加功能:
a. 在 “EmberZNet Libraries”(EmberZNet 库)下,启用 “Install Code Library”(安装代码库)。
为什么?- Zigbee 3.0 的要求规定,加入设备必须支持基于安装代码的加入,其中预编程的种子值用于导出加入网络的唯一设备特定密钥。参阅 AN1089:将安装代码与 Zigbee 设备配合使用 (https://www.silabs.com/documents/public/application-notes/an1089-using-installation-codes-with-zigbee-devices.pdf),了解有关此功能的更多信息。
b. 在 “Network Form and Join”(网络表单和加入)下,禁用 “Network Find”(网络查找)。(将使用 “网络转向” 插件。)
为什么?- “网络查找”插件使用旧版家庭自动化安全设置和可用网络搜索的样式,这与我们为此配置选择的“Zigbee 3.0 安全”设置不兼容,因此,如果“网络查找”仍然启用(早期的“家庭自动化安全”默认设置),我们需要禁用它,以防止与 Zigbee 3.0-样式插件发生冲突。
c. 在 “Utility”(实用程序)下,启用 “General response commands”(一般响应命令)。
为什么?- 这可让基本的 ZCL 读/写属性响应消息被框架获得、解析并打印到 CLI 以提供反馈,这在早期阶段很有用,因为在早期阶段与应用程序的交互仍主要由 CLI 驱动,而不是由代码中的状态机驱动。
d. 在 “ZigBee 3.0” 下,启用“Find and Bind Initiator”(查找并绑定启动器)、“Network Steering”(网络转向)和“Update TC Link Key”(更新 TC 链路密钥)。
为什么?- 这些插件提供将 Zigbee 3.0 设备调试到网络所需的状态机器的生产就绪实现,包括 “Network Steering”(网络转向)过程和 “Finding and Binding”(查找和绑定)过程。有关详细信息,请参阅 UG103.2 的 “ZigBee 3.0” 章节:Zigbee 基础知识 (https://www.silabs.com/documents/public/user-guides/UG103-02-AppDevFundamentals-ZigBee.pdf) 和 ZigBee 基础设备行为规范的 “调试” 章节(文件编号 13-0402,网址 www.zigbee.org)。
6. 通过 File(文件)> Save(保存)来保存设置。
7. 单击右上角的 “Generate”(生成)按钮。几秒钟后,出现 “Generation successful!!”(生成成功),表示生成完成。
8. 在 Simplicity Studio 的 “Project Explorer”(项目资源管理器)窗格(AppBuilder 窗口左侧)中,右键单击项目的顶级文件夹(与项目名称相同,如 “MySwitch”),然后从上下文菜单中选择 “Build Project” (构建项目)。
9. 要确认构建完成没有错误,请在构建控制台中从末端向上滚动几行,并查找 “Writing GBL file… DONE”(写入 GBL 文件……完成)。
第 4 部分:将开关应用程序加载到 ZigBee 开发板
1. 在 Devices(设备)视图中,右键单击所需 Switch(开关)节点的调试适配器,然后选择 Upload Application(上传应用程序)。
注意:在 Simplicity Studio 中,有很多方法可以将固件加载到目标芯片上,但这是唯一一种允许您同时选择应用程序和引导加载程序固件的方法,因此您可以确保必要的引导加载程序已加载。
2. 启用“Erase chip before uploading image”(上传图像前擦除芯片)复选框,以防止节点使用较早保存的网络数据。
为什么?- EmberZNet 协议栈上线后,所有网络参数都被提交至非易失性存储器 (NVM),并且 AF 会尝试在后续的引导顺序中重用此数据。但是,由于我们正在开始建立一个全新的网络,所以您不希望系统先错误地恢复旧的网络,然后才能设置这个网络。
3. 单击“Application image path”(应用程序图像路径)旁的文件夹图标,然后浏览至为 Switch(开关)应用程序新创建的 GBL 文件。
默认路径通常为:C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\ gecko_sdk_suite\{versionNumber}\app\builder\{Project Name}\IAR ARM - Debug - {ChipVariant}\{ProjectName}.gbl
4. 如果 Gecko Bootloader(Gecko 引导加载程序)之前未加载至此设备(可能已通过快速入门指南完成):
a. 启用“Bootloader image”(引导加载程序图像)复选框。
b. 单击“Bootloader image”(引导加载程序图像)旁的文件夹图标,浏览至“Gecko 引导加载程序”二进制文件 S37。本练习旨在与“bootloader-storage-internal”或“bootloader-storage-spiflash”示例配合使用。用于开发套件测试的预构建样本引导加载程序二进制文件可在每个芯片的文件夹中找到
C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\ {versionNumber}\platform\bootloader\sample-apps.
注意:最后,您将希望构建自己的 Gecko 引导加载程序二进制文件,其中包含您想要的安全功能和存储设置,但预构建的样本在早期开发中更容易使用,因为它们不需要数字签名或加密图像。有关 Gecko 引导加载程序的详细信息,请参阅 UG266:Gecko 引导加载程序用户指南 (https://www.silabs.com/documents/public/user-guides/ug266-gecko-bootloader-user-guide.pdf)。
5. 单击“OK”(确定),开始上传过程。确保完成,没有出现错误。(Device(设备)图标应恢复为绿色。)
观看视频:Silicon Labs Zigbee 3.0 DIY 灯/开关教程:第 4 部分:加载 Switch App(开关应用程序)
第 5 部分:将用于 Switch(开关)的 AppBuilder 配置克隆作为 Light(灯)的起始点
注意:您可以返回到在第 2 部分和第 3 部分中所执行的步骤来创建新的 Light(灯)配置,但有时候,使用另一个项目作为起点来节省时间并避免遗漏某些内容会很有用。
1. 在 Simplicity Studio 中,转至 File(文件)> Save(保存),将您的 AppBuilder Switch 配置另存为 ISC 文件,例如 MySwitch.isc。
2. 转至 File(文件)> New(新建)> Project(项目)> Silicon Labs MCU Project(Silicon Labs MCU 项目)(非 AppBuilder 项目),然后单击 “Next”(下一步)。
a. 在生成的“Project Setup”(项目设置)对话框中,确保 SDK 选择是“Gecko SDK Suite”(Gecko SDK 套件),其版本与使用的 Switch(开关)版本相同,并且 Board/Part(板/部件)与 Light(灯)的目标硬件匹配,然后单击“Next”(下一步)。
b. 在下一个“Project Setup”(项目设置)对话框中,确保选中“Empty Program”(清空程序),然后单击“Next”(下一步)。
c. 在“Project Configuration”(项目配置)对话框中,将项目名称更改为 Light(灯)的名称,例如“MyLight”。
d. 取消选中“Use default location”(使用默认位置)复选框。
e. 单击“Browse”(浏览)按钮,并浏览至您当前的 Gecko SDK 装置(例如 C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1),然后浏览至 app\builder 子目录)。
f. 点击“Make New Folder”(创建新文件夹)并更改文件夹的名称,以匹配您的 Light 项目名称,如“MyLight”。
g. 点击“OK”(确定)退出浏览对话框,然后点击“Next”(下一步)。(“Link to sources”(链接至来源)默认选择为“OK”(正常)。)h. 取消选择对应于“Build Configurations”(内部版本配置)窗口中“GNU ARM”内部版本配置的任何条目(因为我们在此练习中仅使用 IAR ARM),然后点击 “Finish”(完成)。
3. 滚动到原始 Switch 项目的“Project Explorer”(项目资源管理器)树,找到其 ISC 文件,如“MySwitch.isc”。
4. 右键点击此 ISC 文件,并选择“Copy”(复制)。
5. 滚动到 Light 项目的顶级项目条目,右键点击该条目,然后选择“Paste”(粘贴)。
6. 右键点击 Light 项目中新复制的 ISC 文件,然后选择“Rename”(重命名)。
7. 为 Light 配置设置新名称,如“MyLight.isc”,然后点击“OK”(确定)。
8. 双击新重命名的 Light ISC 文件,以开始编辑其 AppBuilder 配置。
观看视频:Silicon Labs Zigbee 3.0 DIY 灯/开关教程:第 5 部分:克隆 Light 的 Switch 项目
第 6 部分:配置、构建 Light 应用程序并将其加载到第二个节点
1. 在 Simplicity IDE 的 AppBuilder 视图中的“General”(常规)选项卡下,更改“Device name”(设备名称)以使其与 Light 的项目名称匹配,如“MyLight”。
2. 在“ZCL clusters”(ZCL 集群)选项卡下,将“ZCL device type”(ZCL 设备类型)更改为“HA On/Off Switch”(HA 开/关开关)。
3. 在“ZNet stack”(ZNet 堆栈)选项卡下,将“ZigBee Device Type”(ZigBee 设备类型)更改为“Coordinator or Router”(协调器或路由器)。
4. 在“Plugins”(插件)选项卡下,对所述部分中的插件进行以下调整:
a. 常见集群:禁用“Scenes Server Cluster”插件。
为什么?- 某些版本的 AppBuilder 在为需使用适当令牌 (NVM) 定义的插件(包括 Scenes Server Cluster 插件)生成这些定义时会出现问题,但仅当在默认将这些插件作为空白项目模板的一部分启用的情况下才会如此。(这可表现为在构建过程中缺失 scenes-token.h 文件。)本教程不使用 Scenes 集群,因此您不需要插件代码即可处理命令,但是,如果您确实想要在新的空白项目中包括 Scenes 集群支持,则可通过禁用并随后重新启用插件来解决此问题。
b. ZigBee 3.0:启用“Find and Bind Target”、“Network Creator”和“Network Creator Security”插件。
为什么?-“Network Creator”插件允许 Light 为其他节点(如 Switch 或其他 Light)组建自己的 Zigbee 3.0 网络,从而支持传入 Zigbee 3.0 和传统 HA 设备的所有安全模型。“Find and Bind Target”插件允许 Find and Bind Initiator 设备(如 Switch)根据 Zigbee 3.0 调试发现并配对到 Light 的服务器端集群(在 ZigBee 基础设备行为规范的“调试”章节(ZigBee 文档 13- 0402)中讨论)。
5. 点击“Generate”(生成)按钮;在生成过程完成后,确认该过程已成功,然后点击“OK”(确定)。
6. 使用“Ctrl+S”或“File”(文件) “Save”(保存)来保存 Light 的 AppBuilder 配置,以备将来参考。
7. 在“Project Explorer”(项目资源管理器)中右键点击 Light 的项目文件夹,然后选择“Build Project”(构建项目)。
8. 确保构建完成而不发生错误。(如果发出警告,则表示正常。)
9. 使用不同于您的 Switch 的 EFR32 + 无线入门套件目标设备重复第 IV 节中针对 Light 应用的步骤。
观看视频:Silicon Labs Zigbee 3.0 DIY 灯/开关教程:第 6 部分:克隆 Light 的 Switch 项目
第 7 部分:启动调试通信
1. 为 Light 和 Switch 成功执行上传后,右键点击“Devices”(设备)窗格中的每个节点,然后选择“Launch console”(启动控制台)。
2. 对于每个节点,选择“Serial 1”(串行 1)选项卡并按 Enter 键以确保您收到提示,该提示中指出您正在与“Light”或“Switch”节点通话。(提示应显示 AppBuilder 的“General(常规)”选项卡中已配置的应用程序名称。)
为什么?- 通过 Simplicity Studio 控制台视图中的“Serial 1”(串行 1)选项卡,您可以使用无线入门套件上的 USB-串行接口或无线入门套件上的 TCP 端口 4901 与物理串行端口(USART0 或连接到板上 VCOM_TX/RX 引脚的任何 UART TXD/RXD 引脚)进行交互。这甚至可用于基于定制 EFR32 的硬件,前提条件是它通过 Mini-Simplicity 连接器重新连接到无线入门套件调试适配器。“Serial 0”选项卡表示通过“Debug Basic Library”插件在 SWO 和 SWDIO 调试引脚上进行模拟,并通过无线入门套件上的 TCP 端口 4900 显露的“虚拟 UART”。有关如何通过无线入门套件访问 EFR32 调试接口的更多信息,请参阅 AN958:用于定制设计的调试和编程接口 (https://www.silabs.com/documents/public/application-notes/an958-mcu-stk-wstk-guide.pdf)。
3. 转到 Window(窗口)> Preferences(首选项)> Network Analyzer(网络分析器)> Decoding(解码)> Stack Versions(堆栈版本),并设置为与用于构建这些应用程序的 SDK 对应的 EmberZNet 版本(如果未列出您的版本,则为最新可用版本),以确保捕获的数据包被正确解析为 Zigbee 流量。在设置此项后,点击“OK(确定)”以继续。
为什么?- “自动检测”的默认网络分析器设置无法始终正确猜测在捕获过程中使用的协议类型,尤其是在含基于 802.15.4 的混合流量的环境中。此外,EmberZNet 固件发布的一些非数据包事件可能本质上具有版本特定性,因此,获取用于解码的正确堆栈版本就变得更加重要。
4. 在“Devices”(设备)视图中,右键点击 Switch 节点,然后选择“Start Capture(开始捕获)”。网络分析器将打开。
为什么?- 这允许 Simplicity Studio 使用 FRC_DFRAME 和 FRC_DOUT 引脚上的 EFR32 数据包追踪接口 (PTI) 外围设备 ,通过无线入门套件开始收集数据包事件和网络事务。此外,如果启用了“Debug Basic Library”或“Debug Extended Library”插件,则固件可能会使用无线入门套件到 EFR32 SWO 引脚的连接来发布软件事件跟踪,如复位、确定、调试 Printfs 和 EZSP 命令/响应。然后,在捕获期间,所有这些事件都会在网络分析器中聚合,并可保存以供日后使用。有关 EmberZNet 堆栈中可用的调试功能的更多信息,请参阅 KBA:http://community.silabs.com/t5/Proprietary-Knowledge-Base/What-are-the-different-levels-of-debug-in-the-mesh-stacks-and/ta-p/113207
观看视频:Silicon Labs Zigbee 3.0 DIY 灯/开关教程:第 7 部分:开始捕获
第 8 部分:设置网络
1. 在 Light 节点的“Serial 1”(串行 1)控制台选项卡中输入如下命令:plugin network-creator form 1 0x5432 10 12
此处的选项将构成网络,该网络:
(1) – 为集中化网络
(0x5432) – 使用此 PAN ID(您可以选择 0x0000-0xFFFE 范围内的任何内容。)
(10) – 从 +10 dBm 发射功率开始(您可以选择受硬件支持的任何级别,最高为 20+)。
(12) – 在通道 12 上开始(您可以选择 11-26 范围内的任何内容。)
2. 对于 Light 节点,当控制台在“Serial 1”(串行 1)上输出“EMBER_NETWORK_UP”后,输入以下命令来打开网络以在 254 秒内加入:plugin network-creator-security open-network
3. 于 254 秒内在 Switch 节点的“Serial 1”(串行 1)控制台选项卡上,输入以下内容以尝试加入:plugin network-steering start 0
为什么?- 这将启动“网络导航”流程,该流程会尝试通道的不同安全密钥和不同掩码,以加入 Zigbee 3.0 网络的各种配置。“0”参数指示插件使用标准行为而不是提供“1”,后一种情况将导致无法在成功完成加入操作后对信任中心链路密钥进行一般更新。由于在此过程中会尝试不同的安全密钥,因此您可能会看到一些加入失败消息(打印“EMBER_JOIN_FAILED”状态),然后才能看到成功加入尝试的消息。
4. 如果加入成功,Switch 的控制台将在“Serial 1”(串行 1)中打印“EMBER_NETWORK_UP”,并且您会看到网络分析器的“Transactions”(事务)视图中出现“Association”和“Transport Key”事务(如以下视频所示)。如果成功,请继续下一节。否则,请重复步骤 2 和 3 如果是在课堂上和他人同时进行这项工作,应确保您加入了自己的网络(基于 PAN ID),而不是您邻居的网络。
注意: 同一通道上可能存在其他 802.15.4 流量,因此网络分析器中可能会出现不相关的事件/事务,其中包括您没有其解密密钥的流量。如果系统显示关于您无法解密的流量的警告,只需点击“OK”(确定)并继续,忽略其他流量即可。(您可以稍后将其过滤掉。)
Silicon Labs Zigbee 3.0 DIY Light/Switch 教程:第 8 部分:克隆 Light 的 Switch 项目
第 9 部分:开/关切换
1. 在 Switch 节点的“Serial 1”(串行 1)上,输入以下内容:
zcl on-off toggle
send 0 1 1
2. 确认在网络分析器的“Transactions”(事务)视图中的 Switch 和 Light 之间发送“ZCL: Toggle”和“ZCL: Default Response”。(注意,无线入门套件上的 LED 不会切换,因为我们尚未为此添加代码。)
3. 在网络分析器的“Live capture”(实时捕获)选项卡下,突出显示“ZCL: DefaultResponse”,并在右侧的“Event Detail”(事件详细信息)面板中检查“Status: SUCCESS (0x00)”(在“Zigbee Cluster Library”(Zigbee 集群库)部分下)。
4. 确认 Light 的“Serial 1”(串行 1)中打印“Toggle”消息。键入以下 CLI 命令以输出属性表,并验证在收到切换时开/关集群 (0x0006) 的属性 00 是否更改:print attr
5. 有关可用于通过 AF CLI 控制 Switch 和 Light 的其他 CLI 命令,请参阅 Ember 应用程序框架命令行界面 (CLI) 文档({GECKO_SDK_SUITE_DIR}/protocol/zigbee_X.Y/documentation/120-3023-000_AF_V2_API/index.html 处的 HTML 文件)。您还可以在 CLI 上键入“help”以获取受支持命令的列表;任何非完整命令都将触发针对这些命令的帮助语法。
观看视频:Silicon Labs Zigbee 3.0 DIY 灯/开关教程:第 9 部分:通过 CLI 切换 Light
接下来呢?
在本教程的后续部分中,我们将研究如何使切换命令在 Light 的无线入门套件上实际切换实体 LED,并介绍如何从 Switch 中的 CLI 驱动式切换命令过渡到由 Switch 无线入门套件上的按钮启动的按钮驱动式命令。
资源
所需硬件:
EFR32MG Zigbee 和 Thread 入门套件
(SLWSTK6000B)