现在我们将用灯组成我们的网络,并使用 Zigbee 安装代码将交换机加入网络。这将通过 CLI 处理,因此我们需要连接到两个设备上的 CLI,这可以像上一步一样完成,在调试适配器视图中右键单击每个 WSTK,然后选择“启动控制台”。
首先,我们将在 Light 上形成网络。转到 CLI 获取灯光并输入命令:
plugin network-creator start 1
这告诉灯光调用网络创建者插件来开始网络形成。1 选项告诉插件形成集中式网络,这使灯成为信任中心和路由器。
您应该会看到类似于以下内容的输出:
NWK Creator: Form: 0x00
NWK Creator Security: Start: 0x00
EMBER_NETWORK_UP 0x0000
NWK Creator: Form. Channel: 25. Status: 0x00
NWK Creator: Stop. Status: 0x00. State: 0x00
如果您看到 EMBER_NETWORK_UP,您可以使用以下命令检查网络设置:
info
这将输出网络信息。他们的关键是你的设备应该有一个 panID,它的 nodeID 应该是 0x0000。
panID [0x06BA] nodeID [0x0000] xpan [0x(>)1989C1541BB9E874]
如果这一切都设置好了,我们可以转到交换机。
如前所述,对于交换机,我们将使用安装代码(也称为安装代码)将我们的交换机加入我们的网络。安装代码是设备以相当安全的方式加入 Zigbee 网络的一种方式。有关安装代码的完整说明,请阅读AN1089。
安装代码本身是在制造时安装在加入设备上的随机值,用于加密从协调器到加入设备的初始网络密钥传输,通过唯一的链接密钥。为了模拟这一点,我们将使用指挥官将安装代码刷写到我们的 Thunderboard 上。我们在此页面上包含了一个 install.txt 文件,为您提供了用于此示例的安装代码。虽然您可以使用您想要的任何代码,但此代码与您将在此示例中看到的命令相匹配,并允许您轻松地按照我们的示例进行操作。要通过命令安装它,请使用以下命令:
commander flash --tokengroup znet --tokenfile install.txt --device efr32mg12p
确保将其闪烁到充当开关的 Thunderboard 上,将安装代码放在灯上不会有什么坏处,但它必须在开关上才能使此连接过程起作用。
Commander 的输出看起来与将应用程序刷写到 Thunderboard 时非常相似,但更短。如果您没有看到此输出,请确保您的 Thunderboard 已连接到您的 WSTK,并且您的 WSTK 已正确连接到您的计算机。刷新安装代码后,您可以使用以下命令检查它是否已正确存储:
commander tokendump –-tokengroup znet –-device efr32mg12p
您正在寻找的是两个部分,在顶部您可以看到您的 EUI 64,在底部附近,安装代码存储在您的设备上:
# MFG_EMBER_EUI_64 : C3A4DEFEFF570B00
…
#’MFG_INSTALLATION_CODE (Smart Energy Install Code)' token group
# Install Code Flags : 0x0002
Install Code : 3141592653589793
# CRC : 0xCE31
如果您看到这一点,则说明安装代码已正确安装。您应该自行运行此命令,因为接下来的步骤需要您的 EUI64。注意:使用该命令,您看到的 EUI64 和 CRC 都是小端格式。看这个,EUI64实际上是:000B57FFFEDEA4C3,我们的CRC是0x31CE。
有了这些信息,我们现在将回到我们的光。我们的光充当我们网络的协调器,因此它需要从我们的加入设备中知道这些信息。具体来说,需要加入设备的link key。我们将做一个两步的过程来获取链接密钥,他们将这个密钥移动到灯的临时链接密钥表中,以便在交换机加入后更改信息。
从灯的 CLI 中,我们将告诉灯 EUI64、安装代码和交换机的 CRC,从这些信息中它将散列出交换机的链接密钥。为此,请在 light 的 CLI 中输入以下内容:
让我们仔细看看这个命令,因为有几点需要注意:
option install-code 0 {00 0B 57 FF FE DE A4 C3} {31 41 59 26 53 58 97 93 31 CE}
选项安装代码——这只是我们正在运行的命令,告诉协调器我们正在添加一个基于安装代码的链接密钥。
0 – 这是要添加条目的键表条目
{00 0B 57 FF FE DE A4 C3} - 这是加入设备的 EUI64。它是大端格式。注意,这是我加入设备的 EUI64,你要确保把你的 EUI64 放在这里。
{31 41 59 26 53 58 97 93 31 CE} - 这是我们的安装代码(前 8 个字节)和我们正在使用的 CRC(后 4 个字节)。请注意,我们的 CRC 是大端格式。
如果此命令正常工作,您应该会看到以下内容:
Success: add link key
然后,我们将从密钥表中获取新的链接密钥。这是通过 CLI 输入完成的:
keys print
此命令显示我们网络的大部分安全信息。您在此显示屏上查找的是密钥表,它应该显示如下信息:
Link Key Table
0 (>)000B57FFFEDEA4C3 00000000 L y FE 2A 47 BE 40 CC AE B2 DC 54 0E 0A EA DB 82 A1
1/6 entries used.
这是从安装代码派生的链接密钥。记下这个新的链接密钥,我们将在以后的步骤中使用它。有了这个,您想从永久密钥表中删除密钥。为此,请输入:
keys delete 0
它告诉协调器从键表中删除我们的第 0 个条目。
现在我们要将交换机加入网络。我们还将在网络分析仪上观看该过程,因此我们可以获得加入过程的图形表示。所以首先,让我们开始我们的捕获。因为我们使用的是安装代码,Studio 本身是看不到加入过程的,所以我们需要把我们的安装代码放到 Studio 中。为此,我们需要打开 Studio 的首选项,在 Debug Adapter 中找到齿轮图标并单击它。
这将启动首选项窗口。在搜索窗口中输入 Security Keys,它应该位于 Network Analyzer > Decoding 下。在该窗口中单击新建并使用新安全密钥,输入您的链接密钥以允许 Studio 能够使用它进行解码。点击应用,然后点击确定以保存此信息。
添加链接密钥后,我们就可以开始捕获了。从 Studio 中再次选择我们的两个 WSTK,就像我们在启动 CLI 时所做的那样。我们将再次右键单击它们,而是选择 Start capture(如果您的环境特别嘈杂,您可以选择 Start capture with options ... 并且只捕获您的特定 pan ID)。这将启动网络分析器,Silicon Labs 网络解密工具。我们不会深入研究该工具,但我们将在完成此示例时介绍一些部分。
此时,您可能会发现整理 Studio 以让您看到比以前更多的窗口很有用。要在 Studio 中移动视图,您可以通过抓住它们的选项卡将它们移动到其他区域来拖动它们。当他们找到新位置时,您会看到他们在窗口上留下轮廓。由于我们想查看我们的网络跟踪以及两个串行窗口,您可能会发现这样的安排更好:
现在我们要回到灯光的 CLI。找到包含灯光 CLI 的选项卡。我们将打开网络加入并提供加入设备的链接密钥。我们使用来自我们插件之一的命令来执行此操作:
plugin network-creator-security open-with-key {00 0B 57 FF FE DE A4 C3} {FE 2A 47 BE 40 CC AE B2 DC 54 0E 0A EA DB 82 A1}
第一组十六进制数字是我们加入设备的 EUI64,第二组是设备在加入时将使用的链接密钥。和以前一样,确保将自己的 EUI64 放在这里。此命令将添加这些密钥并打开我们的网络 255 秒。
现在让我们转到交换机 CLI。我们需要开始加入网络。在 Zigbee 3.0 中,这是通过网络转向完成的,这是我们添加到交换机的插件。因此,在 CLI 中输入以下内容:
plugin network-steering start 0
顾名思义,这启动了网络控制过程。0 选项告诉交换机加入没有其他选项。这样做的主要目的是告诉加入设备在加入后更改其安装代码。
如果您按照说明安排了窗口,则可以在 CLI 和网络分析器中看到该过程。关键步骤是观察网络密钥的传输。因为已经告诉我们的设备使用特定的链接密钥加入,所以您可以观看此密钥用于将网络密钥传输到我们的设备。您可以以图形方式执行其他步骤,例如设备宣布切换到网络以及新链接密钥的请求和传输。
现在我们已经形成了我们的网络,是时候开始在我们的灯和开关之间发送通信了。