

# 如何使用公共网络支持
<a name="lorawan-roaming-use"></a>

要启用 Everynet 的公共网络支持，请在创建服务配置文件时启用某些漫游参数。在此测试版中，这些参数在您使用 AWS IoT Wireless API 或 AWS CLI 时可用。以下各节显示了必须启用的参数以及如何使用 AWS CLI 启用公共网络。

**注意**  
只有在创建新的服务配置文件时，才能启用公共网络支持。您无法使用这些参数更新现有配置文件以启用公共网络。

**Topics**
+ [漫游参数](#lorawan-roaming-parameters)
+ [为设备启用公共网络支持](#lorawan-roaming-enable)

## 漫游参数
<a name="lorawan-roaming-parameters"></a>

在为设备创建服务配置文件时，请指定以下参数。在从 AWS IoT 控制台的[配置文件](https://console.aws.amazon.com/iot/home#/wireless/profiles)中心添加服务配置文件时，请指定这些参数，也可以使用 AWS IoT Wireless API 操作 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateServiceProfile.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateServiceProfile.html) 或 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/create-service-profile.html](https://docs.aws.amazon.com/cli/latest/reference/create-service-profile.html)。

**注意**  
适用于 LoRaWAN 的 AWS IoT Core 不支持移交漫游。创建服务配置文件时，您无法启用指定是否使用移交漫游的 `HrAllowed` 参数。
+ 允许漫游激活（`RaAllowed`）：此参数指定是否启用漫游激活。漫游激活使终端设备能够在 vNS 的覆盖范围内激活。使用漫游特征时，`RaAllowed` 必须设置为 `true`。
+ 允许被动漫游（`PrAllowed`）：此参数指定是否启用被动漫游。使用漫游特征时，`PrAllowed` 必须设置为 `true`。

## 为设备启用公共网络支持
<a name="lorawan-roaming-enable"></a>

要在设备上启用公共 LoRaWAN 网络支持，请运行以下过程。

**注意**  
只能为 OTAA 设备启用公共网络功能。使用 ABP 作为激活方法的设备不支持此特征。

1. 

**使用漫游参数创建服务配置文件**

   通过启用漫游参数创建服务配置文件。
**注意**  
在为要与该服务配置文件关联的设备创建设备配置文件时，我们建议您为 `RxDelay1` 参数指定一个较大的值，至少大于 2 秒。
   + 

**使用 AWS IoT控制台**  
转到 AWS IoT 控制台的[配置文件](https://console.aws.amazon.com/iot/home#/wireless/profiles)中心，然后选择**添加服务配置文件**。创建配置文件时，选择**启用公共网络**。
   + 

**使用 AWS IoT Wireless API**  
要在创建服务配置文件时启用漫游功能，请使用 [CreateServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateServiceProfile.html) API 操作或 [https://docs.aws.amazon.com/cli/latest/reference/create-service-profile.html](https://docs.aws.amazon.com/cli/latest/reference/create-service-profile.html) CLI 命令，如下例所示。

     ```
     aws iotwireless create-service-profile \ 
         --region {{us-east-1}} \
         --name {{roamingprofile1}} \ 
         --lorawan '{"AddGwMetadata":true,"PrAllowed":true,"RaAllowed":true}'
     ```

     运行此命令将返回服务配置文件的 ARN 和 ID 作为输出。

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

1. 

**检查服务配置文件中的漫游参数**

   要检查您指定的漫游参数，可以在控制台中或使用 `get-service-profile` CLI 命令查看服务配置文件，如下例所示。
   + 

**使用 AWS IoT控制台**  
转到 AWS IoT 控制台的[配置文件](https://console.aws.amazon.com/iot/home#/wireless/profiles)中心，然后选择您创建的配置文件。在详细信息页面的**配置文件配置**选项卡中，您将看到 **RaAllowed** 和 **PrAllowed** 设置为 `true`。
   + 

**使用 AWS IoT Wireless API**  
要查看您启用的漫游参数，请使用 [GetServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetServiceProfile.html) API 操作或 [https://docs.aws.amazon.com/cli/latest/reference/get-service-profile.html](https://docs.aws.amazon.com/cli/latest/reference/get-service-profile.html) CLI 命令，如下例所示。

     ```
     aws iotwireless get-service-profile \ 
         --region {{us-east-1}} \ 
         --id {{12345678-a1b2-3c45-67d8-e90fa1b2c34d}}
     ```

     运行此命令会将服务配置文件详细信息作为输出返回，包括漫游参数 `RaAllowed` 和 `PrAllowed` 的值。

     ```
     {
         "Arn": "arn:aws:iotwireless:{{us-east-1}}:{{123456789012}}:ServiceProfile/{{12345678-a1b2-3c45-67d8-e90fa1b2c34d}}",
         "Id": {{"12345678-a1b2-3c45-67d8-e90fa1b2c34d"}},
         "Name": {{"roamingprofile1"}}
         "LoRaWAN": {
             "UlRate": 60,
             "UlBucketSize": 4096,
             "DlRate": 60,
             "DlBucketSize": 4096,
             "AddGwMetadata": true,
             "DevStatusReqFreq": 24,
             "ReportDevStatusBattery": false,
             "ReportDevStatusMargin": false,
             "DrMin": 0,
             "DrMax": 15,
             "PrAllowed": true,
             "RaAllowed": true,
             "NwkGeoLoc": false,
             "TargetPer": 5,
             "MinGwDiversity": 1
         }
     }
     ```

1. 

**将服务配置文件附加到设备**

   将您使用漫游参数创建的服务配置文件附加到终端设备。您也可以创建设备配置文件并为无线设备添加目标。您将使用此目标路由从您的设备发送的上行链路消息。有关创建设备配置文件和目标的更多信息，请参阅[添加设备配置文件](lorawan-define-profiles.md#lorawan-device-profiles)和[将目标添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-create-destinations.md)。
   + 

**登记新设备**  
如果您尚未登记设备，则可以指定此服务配置文件，以便在将设备添加 适用于 LoRaWAN 的 AWS IoT Core 时使用。以下命令显示如何使用 `create-wireless-device` CLI 命令，通过您创建的服务配置文件的 ID 添加设备。有关使用控制台添加服务配置文件的信息，请参阅[使用控制台将您的无线设备规范添加到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-end-devices-add.md#lorawan-end-device-spec-console)。

     ```
     aws iotwireless create-wireless-device --cli-input-json {{file://createdevice.json}}
     ```

     下面显示的是 {{`createdevice.json`}} 文件的内容。

     **createdevice.json 的内容**

     ```
     {
         "Name": {{"DeviceA"}},  
         "Type": LoRaWAN,
         "DestinationName": {{"RoamingDestination1"}},
         "LoRaWAN": {
             "DeviceProfileId": {{"ab0c23d3-b001-45ef-6a01-2bc3de4f5333"}},
             "ServiceProfileId": {{"12345678-a1b2-3c45-67d8-e90fa1b2c34d"}},
             "OtaaV1_1": {
                 "AppKey": {{"3f4ca100e2fc675ea123f4eb12c4a012"}},
                 "JoinEui": {{"b4c231a359bc2e3d"}},
                 "NwkKey": {{"01c3f004a2d6efffe32c4eda14bcd2b4"}}
             },
             "DevEui": {{"ac12efc654d23fc2"}}
         },
     }
     ```

     运行此命令的输出将生成无线设备的 ARN 和 ID 作为输出。

     ```
     {
         "Arn": "arn:aws:iotwireless:{{us-east-1:123456789012}}:WirelessDevice/{{1ffd32c8-8130-4194-96df-622f072a315f}}",
         "Id": "{{1ffd32c8-8130-4194-96df-622f072a315f}}"
     }
     ```
   + 

**更新现有设备**  
如果您已经登记了设备，则可以更新现有的无线设备以使用此服务配置文件。以下命令显示如何使用 `update-wireless-device` CLI 命令，通过您创建的服务配置文件的 ID 更新设备。

     ```
     aws iotwireless update-wireless-device \
         --id {{"1ffd32c8-8130-4194-96df-622f072a315f"}} \
         --service-profile-id {{"12345678-a1b2-3c45-67d8-e90fa1b2c34d"}} \ 
         --description {{"Using roaming service profile A"}}
     ```

     此命令不会生成任何输出。您可以使用 `GetWirelessDevice` API 或 `get-wireless-device` CLI 命令来获取更新的信息。

1. 

**使用 Everynet 将设备连接到云端**

   由于已启用漫游，您的设备现在必须执行联接才能获得新的 `DevAddr`。当您使用 OTAA 时，LoRaWAN 设备会发送联接请求，网络服务器将允许该请求。然后，它可以使用 Everynet 提供的网络覆盖范围连接到 AWS Cloud。有关如何为设备执行激活过程或联接的说明，请参阅设备文档。
**注意**  
只能针对使用 OTAA 作为激活方式的设备，启用漫游功能并连接到公共网络。不支持 ABP 设备。有关如何为设备执行激活过程或联接的说明，请参阅设备文档。请参阅 [激活模式](lorawan-manage-end-devices.md#lorawan-activation-modes)。
要禁用设备的漫游功能，您可以取消设备与该服务配置文件的关联，然后将其与漫游参数设置为 `false` 的另一个服务配置文件进行关联。切换到此服务配置文件后，您的设备必须再次加入，这样它们就不会继续在公共网络上运行。

1. 

**交换上行链路和下行链路消息**

   在将设备联接到 适用于 LoRaWAN 的 AWS IoT Core 后，即可开始在设备和云端之间交换消息。
   + 

**查看上行链路消息**  
当您从设备发送上行链路消息时，适用于 LoRaWAN 的 AWS IoT Core 使用您之前配置的目标将这些消息传送到您的 AWS 账户。这些消息将通过 Everynet 的网络从您的设备发送到云端。

     您可以使用 AWS IoT 规则名称查看消息，也可以使用 MQTT 客户端订阅在创建目标时指定的 MQTT 主题。有关规则名称和您指定的其他目标详细信息的更多信息，请参阅[使用控制台添加一个目标](lorawan-create-destinations.md#lorawan-create-destination-console)。

     有关查看上行链路消息和格式的更多信息，请参阅[查看从 LoRaWAN 设备发送的上行链路消息的格式](lorawan-uplink-metadata-format.md)。
   + 

**发送下行链路消息**  
您可以从控制台对下行链路消息排队并向设备发送这些消息，也可以使用 AWS IoT Wireless API 命令 `SendDataToWirelessDevice` 或 AWS CLI 命令 `send-data-to-wireless-device` 执行这一过程。有关对下行链路消息排队和发送这些消息的信息，请参阅[管理要发送到 LoRaWAN 设备的下行链路消息队列](lorawan-downlink-queue.md)。

     以下代码显示了如何使用 `send-data-to-wireless-device` CLI 命令发送下行链路消息的示例。您可以指定接收数据的无线设备的 ID、有效负载、是否使用确认模式以及无线元数据。

     ```
     aws iotwireless send-data-to-wireless-device \
         --id {{"1ffd32c8-8130-4194-96df-622f072a315f"}} \
         --transmit-mode "1" \
         --payload-data {{"SGVsbG8gVG8gRGV2c2lt"}} \
         --wireless-metadata LoRaWAN={FPort=1}
     ```

     运行此命令的输出会生成下行链路消息的 `MessageId`。
**注意**  
在某些情况下，即使收到 `MessageId`，数据包也可能丢失。有关对此类场景进行问题排查和解决问题的信息，请参阅[排查下行链路消息队列错误](lorawan-downlink-queue.md#lorawan-downlink-queue-troubleshoot)。

     ```
     {
         MessageId: {{"6011dd36-0043d6eb-0072-0008"}}
     }
     ```
   + 

**查看覆盖范围信息**  
启用公共网络后，可以在 AWS IoT 控制台中查看网络覆盖范围信息。转至 AWS IoT 控制台的[https://console.aws.amazon.com/iot/home#/wireless/network-coverage](https://console.aws.amazon.com/iot/home#/wireless/network-coverage)中心，然后搜索位置以在地图上查看设备的覆盖范围信息。
**注意**  
此特征使用 Amazon Location Service 在 Amazon Location 地图上显示您设备的覆盖范围信息。使用 Amazon Location 地图之前，请查看 Amazon Location Service 的条款和条件。请注意，AWS 可能会将您的 API 查询传输给您选择的第三方数据提供商，这些提供商可能不在您当前使用的 AWS 区域范围内。有关更多信息，请参阅 [AWS 服务条款](https://aws.amazon.com/service-terms)。