

# 选择网关以接收 LoRaWAN 下行链路数据流量
<a name="lorawan-gateway-participate"></a>

当您从 适用于 LoRaWAN 的 AWS IoT Core 向设备发送下行链路消息时，您可以选择要用于下行链路数据流量的网关。您可以指定单个网关或从网关列表中进行选择，以接收下行链路流量。

## 如何指定网关列表
<a name="lorawan-participate-how"></a>

当使用 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html) API 操作从 适用于 LoRaWAN 的 AWS IoT Core 向设备发送下行链路消息时，您可以指定要使用的单个网关或网关列表。调用 API 操作时，通过为网关使用 `ParticipatingGateways` 对象指定以下参数。

**注意**  
您要使用的网关列表在 AWS IoT 控制台中不可用。仅当使用 `SendDataToWirelessDevice` API 操作或 CLI 时，才可以指定要使用的这一网关列表。
+ `DownlinkMode`：指示是以顺序模式还是并发模式发送下行链路消息。对于 A 类设备，请指定 `UsingUplinkGateway`，以仅使用先前上行链路消息传输中选定的网关。
+ `GatewayList`：您要用于发送下行链路数据流量的网关列表。下行链路负载将以指定的频率发送到指定的网关。这是使用由 `GatewayId` 和 `DownlinkFrequency` 对组成的 `GatewayListItem` 对象的列表来表示的。
+ `TransmissionInterval`：适用于 LoRaWAN 的 AWS IoT Core 在将负载传输到下一个网关之前将等待的时间。

**注意**  
您可以将此网关列表指定为仅在向 B 类或 C 类无线设备发送下行链路消息时使用。如果您使用 A 类设备，则在向设备发送下行链路消息时，将使用您在发送上行链路消息时选择的网关。

下面的示例显示如何为网关指定这些参数。`input.json` 文件将包含其他详细信息。有关使用 `SendDataToWirelessDevice` API 操作发送下行链路消息的更多信息，请参阅[使用 API 执行下行链路队列操作](lorawan-downlink-queue.md#lorawan-downlink-queue-api)。

**注意**  
使用 AWS IoT 控制台从 适用于 LoRaWAN 的 AWS IoT Core 发送下行链路消息时，用于指定参与网关列表的参数不可用。

```
aws iotwireless send-data-to-wireless-device \
    --id "11aa5eae-2f56-4b8e-a023-b28d98494e49" \
    --transmit-mode "1" \
    --payload-data "SGVsbG8gVG8gRGV2c2lt" \
    --cli-input-json file://input.json
```

下面显示的是 `input.json` 文件的内容。

**input.json 的内容**

```
{
    "WirelessMetadata": {
        "LoRaWAN": {
            "FPort": "1", 
            "ParticipatingGateways": {
                "DownlinkMode": "SEQUENTIAL", 
                "TransmissionInterval": 1200,
                "GatewayList": [
                    {
                        "DownlinkFrequency": 100000000,
                        "GatewayID": a01b2c34-d44e-567f-abcd-0123e445663a
                    },
                    {
                        "DownlinkFrequency": 100000101,
                        "GatewayID": 12345678-a1b2-3c45-67d8-e90fa1b2c34d
                    }
                ]
            }
        }
    }
}
```

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

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

## 获取有关参与网关的列表的信息
<a name="lorawan-participate-get"></a>

您可以通过列出下行链路队列中的消息，获取有关参与接收下行链路消息的网关列表的信息。要列出消息，请使用 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListQueuedMessages.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListQueuedMessages.html) API。

```
aws iotwireless list-queued-messages \
    --wireless-device-type "LoRaWAN"
```

运行此命令会返回有关队列中的消息及其参数的信息。