登记 Sidewalk 设备简介 - AWS IoT Wireless

登记 Sidewalk 设备简介

本节向您展示如何将 Sidewalk 终端设备登记到适用于 Amazon Sidewalk 的 AWS IoT Core。要登记您的设备,请先添加 Sidewalk 设备,接着预置和登记设备,然后将硬件连接到云应用程序。在运行本教程之前,请仔细阅读并完成安装 Python 和 AWS CLI

以下步骤向您展示了如何登记 Sidewalk 终端设备并将其连接到适用于 Amazon Sidewalk 的 AWS IoT Core。如果要使用 AWS CLI 登记设备,可以参考本节提供的命令示例。有关使用 AWS IoT 控制台登记设备的信息,请参阅连接到适用于 Amazon Sidewalk 的 AWS IoT Core

重要

要执行整个登记工作流,您还需要预置和登记终端设备,并连接硬件开发工具包(HDK)。有关更多信息,请参阅《Amazon Sidewalk 文档》中的预置和注册终端设备

步骤 1:将 Sidewalk 设备添加到适用于 Amazon Sidewalk 的 AWS IoT Core

下面概述了将 Sidewalk 终端设备添加到适用于 Amazon Sidewalk 的 AWS IoT Core 需要执行的步骤。存储您获得的有关您创建的设备配置文件和无线设备的信息。您将使用此信息来预置和注册终端设备。有关这些步骤的更多信息,请参阅将设备添加到适用于 Amazon Sidewalk 的 AWS IoT Core

  1. 创建设备配置文件

    创建包含 Sidewalk 设备的共享配置的设备配置文件。创建配置文件时,请将配置文件的 name 指定为字母数字字符串。要创建配置文件,请转到 AWS IoT 控制台的配置文件中心的 Sidewalk 选项卡并选择创建配置文件,或者使用 CreateDeviceProfile API 操作或 create-device-profile CLI 命令,如本示例所示。

    // Add your device profile using a name and the sidewalk object. aws iotwireless create-device-profile --name sidewalk_profile --sidewalk {}
  2. 创建 Sidewalk 终端设备

    使用适用于 Amazon Sidewalk 的 AWS IoT Core 创建 Sidewalk 终端设备。指定目标名称和从上一步获得的设备配置文件的 ID。要添加设备,请转到 AWS IoT 控制台的设备中心的 Sidewalk 选项卡并选择预置设备,或者使用 CreateWirelessDevice API 操作或 create-wireless-device CLI 命令,如本示例所示。

    注意

    为目标指定一个对您的 AWS 账户和 AWS 区域具有唯一性的名称。将目标添加到适用于 Amazon Sidewalk 的 AWS IoT Core 中时,您将使用相同的目标名称。

    // Add your Sidewalk device by using the device profile ID. aws iotwireless create-wireless-device --type "Sidewalk" --name sidewalk_device \ --destination-name SidewalkDestination \ --sidewalk DeviceProfileId="12345678-234a-45bc-67de-e8901234f0a1"
  3. 获取设备配置文件和无线设备信息

    以 JSON 格式获取设备配置文件和无线设备信息。JSON 将包含有关设备详细信息、设备证书、私有密钥、DeviceTypeId 和 Sidewalk 制造序列号(SMSN)的信息。

    • 如果您使用的是 AWS IoT 控制台,则可以使用设备中心的 Sidewalk 选项卡为 Sidewalk 终端设备下载组合的 JSON 文件。

    • 如果您使用的是 API 操作,请将从 API 操作 GetDeviceProfileGetWirelessDevice 获得的响应存储为单独的 JSON 文件,例如 device_profile.jsonwireless_device.json

      // Store device profile information as a JSON file. aws iotwireless get-device-profile \ --id "12345678-a1b2-3c45-67d8-e90fa1b2c34d" > device_profile.json // Store wireless device information as a JSON file. aws iotwireless get-wireless-device --identifier-type WirelessDeviceId \ --identifier "23456789-abcd-0123-bcde-fabc012345678" > wireless_device.json

步骤 2:为 Sidewalk 终端设备创建目标

下面概述了将目标添加到适用于 Amazon Sidewalk 的 AWS IoT Core 需要执行的步骤。使用 AWS Management Console、AWS IoT Wireless API 操作或 AWS CLI,您可以运行以下步骤来创建 AWS IoT 规则和目标。然后,您可以连接到硬件平台,并查看和交换消息。有关本节中用于 AWS CLI 示例的 IAM 角色和 AWS IoT 规则,请参阅为您的目标创建 IAM 角色和 IoT 规则

  1. 创建 IAM 角色

    创建一个 IAM 角色来授予适用于 Amazon Sidewalk 的 AWS IoT Core 向 AWS IoT 规则发送数据的权限。要创建角色,请使用 CreateRole API 操作或 create-role CLI 命令。您可以将角色命名为 SidewalkRole

    aws iam create-role --role-name lambda-ex \ --assume-role-policy-document file://lambda-trust-policy.json
  2. 为目标创建规则

    创建一条 AWS IoT 规则,用于处理设备数据并指定要向其发布消息的主题。连接到硬件平台后,您将观察到有关此主题的消息。使用 AWS IoT Core API 操作 CreateTopicRule 或 AWS CLI 命令 create-topic-rule 为目标创建规则。

    aws iot create-topic-rule --rule-name Sidewalkrule \ --topic-rule-payload file://myrule.json
  3. 创建目标

    创建一个目标以将 Sidewalk 设备与 IoT 规则相关联,此 IoT 规则对设备进行处理,以便用于其他 AWS 服务。您可以使用 AWS IoT 控制台的目标中心CreateDestination API 操作或 create-destination CLI 命令添加目标。

    aws iotwireless create-destination --name SidewalkDestination \ --expression-type RuleName --expression SidewalkRule \ --role-arn arn:aws:iam::123456789012:role/SidewalkRole

步骤 3:预置和注册终端设备

使用 Python 命令,您可以预置和注册您的终端设备。预置脚本使用您获得的设备 JSON 数据生成制造二进制映像,然后将其刷写到硬件板上。然后,您可以注册终端设备以连接到硬件平台。有关更多信息,请参阅《Amazon Sidewalk 文档》中的预置和注册终端设备

注意

注册您的 Sidewalk 终端设备时,您的网关必须选择加入 Amazon Sidewalk,并且网关和设备必须位于彼此的范围内。

步骤 4:连接到终端设备并交换消息

注册终端设备后,您可以连接终端设备并开始交换消息和设备数据。

  1. 连接 Sidewalk 终端设备

    将 HDK 连接到您的计算机,然后按照供应商文档提供的说明连接到您的 HDK。有关更多信息,请参阅《Amazon Sidewalk 文档》中的预置和注册终端设备

  2. 查看和交换消息

    使用 MQTT 客户端订阅在规则中指定的主题并查看收到的消息。您还可以使用 SendDataToWirelessDevice API 操作或 send-data-to-wireless-device CLI 命令向设备发送下行链路消息并验证连接状态。

    (可选)您可以启用消息传送状态事件来检查是否已成功接收下行链路消息。

    aws iotwireless send-data-to-wireless-device \ --id "<Wireless_Device_ID>" \ --payload-data "SGVsbG8gVG8gRGV2c2lt" \ --wireless-metadata Sidewalk={Seq=1,AckModeRetryDurationSecs=10}