

# 将网关和设备连接到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-getting-started"></a>

适用于 LoRaWAN 的 AWS IoT Core 将帮助您连接和管理无线 LoRaWAN（低功耗远距离广域网）设备，并且无需开发和操作 LNS。远距离 WAN (LoRaWAN) 设备和网关可以使用 适用于 LoRaWAN 的 AWS IoT Core 连接到 AWS IoT Core。

## 设备、网关、配置文件和目标的命名约定
<a name="lorawan-naming-convention"></a>

在您开始使用 适用于 LoRaWAN 的 AWS IoT Core 并创建资源之前，请考虑设备、网关和目标的命名约定。

适用于 LoRaWAN 的 AWS IoT Core 会为您为无线设备、网关和配置文件创建的资源分配唯一 ID；但是，您也可以为资源指定更具描述性的名称，以便更轻松地识别它们。在将设备、网关、配置文件和目标添加到 适用于 LoRaWAN 的 AWS IoT Core 时，请考虑如何命名以便更轻松地管理。

您可以将标签添加到创建的资源中。在添加 LoRaWAN 设备之前，请考虑如何使用标签来识别和管理 适用于 LoRaWAN 的 AWS IoT Core 资源。添加标签后，可以对其进行修改。

有关命名和标记资源的更多信息，请参阅 [描述您的 AWS IoT Wireless 资源](iotwireless-describe-resources.md)。

## 将设备数据映射到服务数据
<a name="lorawan-service-device-data"></a>

LoRaWAN 无线设备的数据通常被编码以优化带宽。这些编码的消息将以不容易被其他AWS服务使用的格式抵达 适用于 LoRaWAN 的 AWS IoT Core。适用于 LoRaWAN 的 AWS IoT Core 将使用 AWS IoT 规则，可以借助 AWS Lambda 函数来处理设备消息并将其解码为其他AWS服务可以使用的格式。

转换设备数据并将其发送到其他AWS服务，您需要知道：
+ 无线设备发送的数据格式和内容。
+ 您想要向其发送数据的服务。
+ 服务所需的格式。

使用该信息，您可以创建 AWS IoT 规则，该规则执行转换并将转换后的数据发送到将使用该数据的AWS服务。

## 使用控制台将您的设备和网关登记到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-console"></a>

您可以使用控制台界面或 API 添加 LoRaWAN 网关和设备。如果您第一次使用的是 适用于 LoRaWAN 的 AWS IoT Core，我们建议您使用控制台。控制台界面在一次性管理多个 适用于 LoRaWAN 的 AWS IoT Core 资源时最为实用。当管理大量 适用于 LoRaWAN 的 AWS IoT Core 资源时，请考虑使用 AWS IoT Wireless API 创建更为自动化的解决方案。

配置 适用于 LoRaWAN 的 AWS IoT Core 资源时输入的大部分数据由设备供应商提供，并且特定于他们支持的 LoRaWAN 规范。以下主题将介绍如何描述您适用于 LoRaWAN 的 AWS IoT Core，并使用控制台或 API 添加您的网关和设备。

**注意**  
如果您使用公共网络将 LoRaWAN 设备连接到云端，则可以跳过网关登记步骤。有关更多信息，请参阅[管理来自公共 LoRaWAN 设备网络（Everynet）的 LoRaWAN 流量](iot-lorawan-roaming.md)。

