

# LoRaWAN デバイスに送信するダウンリンクメッセージをキューに入れる
<a name="lorawan-downlink-queue"></a>

クラウドホスト型アプリケーションおよび AWS のサービス は、ワイヤレスデバイスにダウンリンクメッセージを送信できます。ダウンリンクメッセージは、AWS IoT Core for LoRaWAN からワイヤレスデバイスに送信されるメッセージです。AWS IoT Core for LoRaWAN にオンボーディングした各デバイスに、ダウンリンクメッセージをスケジュールして送信できます。

ダウンリンクメッセージを送信する対象のデバイスが複数ある場合は、マルチキャストグループを使用できます。マルチキャストグループ内のデバイスは、同じマルチキャストアドレスを共有し、その後、受信側デバイスのグループ全体に配信されます。詳細については、「[マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)」を参照してください。

## ダウンリンクメッセージキューのしくみ
<a name="lorawan-how-downlink-works"></a>

LoRaWAN デバイスのデバイスクラスによって、キュー内のメッセージがデバイスにどのように送信されるかが決まります。クラス A デバイスは、デバイスがダウンリンクメッセージを受信できることを示すために、アップリンクメッセージを AWS IoT Core for LoRaWAN に送信します。。クラス B デバイスは、通常のダウンリンクスロットでメッセージを受信できます。クラス C デバイスは、いつでもダウンリンクメッセージを受信できます。デバイスクラスの詳細については、「[デバイスクラス](lorawan-manage-end-devices.md#lorawan-device-classes)」を参照してください。

次に、メッセージがキューに入れられ、クラス A デバイスに送信される方法を示します。

1. AWS IoT Core for LoRaWAN は、フレームポート、ペイロードデータ、および AWS IoT コンソールまたは AWS IoT Wireless API を使用して指定した確認モードパラメータを使用して、キューに追加したダウンリンクメッセージをバッファします。

1. LoRaWAN デバイスは、オンラインであることを示すアップリンクメッセージを送信し、ダウンリンクメッセージの受信を開始できます。

1. 複数のダウンリンクメッセージをキューに追加した場合は、AWS IoT Core for LoRaWAN は、[acknowledge (ACK)] (確認) フラグが設定された状態で、キュー内の最初のダウンリンクメッセージをデバイスに送信します。

1. デバイスは、アップリンクメッセージを直ちに AWS IoT Core for LoRaWAN に送信する、または次のアップリンクメッセージまでスリープし、メッセージに ACK フラグを含めます。

1. AWS IoT Core for LoRaWAN は ACK フラグ付きのアップリンクメッセージを受信し、ダウンリンクメッセージをキューからクリアし、デバイスがダウンリンクメッセージを正常に受信したことを示します。3 回チェックした後に ACK フラグがアップリンクメッセージに表示されない場合、メッセージは破棄されます。

## コンソールを使用してダウンリンクキューオペレーションを実行する
<a name="lorawan-downlink-queue-console"></a>

必要に応じて、AWS マネジメントコンソール を使用してダウンリンクメッセージをキューに入れ、個々のメッセージ、またはキュー全体をクリアすることがきます。クラス A デバイスの場合、アップリンクがデバイスから受信されてオンラインであることを示すと、キューに入れられたメッセージがデバイスに送信されます。メッセージが送信されると、キューから自動的にクリアされます。

**ダウンリンクメッセージをキューに入れる**  
ダウンリンクメッセージキューを作成するには

1. [[Devices hub of the AWS IoT console]](https://console.aws.amazon.com/iot/home#/wireless/devices) (IoT コンソールのデバイスハブ) へ移動し、ダウンリンクメッセージをキューに入れるデバイスを選択します。

1. デバイスの詳細ページの **[Downlink messages]** (ダウンリンクメッセージ) セクションで、**[Queue downlink messages]** (ダウンリンクメッセージをキューに入れる) を選択します。

1. ダウンリンクメッセージを設定するには、次のパラメータを指定します。
   + **FPort**: デバイスが AWS IoT Core for LoRaWAN と通信するフレームポートを選択します。
   + **Payload**: デバイスに送信するペイロードメッセージを指定します。最大ペイロードサイズは 242 バイトです。アダプティブデータレート (ADR) が有効になっている場合、AWS IoT Core for LoRaWAN では、ペイロードサイズに最適なデータレートを選択するために使用します。必要に応じて、データレートをさらに最適化できます。
   + **確認モード** : デバイスがダウンリンクメッセージを受信したかどうかを確認します。メッセージにこのモードが必要な場合は、データストリームに ACK フラグを含むアップリンクメッセージが表示され、メッセージはキューからクリアされます。

1. ダウンリンクメッセージをキューに追加するには、**[Submit]** (送信) を選択します。

ダウンリンクメッセージがキューに追加されました。メッセージが表示されない場合、またはエラーを受信した場合は、[ダウンリンクメッセージキューエラーのトラブルシューティング](#lorawan-downlink-queue-troubleshoot) の説明に従ってエラーをトラブルシューティングできます。

**注記**  
ダウンリンクメッセージがキューに追加されると、**FPort**、**Payload**、**確認モード** パラメータを編集できなくなります。これらのパラメータに異なる値を持つダウンリンクメッセージを送信するには、このメッセージを削除し、更新されたパラメータ値を含む新しいダウンリンクメッセージをキューに入れます。

キューには、追加したダウンリンクメッセージが一覧表示されます。デバイスと AWS IoT Core for LoRaWAN の間で交換されるアップリンクメッセージおよびダウンリンクメッセージのペイロードを表示するには、ネットワークアナライザを使用します。詳細については、「[ネットワークアナライザを使用したワイヤレスリソースフリートのリアルタイムでのモニタリング](network-analyzer-overview.md)」を参照してください。

**ダウンリンクメッセージキューの一覧表示**  
作成したダウンリンクメッセージがキューに追加されます。後続の各ダウンリンクメッセージは、このメッセージの後にキューに追加されます。ダウンリンクメッセージのリストは、デバイスの詳細ページの **[Downlink messages]** (ダウンリンクメッセージ) セクションに表示されます。アップリンクを受信すると、メッセージがデバイスに送信されます。デバイスがダウンリンクメッセージを受信すると、そのメッセージはキューから削除されます。次のメッセージがキュー内で上に移動し、デバイスに送信されます。

**個々のダウンリンクメッセージを削除するまたはキュー全体をクリアする**  
各ダウンリンクメッセージは、デバイスに送信された後、キューから自動的にクリアされます。個々のメッセージを削除したり、ダウンリンクキュー全体をクリアすることもできます。これらの操作は元に戻すことができません。
+ 送信したくないメッセージがキュー内に見つかった場合は、メッセージを選択し、**[Delete]** (削除) を選択します。
+ キューからデバイスにメッセージを送信したくない場合は、**[Clear downlink queue]** (ダウンリンクキューをクリア) を選択して、キュー全体をクリアできます。。

## API を使用してダウンリンクキューオペレーションを実行する
<a name="lorawan-downlink-queue-api"></a>

必要に応じて、AWS IoT Wireless APIを使用してダウンリンクメッセージをキューに入れたり、個々のメッセージ、またはキュー全体をクリアすることができます。

**ダウンリンクメッセージをキューに入れる**  
ダウンリンクメッセージキューを作成するには、[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 オペレーションまたは [cli/latest/reference/iotwireless/send-data-to-wireless-device.html](cli/latest/reference/iotwireless/send-data-to-wireless-device.html) CLI コマンドを使用します。

```
aws iotwireless send-data-to-wireless-device \
    --id "11aa5eae-2f56-4b8e-a023-b28d98494e49" \
    --transmit-mode "1" \
    --payload-data "SGVsbG8gVG8gRGV2c2lt" \
    --wireless-metadata LoRaWAN={FPort=1}
```

このコマンドを実行したときの出力により、ダウンリンクメッセージの `MessageId` が生成されます。場合によっては、`MessageId` を受信した場合でも、パケットはドロップされる可能性があります。この問題を解決する方法の詳細については、「[ダウンリンクメッセージキューエラーのトラブルシューティング](#lorawan-downlink-queue-troubleshoot)」を参照してください。

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

**キュー内のダウンリンクメッセージを一覧表示する**  
キュー内のすべてのダウンリンクメッセージを一覧表示するには、[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 オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-queued-messages.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-queued-messages.html) CLI コマンドを使用します。

```
aws iotwireless list-queued-messages
```

デフォルトでは、このコマンドを実行すると、最大 10 個のダウンリンクメッセージが表示されます。

**個々のダウンリンクメッセージを削除するまたはキュー全体をクリアする**  
キューから個々のメッセージを削除したり、キュー全体をクリアしたりするには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteQueuedMessages.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteQueuedMessages.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-queued-messages.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-queued-messages.html) CLI コマンドを使用します。
+ 個々のメッセージを削除するには、`wirelessDeviceId` により指定されたワイヤレスデバイスから削除するメッセージの `messageID` を指定します。
+ ダウンリンクキュー全体をクリアするには、`wirelessDeviceId` により指定されたワイヤレスデバイスの `messageID` を `*` に指定します。

## ダウンリンクメッセージキューエラーのトラブルシューティング
<a name="lorawan-downlink-queue-troubleshoot"></a>

ここでは、期待通りの結果が得られない場合に確認すべきことを説明します。
+ 

**ダウンリンクメッセージが AWS IoT コンソールに表示されない**  
[コンソールを使用してダウンリンクキューオペレーションを実行する](#lorawan-downlink-queue-console) の説明に従って、ダウンリンクメッセージを追加した後にキューにダウンリンクメッセージが表示されない場合、デバイスが*[activation]* (アクティベーション) または*[join procedure]* (結合手順) と呼ばれるプロセスを完了していないことが原因である可能性があります。この手順は、デバイスが AWS IoT Core for LoRaWAN にオンボードしているときに完了します。詳細については、「[コンソールを使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する](lorawan-end-devices-add.md#lorawan-end-device-spec-console)」を参照してください。

  デバイスを AWS IoT Core for LoRaWAN にオンボーディングした後、ネットワークアナライザーまたは Amazon CloudWatch を使用して、デバイスをモニタリングして、結合と再結合が成功したかどうかを確認できます。詳細については、「[モニタリングツール](monitoring-cloudwatch.md#monitoring-tools)」を参照してください。
+ 

**API の使用時にダウンリンクメッセージパケットが見つからない**  
`SendDataToWirelessDevice` API オペレーションを使用する場合、API は一意の `MessageId` を返します。ただし、LoRaWAN デバイスがダウンリンクメッセージを受信したかどうかは確認できません。ダウンリンクパケットは、デバイスが結合手順を完了していない場合などにドロップされる可能性があります。このエラーを解決する方法の詳細については、前のセクションを参照してください。
+ 

**ダウンリンクメッセージの送信時に ARN エラーが発生しない**  
キューからデバイスにダウンリンクメッセージを送信すると、Amazon リソースネーム (ARN) が見つからないというエラーが表示されることがあります。このエラーは、ダウンリンクメッセージを受信しているデバイスの宛先が正しく指定されていないために発生する可能性があります。このエラーを解決するには、デバイスの送信先の詳細を確認します。