**Topics**
+ [设备、网关、配置文件和目标的命名约定](#lorawan-naming-convention)
+ [将设备数据映射到服务数据](#lorawan-service-device-data)
+ [使用控制台将您的设备和网关登记到 适用于 LoRaWAN 的 AWS IoT Core](#lorawan-console)
+ [将您的网关登记到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateways.md)
+ [将您的设备登记到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-end-devices.md)

# 将您的网关登记到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-onboard-gateways"></a>

如果您是首次使用 适用于 LoRaWAN 的 AWS IoT Core，您可以使用控制台添加您的第一个 LoRaWan 网关和设备。

**注意**  
如果您使用公共网络将 LoRaWAN 设备连接到云端，则可以跳过网关登记步骤。有关更多信息，请参阅[管理来自公共 LoRaWAN 设备网络（Everynet）的 LoRaWAN 流量](iot-lorawan-roaming.md)。

**登记网关之前**  
将您的网关登记到 适用于 LoRaWAN 的 AWS IoT Core 之前，我们建议您：
+ 使用能够与 适用于 LoRaWAN 的 AWS IoT Core 搭配使用的网关。这些网关将连接到 AWS IoT Core，无需进行任何其他配置设置，并且 2.0.4 或更高版本的 [LoRa Basics Station](https://doc.sm.tc/station) 软件将在上面运行。有关更多信息，请参阅[使用 AWS IoT Wireless 管理网关](lorawan-manage-gateways.md)。
+ 请考虑您创建的资源的命名约定，以便更轻松地管理这些资源。有关更多信息，请参阅[描述您的 AWS IoT Wireless 资源](iotwireless-describe-resources.md)。
+ 预先准备好每个网关独有的配置参数，使数据输入控制台更加顺畅。AWS IoT 需要用来与网关进行通信和管理的无线网关配置参数包括网关的 EUI 及其 LoRa 频带。

**Topics**
+ [考虑频段选择并添加必要的 IAM 角色](lorawan-rfregion-permissions.md)
+ [将网关添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateway-add.md)
+ [连接您的 LoRaWAN 网关并验证其连接状态](lorawan-gateway-connection-status.md)

# 考虑频段选择并添加必要的 IAM 角色
<a name="lorawan-rfregion-permissions"></a>

在将网关添加到 适用于 LoRaWAN 的 AWS IoT Core 之前，我们建议您考虑网关运行的频段，并添加必要的 IAM 角色，以便将网关连接到 适用于 LoRaWAN 的 AWS IoT Core。

**注意**  
如果您使用控制台添加网关，请在控制台中单击 **Create role**（创建角色）创建必要的 IAM 角色，以便跳过这些步骤。仅当您使用 CLI 创建网关时，才需要执行这些步骤。

## 为您的网关和设备连接选择 LoRa 频带
<a name="lorawan-frequency-bands"></a>

 适用于 LoRaWAN 的 AWS IoT Core 支持 EU863-870、US902-928、AU915 和 AS923-1 频段，您可以使用这些频段连接实际存在于支持这些频段的频率范围和特性的国家/地区的网关和设备。EU863-870 频段和 US902-928 频段通常分别用于欧洲和北美。AS923-1 频段常用于澳大利亚、新西兰、日本和新加坡等国家。AU915 用于澳大利亚和阿根廷等国家。有关在您所在地区或国家/地区使用哪些频段的更多信息，请参阅 [LoRaWAN® 区域参数](https://lora-alliance.org/resource_hub/rp2-101-lorawan-regional-parameters-2/)。

LoRa Alliance 发布 LoRaWAN 规范和区域参数文档，可从 LoRa Alliance 网站下载。LoRa Alliance 的区域参数可帮助公司决定在其所在地区或国家使用哪个频段。适用于 LoRaWAN 的 AWS IoT Core 的频段执行操作遵循了区域参数规范文档中的建议。这些区域参数被分组为一组无线电参数，以及适应工业、科学和医疗 (ISM) 波段的频率分配。我们建议您与合规团队合作，以确保您符合任何适用的法规要求。

## 添加 IAM 角色以允许 Configuration and Update Server (CUPS) 管理网关凭证
<a name="lorawan-onboard-permissions"></a>

此流程介绍如何添加允许 Configuration and Update Server (CUPS) 管理网关凭证的 IAM 角色。请确保在 LoRaWAN 网关尝试连接到 适用于 LoRaWAN 的 AWS IoT Core 前执行此流程；不过您只需进行一次该操作。

**添加 IAM 角色以允许 Configuration and Update Server (CUPS) 管理网关凭证**

1. 开启 [IAM 控制台的角色中心](https://console.aws.amazon.com/iam/home#/roles)，然后选择 **Create role**（创建角色）。

1. 如果您认为您可能已经添加了 **IoTWirelessGatewayCertManagerRole** 角色，请在搜索栏中输入 **IoTWirelessGatewayCertManagerRole**。

   如果您在搜索结果中看到了 **IoTWirelessGatewayCertManagerRole** 角色，则您拥有了必要的 IAM 角色。您现在可以离开流程。

   如果搜索结果为空，则您还没有必要的 IAM 角色。继续执行流程以添加该角色。

1. 在 **Select type of trusted entity**（选择受信任实体的类型）下，选择 **Another AWS 账户**（另一个亚马逊云科技账户）。

1. 在 **Account ID**（账户 ID），请输入您的AWS 账户 ID，然后选择 **Next: Permission**（下一步：权限）。

1. 在搜索框中，输入 **AWSIoTWirelessGatewayCertManager**。

1. 在搜索结果中，选择名为 **AWSIoTWirelessGatewayCertManager** 的策略。

1. 依次选择 **Next: Tags**（下一步：标签）和 **Next: Review**（下一步：查看）。

1. 对于 **Role name**（角色名称），请输入 **IoTWirelessGatewayCertManagerRole**，然后选择 **Create role**（创建角色）。

1. 要编辑新角色，请在确认消息中，选择 **IoTWirelessGatewayCertManagerRole**。

1. 在 **Summary**（摘要）页面上，选择 **Trust relationships**（信任关系），然后选择 **Edit trust relationship**（编辑信任关系）。

1. 在 **Policy Document**（策略文档）中，更改 `Principal` 属性以使其类似于此示例。

   ```
   "Principal": { 
       "Service": "iotwireless.amazonaws.com" 
   },
   ```

   在您更改 `Principal` 属性后，完整的策略文档应该如此示例所示。

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "iotwireless.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

1. 要保存更改并退出，请选择 **Update Trust Policy**（更新信任策略）。

您现在已经创建了 **IoTWirelessGatewayCertManagerRole**。今后便无需再次执行此操作了。

如果您在添加网关时执行了此流程，则可以关闭此窗口和 IAM 控制台，然后返回 AWS IoT 控制台以完成网关的添加。

# 将网关添加到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-onboard-gateway-add"></a>

您可以私用控制台或 CLI 将网关添加到 适用于 LoRaWAN 的 AWS IoT Core。

添加您的网关之前，我们建议您考虑[将您的网关登记到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateways.md)的**登记网关之前**部分中提到的各项因素。

如果您是第一次添加网关，我们建议您使用控制台。如果要改为使用 CLI 添加网关，您必须已创建必要的 IAM 角色，以便网关可以连接到 适用于 LoRaWAN 的 AWS IoT Core。有关如何创建此角色的信息，请参阅 [添加 IAM 角色以允许 Configuration and Update Server (CUPS) 管理网关凭证](lorawan-rfregion-permissions.md#lorawan-onboard-permissions)。

## 使用控制台添加网关
<a name="lorawan-onboard-gateway-console"></a>

导航到 AWS IoT 控制台的 [适用于 LoRaWAN 的 AWS IoT Core](https://console.aws.amazon.com/iot/home#/wireless/landing) ** 简介**页面并选择 **Get started**（开始使用），然后选择 **Add gateway**（添加网关）。如果您已添加网关，请选择 **View gateway**（查看网关）以查看您添加的网关。如果要添加更多网关，请选择 **Add gateway**（添加网关）。

1. 

**提供网关详细信息和频带信息**  
使用 **Gateway details**（网关详细信息）部分提供有关设备配置数据（如网关的 EUI 和频带配置）的信息。
   + 

**网关的 EUI**  
单个网关设备的 EUI（扩展唯一标识符）。EUI 是一个 16 位的字母数字代码，例如 `c0ee40ffff29df10`，它可以唯一标识 LoRaWAN 网络中的网关。此信息特定于您的网关型号，您可以在网关设备或其用户说明手册中找到。
**注意**  
网关的 EUI 与您可能看到印在网关设备上的 Wi-Fi MAC 地址不同。EUI 遵循 EUI-64 标准，该标准可唯一标识您的网关，因此不能在其他 AWS 账户和区域中重复使用。
   + 

**频段 (RFRegion)**  
网关的频带。您可以从 `US915`、`EU868`、`AU915` 或者 `AS923-1` 中进行选择，具体取决于您的网关支持的标准以及网关从哪个国家或地区进行实际连接。有关频段的更多信息，请参阅 [为您的网关和设备连接选择 LoRa 频带](lorawan-rfregion-permissions.md#lorawan-frequency-bands)。

1. 

**指定您的无线网关配置数据（可选）**  
这些字段是可选字段，您可以使用它们提供有关网关及其配置的其他信息。
   + 

**网关的名称、描述和标签**  
这些可选字段中的信息来自于您如何组织和描述无线系统中的元素。您可以将 **Name**（名称）添加到网关，使用 **Description**（说明）字段提供有关网关的信息，并使用 **Tag**（标签）添加有关网关的元数据键值对。有关命名和描述资源的更多信息，请参阅 [描述您的 AWS IoT Wireless 资源](iotwireless-describe-resources.md)。
   + 

**使用子带和滤波器的 LoRaWAN 配置**  
此外，您还可以指定 LoRaWAN 配置数据，例如要使用的子带和可控制流量的滤波器。在本教程中，您可以跳过这些字段。有关更多信息，请参阅[配置网关的子带和筛选功能](lorawan-subband-filter-configuration.md)。

1. 

**将 AWS IoT 事物与网关关联**  
指定是否创建 AWS IoT 事物，并将其与网关联。AWS IoT 中的事物可以让您更轻松地搜索和管理您的设备。将某个事物与您的网关关联将允许网关访问其他 AWS IoT Core 特征。

1. 

**创建并下载网关证书**  
对您的网关进行身份验证，以便它能够安全地与 AWS IoT 通信，您的 LoRaWAN 网关必须向 适用于 LoRaWAN 的 AWS IoT Core 提供私有秘钥和证书。创建**网关证书**，从而使 AWS IoT 能够使用 X.509 标准验证网关的身份。

   单击 **Create certificate**（创建证书）按钮并下载证书文件。稍后您将使用它们来配置网关。

1. 

**复制 CUPS 和 LNS 端点并下载证书**  
在建立与 适用于 LoRaWAN 的 AWS IoT Core 之间的连接时，LoRaWAN 网关必须连接到 CUPS 或 LNS 端点。建议您使用 CUPS 端点，因为它还提供配置管理。要验证 适用于 LoRaWAN 的 AWS IoT Core 的端点的身份，您的网关将为每个 CUPS 和 LNS 端点使用信任证书，

   单击 **Copy**（复制）按钮复制 CUPS 和 LNS 端点。稍后您将需要此信息来配置您的网关。然后单击 **Download server trust certificates**（下载服务器信任证书）按钮下载 CUPS 和 LNS 端点的信任证书。

1. 

**为网关权限创建 IAM 角色**  
您需要添加 IAM 角色，以允许 Configuration and Update Server (CUPS) 管理网关凭证。
**注意**  
在此步骤中，您将创建 **IoTWirelessGatewayCertManager** 角色。如果已创建该角色，则可以跳过此步骤。您必须在 LoRaWAN 网关尝试连接到 适用于 LoRaWAN 的 AWS IoT Core 之前执行此操作；不过，该操作只需执行一次。

   要为您的账户创建 **IoTWirelessGatewayCertManager** IAM 角色，请单击 **Create role**（创建角色）按钮。如果该角色已存在，请从下拉列表中选择该角色。

   单击 **Submit**（提交）以完成网关创建。

## 使用 API 添加网关
<a name="lorawan-onboard-gateway-api"></a>

如果您是首次使用 API 或 CLI 添加网关，必须将 **IoTWirelessGatewayCertManager** IAM 角色，以便网关可以与 适用于 LoRaWAN 的 AWS IoT Core 连接。有关如何创建角色的信息，请参阅以下部分 [添加 IAM 角色以允许 Configuration and Update Server (CUPS) 管理网关凭证](lorawan-rfregion-permissions.md#lorawan-onboard-permissions)。

以下列表描述了执行与添加、更新或删除 LoRaWAN 网关相关任务的 API 操作。

**适用于 LoRaWAN 的 AWS IoT Core 网关的 AWS IoT Wireless API 操作**
+ [CreateWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessGateway.html)
+ [GetWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessGateway.html)
+ [ListWirelessGateways](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessGateways.html)
+ [UpdateWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateWirelessGateway.html)
+ [DeleteWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteWirelessGateway.html)

有关可用于创建和管理 适用于 LoRaWAN 的 AWS IoT Core 资源的操作和数据类型的完整列表，请参阅 [AWS IoT Wireless API 参考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 添加网关**  
您可以使用 AWS CLI 创建无线网关，方法是利用 [create-wireless-gateway](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-wireless-gateway.html) 命令。以下示例将展示如何创建无线 LoRaWAN 设备网关。您也可以提供 `input.json` 文件，该文件将包含其他详细信息，例如网关证书和预调配凭证。

**注意**  
您也可以使用 API 执行此流程，即使用 AWS API 中与此处显示的 CLI 命令对应的方法。

```
aws iotwireless create-wireless-gateway \
    --lorawan GatewayEui="a1b2c3d4567890ab",RfRegion="US915" \
    --name "myFirstLoRaWANGateway" \
    --description "Using my first LoRaWAN gateway"
    --cli-input-json input.json
```

有关您可以使用的 CLI 的信息，请参阅 [AWS CLI 参考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html) 

# 连接您的 LoRaWAN 网关并验证其连接状态
<a name="lorawan-gateway-connection-status"></a>

在检查网关连接状态之前，您必须已添加网关并将其连接到 适用于 LoRaWAN 的 AWS IoT Core。有关如何添加网关的信息，请参阅 [将网关添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateway-add.md)。

## 将网关连接到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-connect-gateway"></a>

添加网关后，连接到网关的配置接口以输入配置信息和信任证书。

将网关的信息添加到 适用于 LoRaWAN 的 AWS IoT Core 之后，请向网关设备添加一些 适用于 LoRaWAN 的 AWS IoT Core 信息。网关供应商提供的文档中描述的过程应告知您如何将证书文件上载到网关以及配置网关设备以与 适用于 LoRaWAN 的 AWS IoT Core 通信。

**可以与 适用于 LoRaWAN 的 AWS IoT Core 搭配使用的网关**  
有关如何配置 LoRaWAN 网关的说明，请参阅 适用于 LoRaWAN 的 AWS IoT Core 工作室的[配置网关设备](https://iotwireless.workshop.aws/en/200_gateway/400_configuregateway.html)部分。在这里，您可以找到相关说明，指导您连接能够与 适用于 LoRaWAN 的 AWS IoT Core 搭配使用的网关。

**支持 CUPS 协议的网关**  
以下说明介绍如何连接支持 CUPS 协议的网关。

1. 上载您在添加网关时获得的以下文件。
   + 网关设备证书和私有密钥文件。
   + CUPS 端点的信任证书文件，`cups.trust`。

1. 指定您之前获得的 CUPS 端点 URL。端点的格式为 `prefix.cups.lorawan.region.amazonaws.com:443`。

有关如何获取此信息的详细信息，请参阅 [将网关添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateway-add.md)。

**支持 LNS 协议的网关**  
以下说明介绍如何连接支持 LNS 协议的网关。

1. 上载您在添加网关时获得的以下文件。
   + 网关设备证书和私有密钥文件。
   + LNS 端点的信任证书文件，`lns.trust`。

1. 指定您之前获得的 LNS 端点 URL。端点的格式为 `prefix.lns.lorawan.region.amazonaws.com:443`。

有关如何获取此信息的详细信息，请参阅 [将网关添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateway-add.md)。

在您将您的网关连接到 适用于 LoRaWAN 的 AWS IoT Core 后，您可以使用控制台或 API 检查连接状态并获取有关何时接收上一个上行链路的信息。

## 使用控制台检查网关连接状态
<a name="lorawan-connection-status-console"></a>

要使用控制台检查连接状态，请导航到 AWS IoT 控制台中的 [https://console.aws.amazon.com/iot/home#/wireless/gateways](https://console.aws.amazon.com/iot/home#/wireless/gateways)（网关）页面，然后选择已添加的网关。在 Gatetway（网关）详细信息页面的 **LoRaWAN specific details**（LoRaWAN 具体详情）部分，您将看到连接状态以及上次接收上行链路的日期和时间。

## 使用 API 检查网关连接状态
<a name="lorawan-connection-status-api"></a>

要使用 API 检查连接状态，请使用 `GetWirelessGatewayStatistics` API。此 API 没有请求正文，只包含一个响应正文，用于显示网关是否已连接以及上一个上行链路于何时收到。

```
HTTP/1.1 200
Content-type: application/json

{
  “ConnectionStatus”: “Connected”,
  “LastUplinkReceivedAt”: “2021-03-24T23:13:08.476015749Z”,
  “WirelessGatewayId”: “30cbdcf3-86de-4291-bfab-5bfa2b12bad5"
}
```

# 将您的设备登记到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-onboard-end-devices"></a>

在您将网关登记到 适用于 LoRaWAN 的 AWS IoT Core 并验证其连接状态后，您就可以登记无线设备了。有关如何登记网关的信息，请参阅 [将您的网关登记到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateways.md)。

LoRaWAN 设备使用 LoRaWAN 协议与云托管的应用程序交换数据。适用于 LoRaWAN 的 AWS IoT Core 支持符合 LoRa Alliance 标准化 1.0.x 或 1.1 LoRAWAN 规范的设备。

LoRaWAN 设备通常包含一个或多个传感器和角色。这些设备通过 LoRaWAN 网关将上行链路遥测数据发送到 适用于 LoRaWAN 的 AWS IoT Core。云托管应用程序可以通过 LoRaWAN 网关向 LoRaWAN 设备发送下行链路命令来控制传感器。

**登记无线设备之前**  
在您将无线设备登记到 适用于 LoRaWAN 的 AWS IoT Core 前，您需要提前准备好以下信息：
+ 

**LoRaWAN 规范和无线设备配置**  
提前准备好每台设备独有的配置参数，使数据输入控制台更加顺畅。您需要输入的具体参数取决于设备使用的 LoRaWAN 规范。有关其规格和配置参数的完整列表，请参阅每个设备的文档。
+ 

**设备名称和描述（可选）**  
这些可选字段中的信息来自于您如何组织和描述无线系统中的元素。有关命名和描述资源的更多信息，请参阅 [描述您的 AWS IoT Wireless 资源](iotwireless-describe-resources.md)。
+ 

**设备和服务配置文件**  
准备好一些无线设备配置参数，这些参数由许多设备共享，并且可以存储在 适用于 LoRaWAN 的 AWS IoT Core 中作为设备和服务配置文件。配置参数可在设备的文档中或设备本身找到。在添加设备之前，您需要确定与设备配置参数匹配的设备配置文件，或创建一个配置文件（如有必要）。有关更多信息，请参阅[将配置文件添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-define-profiles.md)。
+ 

**适用于 LoRaWAN 的 AWS IoT Core 目标**  
必须将每个设备分配到一个目标，该目标将处理其消息以发送到 AWS IoT 和其他服务。负责处理和发送设备消息的 AWS IoT 规则特定于设备的消息格式。要处理来自设备的消息并将其发送到正确的服务，请确定您将创建与设备消息一起使用的目标，并将其分配给设备。

**Topics**
+ [将您的无线设备添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-end-devices-add.md)
+ [将配置文件添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-define-profiles.md)
+ [将目标添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-create-destinations.md)
+ [创建规则以处理 LoRaWAN 设备消息](lorawan-destination-rules.md)
+ [连接您的 LoRaWAN 设备并验证其连接状态](lorawan-device-connection-status.md)

# 将您的无线设备添加到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-end-devices-add"></a>

如果您是首次添加无线设备，我们建议您使用控制台。在 AWS IoT 控制台中导航到 [适用于 LoRaWAN 的 AWS IoT Core](https://console.aws.amazon.com/iot/home#/wireless/landing) ** 简介**页面，选择 **Get started**（开始使用），然后选择 **Add device**（添加设备）。如果您已添加设备，请选择 **View device**（查看设备）以查看您添加的网关。如果要添加更多设备，请选择 **Add device**（添加设备）。

此外，您还可以从 AWS IoT 控制台的 [Devices](https://console.aws.amazon.com/iot/home#/wireless/devices)（设备）页面添加无线设备。

## 使用控制台将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-end-device-spec-console"></a>

根据您的激活方式和 LoRaWAN 版本选择 **Wireless device specification**（无线设备规范）。选择后，您的数据将使用AWS拥有并为您管理的密钥加密。

**OTAA 和 ABP 激活模式**  
在 LoRaWAN 设备能够发送上行链路数据之前，您必须完成一个名为*激活*或者*联接*流程的操作。要激活您的设备，您可以使用 OTAA（空中激活）或 ABP（通过个性化激活）。

ABP 不需要联接流程，并使用静态密钥。当您使用 OTAA 时，LoRaWAN 设备会发送联接请求，网络服务器将允许该请求。我们建议您使用 OTAA 激活您的设备，因为每次激活都会生成新的会话密钥，这样更加安全。

**LoRaWAN 版本**  
当您使用 OTAA 时，您的 LoRaWAN 设备和云托管应用程序将共享根密钥。这些根密钥取决于您使用的是版本 v1.0.x 还是 v1.1。v1.0.x 只有一个根密钥，即 **AppKey**（应用程序密钥）；而 v1.1 有两个根密钥，**AppKey**（应用程序密钥）和 **NwkKey**（网络密钥）。会话密钥是根据每次激活的根密钥派生的。**NwkKey** 和 **AppKey** 都是无线供应商提供的 32 位十六进制值。

**无线设备 EUI**  
在您选择**无线设备规范**时，您会看到控制台上显示无线设备的 EUI（扩展唯一标识符）参数。您可以从设备或无线供应商的文档中找到此信息。
+ **DevEUI**：设备标签或文档中找到的 16 位六进制值，为您的设备所专有。
+ **AppEUI**：在设备文档中找到的联接服务器的 16 位六进制值，为此服务器所专有。在 LoRaWAN v1.1 版本中，**AppEUI** 被称为 **JoinEUI**。

有关唯一标识符、会话密钥和根密钥的详细信息，请参阅 [LoRa Alliance](https://lora-alliance.org/about-lorawan) 文档。

## 使用 API 将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-end-device-spec-api"></a>

如果要使用 API 添加无线设备，则必须先创建设备配置文件和服务配置文件，然后再创建无线设备。创建无线设备时，您将用到设备配置文件和服务配置文件 ID。有关如何使用 API 创建这些配置文件的信息，请参阅 [使用 API 添加设备配置文件](lorawan-define-profiles.md#lorawan-device-profile-api)。

以下列表描述了执行与添加、更新或删除服务配置文件相关任务的 API 操作。

**服务配置文件的 AWS IoT Wireless API 操作**
+ [CreateWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html)
+ [GetWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html)
+ [ListWirelessDevices](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices.html)
+ [UpdateWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateWirelessDevice.html)
+ [DeleteWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteWirelessDevice.html)

有关可用于创建和管理 适用于 LoRaWAN 的 AWS IoT Core 资源的操作和数据类型的完整列表，请参阅 [AWS IoT Wireless API 参考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 创建无线设备**  
您可以使用 AWS CLI 创建无线设备，方法是使用 [create-wireless-device](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-device-profile.html) 命令。以下示例通过使用输入 input.json 文件来输入参数以创建无线设备。

**注意**  
您也可以使用 API 执行此流程，即使用 AWS API 中与此处显示的 CLI 命令对应的方法。

**input.json 的内容**

```
{
    "Description": "My LoRaWAN wireless device"
    "DestinationName": "IoTWirelessDestination"
    "LoRaWAN": {
        "DeviceProfileId": "ab0c23d3-b001-45ef-6a01-2bc3de4f5333",
        "ServiceProfileId": "fe98dc76-cd12-001e-2d34-5550432da100",
        "OtaaV1_1": {
            "AppKey": "3f4ca100e2fc675ea123f4eb12c4a012",
            "JoinEui": "b4c231a359bc2e3d",
            "NwkKey": "01c3f004a2d6efffe32c4eda14bcd2b4"
        },
        "DevEui": "ac12efc654d23fc2"
    },
    "Name": "SampleIoTWirelessThing"
    "Type": LoRaWAN
}
```

您可以将此文件作为 `create-wireless-device` 命令的输入。

```
aws iotwireless create-wireless-device \
    --cli-input-json file://input.json
```

有关您可以使用的 CLI 的信息，请参阅 [AWS CLI 参考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html) 

# 将配置文件添加到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-define-profiles"></a>

可以定义设备和服务配置文件来描述常见设备配置。这些配置文件描述了设备共享的配置参数，以便更轻松地添加这些设备。 适用于 LoRaWAN 的 AWS IoT Core 支持设备配置文件和服务配置文件。

 要输入到这些配置文件的配置参数和值由设备制造商提供。

## 添加设备配置文件
<a name="lorawan-device-profiles"></a>

设备配置文件定义网络服务器用于设置 LoRaWAN 无线电访问服务的设备功能和引导参数。它包括选择参数，例如 LoRa 频段、LoRa 区域参数版本和设备的 MAC 版本。要了解不同频段的信息，请参阅 [为您的网关和设备连接选择 LoRa 频带](lorawan-rfregion-permissions.md#lorawan-frequency-bands)。

### 使用控制台添加设备配置文件
<a name="lorawan-device-profile-console"></a>

如果您按 [使用控制台将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-end-devices-add.md#lorawan-end-device-spec-console) 中所述使用控制台添加无线设备，则在添加无线设备规范后，您可以添加设备配置文件。此外，您还可以在 **LoRaWAN** 选项卡上的 AWS IoT 控制台的 [Profiles](https://console.aws.amazon.com/iot/home#/wireless/profiles)（配置文件）的页面上添加无线设备。

您可以从默认设备配置文件中进行选择或创建新的设备配置文件。建议您使用默认设备配置文件。如果您的应用程序要求您创建设备配置文件，请提供**设备配置文件名称**，选择 **Frequency ban (RfRegion)**（频段（射频区域）），并将其他设置保持为默认值，除非在设备文档中另有指定。

### 使用 API 添加设备配置文件
<a name="lorawan-device-profile-api"></a>

如果要使用 API 添加无线设备，则必须在创建无线设备之前创建设备配置文件。

以下列表描述了执行与添加、更新或删除服务配置文件相关任务的 API 操作。

**服务配置文件的 AWS IoT Wireless API 操作**
+ [CreateDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDeviceProfile.html)
+ [GetDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html)
+ [ListDeviceProfiles](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListDeviceProfiles.html)
+ [UpdateDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateDeviceProfile.html)
+ [DeleteDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteDeviceProfile.html)

有关可用于创建和管理 适用于 LoRaWAN 的 AWS IoT Core 资源的操作和数据类型的完整列表，请参阅 [AWS IoT Wireless API 参考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 创建设备配置文件**  
您可以使用 AWS CLI 创建设备配置文件，方法是使用 [create-device-profile](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-device-profile.html) 命令。以下示例创建了一个配置文件。

```
aws iotwireless create-device-profile
```

运行此命令会自动创建一个带有 ID 的设备配置文件，您可以在创建无线设备时使用该 ID。现在，您可以使用以下 API 创建服务配置文件，然后使用设备和服务配置文件创建无线设备。

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:DeviceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
    "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
}
```

有关您可以使用的 CLI 的信息，请参阅 [AWS CLI 参考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html) 

## 添加服务配置文件
<a name="lorawan-service-profiles"></a>

服务配置文件描述了设备与应用程序服务器通信所需的通信参数。

### 使用控制台添加服务配置文件
<a name="lorawan-service-profile-console"></a>

如果您正在按照 [使用控制台将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-end-devices-add.md#lorawan-end-device-spec-console) 中所述使用控制台添加无线设备，则在添加设备配置文件后，您可以添加服务配置文件。此外，您还可以在 **LoRaWAN** 选项卡上的 AWS IoT 控制台的 [Profiles](https://console.aws.amazon.com/iot/home#/wireless/profiles)（配置文件）的页面上添加无线设备。

建议您将设置保留启用 **AddGWMetaData**，从而您将接收到每个负载的其他网关元数据，例如用于数据传输的 RSSI 和 SNR。

### 使用 API 添加服务配置文件
<a name="lorawan-service-profile-api"></a>

如果要使用 API 添加无线设备，则必须先创建服务配置文件，然后再创建无线设备。

以下列表描述了执行与添加、更新或删除服务配置文件相关任务的 API 操作。

**服务配置文件的 AWS IoT Wireless API 操作**
+ [CreateServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateServiceProfile.html)
+ [GetServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetServiceProfile.html)
+ [ListServiceProfiles](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListServiceProfiles.html)
+ [UpdateServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateServiceProfile.html)
+ [DeleteServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteServiceProfile.html)

有关可用于创建和管理 适用于 LoRaWAN 的 AWS IoT Core 资源的操作和数据类型的完整列表，请参阅 [AWS IoT Wireless API 参考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 创建服务配置文件**  
您可以使用 AWS CLI 创建服务，方法是使用 [create-service-profile](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-service-profile.html) 命令。以下示例创建了一个服务配置文件。

```
aws iotwireless create-service-profile
```

运行此命令会自动创建一个带有可在创建无线设备时使用的 ID 的服务配置文件。现在，您可以使用设备和服务配置文件创建无线设备。

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:ServiceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
    "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
}
```

# 将目标添加到 适用于 LoRaWAN 的 AWS IoT Core
<a name="lorawan-create-destinations"></a>

适用于 LoRaWAN 的 AWS IoT Core 目标描述了 AWS IoT 规则，该规则用于处理设备数据以供AWS服务采用。

因为大多数 LoRaWAN 设备不会将数据以AWS能够使用的格式发送到适用于 LoRaWAN 的 AWS IoT Core，因为 AWS IoT 规则必须先行处理。AWS IoT 规则包含解释设备数据的 SQL 语句和主题规则操作，这些操作会将 SQL 语句的结果发送到将要使用它的服务。

如果您是首次添加目标，我们建议您使用控制台。

## 使用控制台添加一个目标
<a name="lorawan-create-destination-console"></a>

如果您正在按照 [使用控制台将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-end-devices-add.md#lorawan-end-device-spec-console) 中所述使用控制台添加无线设备，则当您将无线设备规范和配置文件按前述操作添加到 适用于 LoRaWAN 的 AWS IoT Core 之后，您可以继续添加目标。

您还可以从 AWS IoT 控制台的 [Destinations](https://console.aws.amazon.com/iot/home#/wireless/destinations)（目标）页面添加一个 适用于 LoRaWAN 的 AWS IoT Core 目标。

要处理设备的数据，请在创建适用于 LoRaWAN 的 AWS IoT Core 目标时指定以下字段，然后选择 **Add destination**（添加目标）。
+ 

**目标详细信息**  
输入 **Destination name**（目标名称）以及您的目标描述（可选）。
+ 

**Rule name（规则名称）**  
被配置为评估设备发送的消息并处理设备数据的 AWS IoT 规则。规则名称将映射到您的目标。目标要求规则来处理收到的消息。您可以通过调用 AWS IoT 规则或通过发布到 AWS IoT 消息代理。
  + 如果选择 **Enter a rule name**（输入规则名称），请输入名称，然后选择 **Copy**（复制）以复制创建 AWS IoT 规则时要输入的规则名称。您可以选择 **Create rule**（创建规则）以立即创建规则，或导航到 AWS IoT 控制台的 [Rule](https://console.aws.amazon.com/iot/home#/create/rule)（规则）中心并使用该名称创建规则。

    您也可以输入规则并使用**高级**设置以指定主题名称。主题名称是在规则调用期间提供的，可通过使用 `topic` 规则中的表达式访问。有关AWS IoT规则的更多信息，请参阅[https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)。
  + 如果选择 **Publish to AWS IoT message broker**（发布到消息代理），输入主题名称。然后，您可以复制 MQTT 主题名称，多个订阅者可以订阅此主题以接收发布到该主题的消息。有关更多信息，请参阅[https://docs.aws.amazon.com/iot/latest/developerguide/topics.html](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

  有关目标的 AWS IoT 规则的更多信息，请参阅 [创建规则以处理 LoRaWAN 设备消息](lorawan-destination-rules.md)。
+ 

**角色名称**  
IAM 角色，该角色授予设备数据权限以访问在 **Rule name**（规则名称）中命名的规则。在控制台中，您可以创建新的服务角色或选择现有的服务角色。如果要创建新的服务角色，可以输入角色名称（例如，**IoTWirelessDestinationRole**)，或将其留白 适用于 LoRaWAN 的 AWS IoT Core 以生成新的角色名称。然后 适用于 LoRaWAN 的 AWS IoT Core 将代表您自动创建具有适当权限的 IAM 角色。

  有关 IAM 角色的更多信息，请参阅[使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)。

## 使用 API 添加目标
<a name="lorawan-create-destination-api"></a>

如果要改为使用 CLI 添加目标，必须先为目标创建规则和 IAM 角色。有关角色中目标所需的详细信息，请参阅 [为您的目标创建 IAM 角色](#lorawan-create-destinations-roles)。

以下列表包括执行与添加、更新或删除目标相关任务的 API 操作。

**AWS IoT Wireless目标的 API 操作**
+ [CreateDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html)
+ [GetDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDestination.html)
+ [ListDestinations](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListDestinations.html)
+ [UpdateDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateDestination.html)
+ [DeleteDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteDestination.html)

有关可用于创建和管理 适用于 LoRaWAN 的 AWS IoT Core 资源的操作和数据类型的完整列表，请参阅 [AWS IoT Wireless API 参考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 添加一个目标**  
您可以使用 AWS CLI 添加目标，方法是使用 [create-destination](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-destination.html) 命令。下面的示例演示如何通过输入规则名称创建目标，并将 `RuleName` 用作 `expression-type` 参数的值。如果要指定用于发布或订阅消息代理的主题名称，请将 `expression-type` 参数值更改为`MqttTopic`。

```
aws iotwireless create-destination \
    --name IoTWirelessDestination \
    --expression-type RuleName \
    --expression IoTWirelessRule \
    --role-arn arn:aws:iam::123456789012:role/IoTWirelessDestinationRole
```

运行此命令可创建带有指定目标名称、规则名称和角色名称的目标。有关目标的规则和角色名称的信息，请参阅 [创建规则以处理 LoRaWAN 设备消息](lorawan-destination-rules.md) 和 [为您的目标创建 IAM 角色](#lorawan-create-destinations-roles)。

有关您可以使用的 CLI 的信息，请参阅 [AWS CLI 参考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html)。

## 为您的目标创建 IAM 角色
<a name="lorawan-create-destinations-roles"></a>

适用于 LoRaWAN 的 AWS IoT Core 目标需要 IAM 角色为 适用于 LoRaWAN 的 AWS IoT Core 提供将数据发送到 AWS IoT 规则所需的权限。如果尚未定义此类角色，必须对其进行定义，以便出现在角色列表中。

如本主题之前所述，当您使用控制台添加目标时，适用于 LoRaWAN 的 AWS IoT Core 自动为您创建 IAM 角色。使用 API 或 CLI 添加目标时，必须为目标创建 IAM 角色。

**为您的 适用于 LoRaWAN 的 AWS IoT Core 目标角色创建 IAM 策略**

1. 打开 [IAM 控制台中的 Policies（策略）中心](https://console.aws.amazon.com/iam/home#/policies)。

1. 选择 **Create policy**（创建策略），然后选择 **JSON** 选项卡。

1. 在编辑器中，删除编辑器中的所有内容并粘贴此策略文档。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:DescribeEndpoint",
                   "iot:Publish"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 选择 **Review policy**（查看策略），并在 **Name**（名称）中输入此策略的名称。在下一流程中，您将需要使用此名称。

   如有需要，您还可以在 **Description**（说明）中描述此策略。

1. 选择**创建策略**。

**要为 适用于 LoRaWAN 的 AWS IoT Core 目标创建 IAM 角色**

1. 开启 [IAM 控制台的角色中心](https://console.aws.amazon.com/iam/home#/roles)，然后选择 **Create role**（创建角色）。

1. 在 **Select type of trusted entity**（选择受信任实体的类型）下，选择 **Another AWS 账户**（另一个亚马逊云科技账户）。

1. 在 **Account ID**（账户 ID），请输入您的AWS 账户 ID，然后选择 **Next: Permission**（下一步：权限）。

1. 在搜索框中，输入您在上一流程中创建的 IAM 策略名称。

1. 在搜索结果中，检查您在上一个流程中创建的 IAM 策略。

1. 依次选择 **Next: Tags**（下一步：标签）和 **Next: Review**（下一步：查看）。

1. 在 **Role name**（角色名称），输入此角色的名称，然后选择 **Create role**（创建角色）。

1. 在确认消息中，选择您创建的角色的名称以编辑新角色。

1. 在 **Summary**（摘要）页面上，选择 **Trust relationships**（信任关系），然后选择 **Edit trust relationship**（编辑信任关系）。

1. 在 **Policy Document**（策略文档）中，更改 `Principal` 属性以使其类似于此示例。

   ```
   "Principal": { 
       "Service": "iotwireless.amazonaws.com" 
   },
   ```

   在您更改 `Principal` 属性后，完整的策略文档应该如此示例所示。

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "iotwireless.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

1. 要保存更改并退出，请选择 **Update Trust Policy**（更新信任策略）。

定义了此角色后，您可以在配置 适用于 LoRaWAN 的 AWS IoT Core 目标时在角色列表中找到它。

# 创建规则以处理 LoRaWAN 设备消息
<a name="lorawan-destination-rules"></a>

AWS IoT 规则会将设备消息发送到其他服务。AWS IoT 规则还可以处理从 LoRaWAN 设备接收的二进制消息，以便将消息转换为其他格式，从而更加便于其他服务使用。

[适用于 LoRaWAN 的 AWS IoT Core 目标](lorawan-create-destinations.md)将无线设备与规则相关联，该规则将处理要发送到其他服务的设备消息数据。该规则会在 适用于 LoRaWAN 的 AWS IoT Core 收到数据时立即开始处理设备数据。[适用于 LoRaWAN 的 AWS IoT Core 目标](lorawan-create-destinations.md)可由消息具有相同数据格式并将数据发送到同一服务的所有设备共享。

## AWS IoT 规则如何处理设备消息
<a name="how-rules-process-message"></a>

AWS IoT 规则处理设备消息数据的方式取决于将接收数据的服务、设备消息数据的格式以及该服务所需的数据格式。通常，该规则会调用 AWS Lambda 函数将设备的消息数据转换为服务所需的格式，然后将结果发送到服务。

以下示意图显示了在消息数据在从无线设备移动到AWS服务的过程中是如何确保安全以及如何处理的。

![\[图片显示了 适用于 LoRaWAN 的 AWS IoT Core 数据如何从无线设备传递到 AWS IoT 和其他服务。\]](http://docs.aws.amazon.com/zh_cn/iot-wireless/latest/developerguide/images/iot-lorawan-data-flow.png)


1. LoRaWAN 无线设备在传输二进制消息之前会使用 AES128 CTR 模式对其进行加密。

1.  适用于 LoRaWAN 的 AWS IoT Core 会对二进制消息进行解密，并将解密的二进制消息负载编码为 base64 字符串。

1. 生成的 base64 编码消息将作为二进制消息负载（未格式化为 JSON 文档的消息负载）发送到分配给设备的目标中所描述的 AWS IoT 规则。

1. AWS IoT 规则将消息数据定向到规则配置中描述的服务。

从无线设备接收的加密二进制负载不会被 适用于 LoRaWAN 的 AWS IoT Core 修改或解释。解密的二进制消息负载仅编码为 base64 字符串。要使服务访问二进制消息负载中的数据元素，必须通过规则调用的函数从负载中解析数据元素。base64 编码的消息负载是一个 ASCII 字符串，因此可以将其存储以便稍后进行解析。

## 为 LoRaWAN 设备创建规则
<a name="create-lorawan-rules"></a>

适用于 LoRaWAN 的 AWS IoT Core 使用 AWS IoT 规则来安全地将设备消息直接发送到其他 AWS 服务，而无需使用消息代理。通过从摄取路径中删除消息代理，可以降低成本并优化数据流。

适用于 LoRaWAN 的 AWS IoT Core 规则如要将设备消息发送到其他 AWS 服务，则需要 适用于 LoRaWAN 的 AWS IoT Core 目标，并要将 AWS IoT 规则分配给该目标。AWS IoT 规则必须包含 SQL 查询语句和至少一个规则操作。

通常，AWS IoT 规则查询语句由以下内容组成：
+ 一个 SQL SELECT 子句，用于从消息负载中选择数据并设置其格式
+ 标识要使用的消息的主题筛选条件（规则查询语句中的 FROM 对象）
+ 可选条件语句（SQL WHERE 子句），用于指定执行操作的条件

以下是规则查询语句示例：

```
SELECT temperature FROM iot/topic' WHERE temperature > 50
```

构建 AWS IoT 规则来处理来自 LoRaWAN 设备的负载时，则不必将 FROM 子句指定为规则查询对象的一部分。规则查询语句必须具有 SQL SELECT 子句，并且可以包含或不包含 WHERE 子句。如果查询语句使用 FROM 子句，该子句会被忽略。

以下是一个可以处理来自 LoRaWAN 设备的负载的规则查询语句示例：

```
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort,
       WirelessMetadata.LoRaWAN.DevEui as DevEui, 
       PayloadData
```

在此示例中，`PayloadData` 是由您的 LoRaWAN 设备发送的 base64 编码二进制负载。

下面是一个示例规则查询语句，它可以对传入的有效负载执行二进制解码，并将其转换为不同的格式，如 JSON：

```
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort,
       WirelessMetadata.LoRaWAN.DevEui as DevEui, 
       aws_lambda("arn:aws:lambda:<region>:<account>:function:<name>",                                       
                  {                                      
                   "PayloadData":PayloadData,                                       
                   "Fport": WirelessMetadata.LoRaWAN.FPort   
                  }) as decodingoutput
```

有关使用 SELECT AND WHERE 子句的更多信息，请参阅 [https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html)。

有关 AWS IoT 规则以及如何创建和使用该规则的信息，请参阅 [https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) 和 [https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html)。

有关创建和使用 适用于 LoRaWAN 的 AWS IoT Core 目标的信息，请参阅 [将目标添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-create-destinations.md)。

有关在规则中使用二进制消息负载的信息，请参阅 [https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html](https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html)。

有关用于在传输过程中保护消息负载的数据安全和加密技术的详细信息，请参阅 [AWS IoT Wireless 中的数据保护](data-protection.md)。

有关显示 IoT 规则二进制解码和实现示例的参考体系架构，请参阅 [GitHub 上的 适用于 LoRaWAN 的 AWS IoT Core 解决方案示例](https://github.com/aws-samples/aws-iot-core-lorawan/tree/main/transform_binary_payload)。

# 连接您的 LoRaWAN 设备并验证其连接状态
<a name="lorawan-device-connection-status"></a>

在检查设备连接状态之前，您必须已经添加设备并将其连接到 适用于 LoRaWAN 的 AWS IoT Core。有关如何添加设备的信息，请参阅 [将您的无线设备添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-end-devices-add.md)。

添加设备后，请参阅设备的用户手册，了解如何从 LoRaWAN 设备初始发送上行链路消息。

## 使用控制台检查设备连接状态
<a name="lorawan-device-connection-status-console"></a>

要使用控制台检查连接状态，请导航到 AWS IoT 控制台的 [https://console.aws.amazon.com/iot/home#/wireless/devices](https://console.aws.amazon.com/iot/home#/wireless/devices)（设备）的页面，然后选择已添加的设备。在无线设备详细信息页面的 **Details**（详细信息）部分，您将看到上次接收上行链路的日期和时间。

## 使用 API 检查设备连接状态
<a name="lorawan-device-connection-status-api"></a>

要使用 API 检查连接状态，请使用 `GetWirelessDeviceStatistics` API。此 API 没有请求体，只包含显示最后一个上行链路何时收到的响应体。

```
HTTP/1.1 200
Content-type: application/json

{  
  “LastUplinkReceivedAt”: “2021-03-24T23:13:08.476015749Z”,
  "LoRaWAN": {
        "DataRate": 5,
        "DevEui": "647fda0000006420",
        "Frequency": 868100000
        "Gateways": [ 
         { 
            "GatewayEui": "c0ee40ffff29df10",
            "Rssi": -67,
            "Snr": 9.75
         }
      ],
  “WirelessDeviceId”: “30cbdcf3-86de-4291-bfab-5bfa2b12bad5"
}
```

## 后续步骤
<a name="lorawan-device-connection-next-steps"></a>

现在，您已连接设备并验证了连接状态，您可以使用 AWS IoT 控制台 **Test**（测试）页面的 [MQTT 测试客户端](https://console.aws.amazon.com/iot/home#/test)观察从设备接收的上行链路元数据格式。有关更多信息，请参阅[查看从 LoRaWAN 设备发送的上行链路消息的格式](lorawan-uplink-metadata-format.md)。