

# AWS IoT Core for LoRaWAN
<a name="iot-lorawan"></a>

AWS IoT Core for LoRaWAN は、Configuration and Update Server (CUPS) および Firmware Updates Over-The-Air (FUOTA) 機能を使用してゲートウェイ管理を提供する、フルマネージド型の LoRaWAN Network Server (LNS) です。プライベート LNS を AWS IoT Core for LoRaWAN に置き換えて、Long Range Wide Area Network (LoRaWAN) デバイスおよびゲートウェイを AWS IoT Core に接続できます。そうすることで、メンテナンス、運用コスト、セットアップ時間、およびオーバーヘッドコストを削減できます。

**注記**  
AWS IoT Core for LoRaWAN は、IPv4 アドレス形式のみをサポートしています。IPv6 またはデュアルスタック設定 (IPv4 と IPv6) のサポートはありません。詳細については、「[IPv6 をサポートする AWS のサービス](https://docs.aws.amazon.com/general/latest/gr/aws-ipv6-support.html#ipv6-service-support)」を参照してください。

## 序章
<a name="iot-lorawan-intro"></a>

LoRaWAN デバイスは、LoRaWAN プロトコルを使用してライセンスフリーの無線スペクトルで動作する、長距離、低電力、バッテリー駆動のデバイスです。LoRaWAN は LoRa 上に構築された Low Power Wide Area Network (LPWAN) 通信プロトコルです。LoRa は、デバイス間の低消費電力、広域通信を可能にする物理層プロトコルです。

LoRaWAN デバイスを AWS IoT に接続するには、LoRaWAN ゲートウェイを使用する必要があります。ゲートウェイは、デバイスを AWS IoT Core for LoRaWAN に接続してメッセージを交換するためのブリッジとして機能します。AWS IoT Core for LoRaWAN は AWS IoT ルールエンジンを使用して LoRaWAN デバイスから他の AWS IoT のサービスにメッセージをルーティングします。

開発労力を削減し、デバイスを AWS IoT Core for LoRaWAN に迅速にオンボードするために、LoRaWAN 認定エンドデバイスを使用することをお勧めします。詳細については、「[AWS IoT Core for LoRaWAN 製品ページ](https://aws.amazon.com/iot-core/lorawan)」を参照してください。デバイスの LoRaWAN 認証取得については、「[Certifying LoRaWAN products](https://lora-alliance.org/lorawan-certification/)」を参照してください。

## AWS IoT Core for LoRaWAN へのアクセス
<a name="connect-iot-lorawan-how-use"></a>

コンソールまたは AWS IoT Wireless API を使用すると、LoRaWAN デバイスやゲートウェイを素早く AWS IoT Core for LoRaWAN にオンボードできます。

**コンソールを使用する場合**  
AWS マネジメントコンソール を使用して LoRaWAN デバイスおよびゲートウェイをオンボードするには、AWS マネジメントコンソール にサインインして AWS IoT コンソールの [[AWS IoT Core for LoRaWAN]](https://console.aws.amazon.com/iot/home#/wireless/landing) ページに移動します。次に、**[概要]** セクションを使用して、ゲートウェイとデバイスを AWS IoT Core for LoRaWAN に追加します。詳細については、「[コンソールを使用してデバイスとゲートウェイを AWS IoT Core for LoRaWAN にオンボードする](lorawan-getting-started.md#lorawan-console)」を参照してください。

**API または CLI の使用**  
[AWS IoT Wireless](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/) API を使用して、Sidewalk デバイスと LoRaWAN デバイスの両方をオンボードできます。AWS IoT Core for LoRaWAN が構築されている AWS IoT Wireless API は、AWS SDK でサポートされています。詳細については、[AWS SDK およびツールキット](https://aws.amazon.com/getting-started/tools-sdks/)を参照してください。

AWS CLI を使用してコマンドを実行し、LoRaWAN ゲートウェイおよびデバイスをオンボードおよび管理することができます。詳細については、「[AWS IoT Wireless CLI リファレンス](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html)」を参照してください。

## AWS IoT Core for LoRaWAN のリージョンとエンドポイント
<a name="connect-iot-lorawan-regions-endpoints"></a>

AWS IoT Core for LoRaWAN では、AWS リージョン に固有のコントロールプレーンとデータプレーン API エンドポイントのサポートが提供されます。データプレーン API エンドポイントは、AWS アカウント と AWS リージョン リージョンに固有です。AWS IoT Core for LoRaWAN エンドポイントの詳細については、*AWS 全般のリファレンス*の「[AWS IoT Core for LoRaWAN エンドポイント](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-wireless_region)」を参照してください。

デバイスと AWS IoT の間のより安全な通信を実現するため、パブリックインターネットを介さず、V仮想プライベートクラウド (VPC) で AWS PrivateLink を介して AWS IoT Core for LoRaWAN にデバイスを接続できます。詳細については、「[AWS IoT Core for LoRaWAN とインターフェース VPC エンドポイント (AWS PrivateLink)](vpc-interface-endpoints.md)」を参照してください。

AWS IoT Core for LoRaWAN には、デバイス間で送信されるデバイスデータと、AWS IoT Wireless API オペレーション の最大 TPS に適用されるクォータがあります。詳細については、「*AWS 全般のリファレンス*」の「[AWS IoT Core for LoRaWAN クォータ](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#wireless-limits)」を参照してください。

## AWS IoT Core for LoRaWAN の料金
<a name="connect-iot-lorawan-pricing"></a>

新しいカスタマーで、AWS にサインアップすると、[AWS 無料利用枠](https://aws.amazon.com/free/)を利用して、AWS IoT Core for LoRaWAN を無料で使い始めることができます。AWS IoT Core for LoRaWAN では、実際に使用した分に対してのみお支払いいただきます。全般的な製品の概要と料金の詳細については、「[AWS IoT Core の料金](https://aws.amazon.com/iot-core/pricing/)」を参照してください。

# AWS IoT Core for LoRaWAN とは
<a name="what-is-iot-lorawan"></a>

AWS IoT Core for LoRaWAN では、LoRaWAN デバイスおよびゲートウェイを AWS に接続することで、プライベート LoRaWAN Network Server (LNS) を置き換えます。AWS IoT ルールエンジンを使用して、LoRaWAN デバイスから受信したメッセージをルーティングできます。メッセージをフォーマットして、他の AWS IoT サービスに送信できます。AWS IoT とのデバイス通信のセキュリティを確保するために、AWS IoT Core for LoRaWAN では X.509 証明書を使用します。

AWS IoT Core for LoRaWAN は、AWS IoT Core が LoRaWAN ゲートウェイやデバイスと通信するために必要なサービスポリシーとデバイスポリシーを管理します。また、AWS IoT Core for LoRaWAN は、デバイスデータを他のサービスに送信する AWS IoT ルールを記述する送信先も管理します。

## AWS IoT Core for LoRaWAN の機能
<a name="iot-lorawan-features"></a>

AWS IoT Core for LoRaWAN を使用すると、次のことが可能になります。
+ LoRaWAN デバイスおよびゲートウェイを AWS IoT にオンボードして接続する。プライベート LNS をセットアップおよび管理する必要はありません。
+ LoRa Alliance によって標準化された 1.0.x または 1.1 LoRaWAN 仕様に準拠する LoRaWAN デバイスを接続する。これらのデバイスは、クラス A、クラス B、またはクラス C モードで動作できます。
+ LoRa Basics Station バージョン 2.0.4 以降をサポートする LoRaWAN ゲートウェイを使用します。AWS IoT Core for LoRaWAN に認定されているすべてのゲートウェイは、互換性のあるバージョンの LoRa Basics Station を実行します。
+ 公開されている LoRaWAN ネットワークを使用して LoRaWAN デバイスをクラウドに接続すると、デプロイまでの時間が短縮され、プライベート LoRaWAN ネットワークを管理する必要がなくなり、時間とコストが削減されます。
+ AWS IoT Core for LoRaWAN の適応データレートを使用して、信号強度、帯域幅、および拡散係数をモニタリングします。そして、必要に応じてデータレートを最適化します。また、ネットワークアナライザを使用すると、LoRaWAN リソースをリアルタイムでモニタリングできます。
+ CUPS サービスを使用して LoRaWAN ゲートウェイのファームウェアを更新し、Firmware Updates Over-The-Air (FUOTA) を使用して LoRaWAN デバイスのファームウェアを更新します。

以下のトピックでは、LoRaWAN 技術と AWS IoT Core for LoRaWAN についての詳細情報を示します。

**Topics**
+ [AWS IoT Core for LoRaWAN の機能](#iot-lorawan-features)
+ [LoRaWAN とは](what-is-lorawan.md)
+ [AWS IoT Core for LoRaWAN の働き](how-iot-lorawan-works.md)

# LoRaWAN とは
<a name="what-is-lorawan"></a>

[LoRa Alliance](https://lora-alliance.org/about-lorawan) は、LoRaWAN について、*「地域、国、またはグローバルネットワークにおいて、バッテリー駆動の「モノ」をインターネットにワイヤレスで接続するように設計された Low Power Wide Area (LPWA) ネットワーキングプロトコルであり、双方向通信、エンドツーエンドのセキュリティ、モビリティ、ローカリゼーションサービスなどの主要なモノのインターネット (IoT) の要件を満たすことを目標としています」*と述べています。

## LoRa と LoRaWAN
<a name="lora-and-lorawan"></a>

LoRaWAN プロトコルは、LoRa 上で機能する省電力広域ネットワーク (LPWAN) 通信プロトコルです。

LoRaWAN は、省電力広域ネットワークの国際標準として認識されています。詳細については、「[正式に ITU 国際標準として認識されている LoRAWAN](https://lora-alliance.org/lora-alliance-press-release/lorawan-formally-recognized-as-itu-international-standard-for-low-power-wide-area-networking/)」を参照してください。LoRaWAN 仕様はオープンなので、誰でも LoRa ネットワークを設定して運用できます。

LoRa は、ライセンスフリーの無線周波数スペクトルで動作する無線オーディオ周波数技術です。LoRa は、スペクトル拡散変調を使用する物理層プロトコルで、帯域幅を犠牲にして長距離通信をサポートします。中央の周波数を持つ狭帯域波形を使用してデータを送信するため、干渉に対して堅牢になります。

## LoRaWAN 技術の特徴
<a name="lorawan-characteristics"></a>
+ 直線距離で最大 10 マイルまでの長距離通信が可能です。
+ 最長 10 年間という長いバッテリー持続時間があります。バッテリー寿命を延ばすには、デバイスをクラス A またはクラス B モードで動作させます。このモードでは、ダウンリンクのレイテンシーが長くなります。
+ デバイスおよびメンテナンスのコストが低く抑えられます。
+ ライセンスフリーの無線スペクトラムですが、リージョン固有の規制が適用されます。
+ 低消費電力ですが、データレートに応じてペイロードサイズが 51 バイトから 241 バイトまでに制限されます。データレートは、最大の 222 ペイロードサイズで 0.3 Kbit/秒 - 27 Kbit/秒にすることができます。

## LoRaWAN プロトコルバージョン
<a name="lorawan-versions"></a>

LoRa Alliance は、LoRaWAN 仕様ドキュメントを使用して LoRaWAN プロトコルを指定します。リージョン固有の規制を考慮して、LoRa Alliance はリージョンパラメータドキュメントも公開しています。詳細については、「[LoRaWAN リージョンパラメータと仕様](https://lora-alliance.org/resource_hub/rp2-102-lorawan-regional-parameters/)」を参照してください。

LoRaWAN の初期リリースはバージョン 1.0 です。リリースされた追加バージョンは、1.0.1、1.0.2、1.0.3、1.0.4、および 1.1 です。バージョン 1.0.1～1.0.4 は、一般的に 1.0.x と呼ばれます。

## LoRaWAN の詳細
<a name="lorawan-learn-more"></a>

以下のリンクには、LoRaWAN テクノロジーと LoRa Basics Station に関する有益な情報が含まれています。LoRa Basics Station は、LoRaWAN用にエンドデバイスを AWS IoT Core for LoRaWAN に接続するための LoRaWAN ゲートウェイで動作するソフトウェアです。
+ 

**[ITU 国際標準として認識されている LoRaWAN](https://lora-alliance.org/lora-alliance-press-release/lorawan-formally-recognized-as-itu-international-standard-for-low-power-wide-area-networking/)**  
LoRaWAN は、ITU により、省電力広域ネットワークの国際標準として正式に文書化されています。この標準は、推奨事項 ITU-T Y.4480「広域ワイヤレスネットワーク用の低電力プロトコル」というタイトルになっています。
+ 

**[LoRaWAN のモノの基礎](https://www.thethingsnetwork.org/docs/lorawan/)**  
LoRaWAN のモノの基礎には、LoRaWAN の基礎を説明する紹介ビデオと、LoRa および LoRaWAN について学ぶのに役立つ一連の章が含まれています。
+ 

**[LoRaWAN とは](https://lora-alliance.org/resource_hub/what-is-lorawan/)**  
LoRa Alliance は、さまざまなリージョンの LoRaWAN 仕様のまとめなど、LoRa および LoRaWAN の技術的な概要を提供しています。
+ 

**[LoRa Basics Station](https://lora-developers.semtech.com/resources/tools/lora-basics/)**  
Semtech 社は、ゲートウェイとエンドノードの LoRa Basics に関する有用な概念を提供します。LoRa Basics Station は、LoRaWAN ゲートウェイ上で動作するオープンソースソフトウェアであり、Semtech 社の [GitHub](https://github.com/lorabasics/basicstation) リポジトリを介して管理および配信されています。また、LoRaWAN データの交換方法や設定の更新方法について説明した LNS および CUPS プロトコルについても学習できます。
+ 

**[LoRaWAN リージョンのパラメータと仕様](https://lora-alliance.org/resource_hub/rp2-102-lorawan-regional-parameters/)**  
RP002-1.0.2 ドキュメントには、LoRaWAN Layer 2 仕様のすべてのバージョンのサポートが含まれています。これには、LoRaWAN 仕様とリージョンパラメータ、およびさまざまな LoRaWAN バージョンに関する情報が含まれています。

# AWS IoT Core for LoRaWAN の働き
<a name="how-iot-lorawan-works"></a>

LoRaWAN ネットワークアーキテクチャは、ゲートウェイがエンドデバイスと LoRaWAN ネットワークサーバー (LNS) 間で情報を中継する「star of stars」トポロジーでデプロイされています。以下に、LoRaWAN デバイスが AWS IoT Core for LoRaWAN とやりとりする方法を示します。また、AWS IoT Core for LoRaWAN が LNSとして機能し、AWS クラウド で他の AWS のサービス と通信する方法も示します。

![\[AWS IoT Core が IoT デバイスを AWS IoT に接続するデバイスエンドポイントと、アプリケーションや他のサービスを AWS IoT Core に接続するサービスエンドポイントを提供する方法を示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-how-it-works.png)


LoRaWAN デバイスは LoRaWAN ゲートウェイを介して AWS IoT Core と通信します。AWS IoT Core for LoRaWAN は、AWS IoT Core が LoRaWAN ゲートウェイやデバイスを管理し、それらと通信するために必要なサービスポリシーとデバイスポリシーを管理します。また、AWS IoT Core for LoRaWAN は、デバイスデータを他のサービスに送信する AWS IoT ルールを記述する送信先も管理します。

## AWS IoT Core for LoRaWAN の使用を開始する
<a name="lorawan-get-started-resources"></a>

次の手順は、AWS IoT Core for LoRaWAN の使用を開始する方法の概要を示しています。

1. 

**必要なワイヤレスデバイスと LoRaWAN ゲートウェイを選択する。**  
[AWS Partner Device Catalog](https://devices.amazonaws.com/search?page=1&sv=iotclorawan) には、AWS IoT Core for LoRaWAN での使用が認定されているゲートウェイとデベロッパーキットが含まれています。詳細については、「[AWS Partner Device Catalog の認定されたゲートウェイの使用](lorawan-manage-gateways.md#lorawan-qualified-gateways)」を参照してください。

1. 

**ワイヤレスデバイスと LoRaWAN ゲートウェイを AWS IoT Core for LoRaWAN に追加します。**  
[AWS IoT Core for LoRaWAN へのゲートウェイとデバイスの接続](lorawan-getting-started.md) では、リソースの説明方法や、ワイヤレスデバイスと LoRaWAN ゲートウェイを AWS IoT Core for LoRaWAN に追加する方法に関する情報が提供されています。また、これらのデバイスを管理し、データを AWS のサービスに送信するために必要な他の AWS IoT Core for LoRaWAN リソースに設定する方法についても学習します。

1. 

**AWS IoT Core for LoRaWAN ソリューションを完了します。**  
[サンプルの AWS IoT Core for LoRaWAN ソリューション](https://github.com/aws-samples/aws-iot-core-lorawan)から始めて、使いやすく調整してください。

## AWS IoT Core for LoRaWAN のリソース
<a name="iot-lorawan-resources"></a>

以下のリソースは、AWS IoT Core for LoRaWAN の詳細と使用開始方法について説明しています。
+ 

**[AWS IoT Core for LoRaWAN の開始方法](https://www.youtube.com/watch?v=6-ZrdRjqdTk/)**  
 次のビデオでは、AWS IoT Core for LoRaWAN の仕組みと、AWS マネジメントコンソール から LoRaWAN ゲートウェイを追加するプロセスを説明します。  
[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/6-ZrdRjqdTk/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/6-ZrdRjqdTk)
+ 

**[AWS IoT Core for LoRaWAN ワークショップ](https://iotwireless.workshop.aws/en/)**  
このワークショップでは、LoRaWAN テクノロジーの基礎と、AWS IoT Core for LoRaWAN での実装を扱います。また、このワークショップを使用して、ゲートウェイとデバイスを AWS IoT Core for LoRaWAN に接続してサンプル IoT ソリューションを構築する方法を詳細に説明します。
+ 

**[AWS IoT による省電力広域ネットワーク (LPWAN) ソリューションの実装](https://d1.awsstatic.com/whitepapers/LPWAN-connectivity-with-AWS-IoT.pdf)**  
このホワイトペーパーでは、LPWAN が IoT ユースケースに適しているかどうかを判断するのに役立つ決定フレームワークを提供し、LPWAN 接続テクノロジーとその機能の概要を示し、実装ガイドラインを提供します。

# AWS IoT Core for LoRaWAN へのゲートウェイとデバイスの接続
<a name="lorawan-getting-started"></a>

AWS IoT Core for LoRaWAN は、ワイヤレス LoRaWAN (省電力長距離広域ネットワーク) デバイスの接続と管理を支援し、LNS の開発と運用が不要になります。Long range WAN (LoRaWAN) デバイスおよびゲートウェイは、AWS IoT Core for LoRaWAN を使用することにより、AWS IoT Core に接続できます。

## デバイス、ゲートウェイ、プロファイル、および送信先の命名規則
<a name="lorawan-naming-convention"></a>

AWS IoT Core for LoRaWAN を開始してリソースを作成する前に、デバイス、ゲートウェイ、および送信先の命名規則を検討してください。

AWS IoT Core for LoRaWAN は、ワイヤレスデバイス、ゲートウェイ、およびプロファイル用に作成するリソースに一意の ID を割り当てます。ただし、リソースによりわかりやすい名前も付けて、リソースを識別しやすくすることができます。AWS IoT Core for LoRaWAN にデバイス、ゲートウェイ、プロファイル、および送信先を追加する前に、管理しやすくするために、それらの名前の付け方を検討してください。

作成したリソースにタグを追加することもできます。LoRaWAN デバイスを追加する前に、AWS IoT Core for LoRaWAN リソースを識別および管理するためのタグの使用方法を検討してください。タグは、追加後に変更できます。

命名とタグ付けの詳細については、[AWS IoT Wireless リソースについて説明する](iotwireless-describe-resources.md) を参照してください。

## デバイスデータからサービスデータへのマッピング
<a name="lorawan-service-device-data"></a>

LoRaWAN ワイヤレスデバイスからのデータは、多くの場合、帯域幅を最適化するためにエンコードされます。これらのエンコードされたメッセージは、他の AWS のサービスで簡単に使用できない可能性がある形式で AWS IoT Core for LoRaWAN に到達します。AWS IoT Core for LoRaWAN は、AWS Lambda 関数を使用して、デバイスメッセージを処理して他の AWS のサービスが使用できる形式にデコードできる AWS IoT ルールを使用します。

デバイスデータを変換して他の AWS のサービスに送信するには、次のことを理解しておく必要があります。
+ ワイヤレスデバイスが送信するデータの形式と内容。
+ データの送信先とするサービス。
+ サービスが必要とする形式。

この情報を使用して、変換を実行する AWS IoT ルールを作成し、変換されたデータを、それを使用する AWS のサービスに送信できます。

## コンソールを使用してデバイスとゲートウェイを AWS IoT Core for LoRaWAN にオンボードする
<a name="lorawan-console"></a>

コンソールインターフェイスまたは API を使用して、LoRaWAN ゲートウェイとデバイスを追加できます。初めて AWS IoT Core for LoRaWAN を使用する場合は、コンソールを使用することをお勧めします。いくつかの AWS IoT Core for LoRaWAN リソースを一度に管理する場合には、コンソールインターフェイスが最も実用的です。大量の AWS IoT Core for LoRaWAN リソースを管理する場合は、AWS IoT Wireless API を使用して、より自動化されたソリューションを作成することを検討してください。

AWS IoT Core for LoRaWAN リソースを設定するときに入力するデータの多くは、デバイスのベンダーによって提供され、ベンダーがサポートしている LoRaWAN 仕様に固有のものです。以下のトピックでは、AWS IoT Core for LoRaWAN リソースを説明し、コンソールまたは API を使用してゲートウェイとデバイスを追加する方法を説明します。

**注記**  
パブリックネットワークを使用して LoRaWAN デバイスをクラウドに接続している場合は、ゲートウェイのオンボーディングをスキップできます。詳細については、「[パブリック LoRaWAN デバイスネットワーク (Everynet) からの LoRaWAN トラフィックの管理](iot-lorawan-roaming.md)」を参照してください。

**Topics**
+ [デバイス、ゲートウェイ、プロファイル、および送信先の命名規則](#lorawan-naming-convention)
+ [デバイスデータからサービスデータへのマッピング](#lorawan-service-device-data)
+ [コンソールを使用してデバイスとゲートウェイを AWS IoT Core for LoRaWAN にオンボードする](#lorawan-console)
+ [ゲートウェイを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-gateways.md)
+ [デバイスを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-end-devices.md)

# ゲートウェイを AWS IoT Core for LoRaWAN にオンボードする
<a name="lorawan-onboard-gateways"></a>

AWS IoT Core for LoRaWAN を初めて使用する場合は、コンソールを使用することで、最初の LoRaWAN ゲートウェイとデバイスを追加できます。

**注記**  
パブリックネットワークを使用して LoRaWAN デバイスをクラウドに接続している場合は、ゲートウェイのオンボーディングをスキップできます。詳細については、「[パブリック LoRaWAN デバイスネットワーク (Everynet) からの LoRaWAN トラフィックの管理](iot-lorawan-roaming.md)」を参照してください。

**ゲートウェイをオンボードする前に**  
ゲートウェイを AWS IoT Core for LoRaWAN にオンボードする前に、以下のことをお勧めします。
+ AWS IoT Core for LoRaWAN での使用を認定されたゲートウェイを使用してください。これらのゲートウェイは追加の構成設定なしで 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)
+ [ゲートウェイを AWS IoT Core for LoRaWAN に追加する](lorawan-onboard-gateway-add.md)
+ [LoRaWAN ゲートウェイを接続し、接続ステータスを確認する](lorawan-gateway-connection-status.md)

# 周波数帯域の選択を検討し、必要な IAM ロールを追加する
<a name="lorawan-rfregion-permissions"></a>

ゲートウェイを AWS IoT Core for LoRaWAN に追加する前に、ゲートウェイが動作する周波数帯域を検討し、ゲートウェイを AWS IoT Core for LoRaWAN に接続するために必要な IAM ロールを追加することをお勧めします。

**注記**  
コンソールを使用してゲートウェイを追加する場合は、[**Create role**] (ロールの作成) をクリックして必要な IAM ロールを作成し、これらのステップをスキップできます。これらの手順は、CLI を使用してゲートウェイを作成する場合にのみ実行する必要があります。

## ゲートウェイとデバイス接続用の LoRa 周波数帯域の選択を検討する
<a name="lorawan-frequency-bands"></a>

AWS IoT Core for LoRaWAN は、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 は、LoRa Alliance のウェブサイトからダウンロードできる LoRaWAN 仕様と地域別パラメータドキュメントを公開しています。LoRa Alliance の地域パラメータは、企業が地域や国で使用する周波数帯域を決定するのに役立ちます。AWS IoT Core for LoRaWAN の周波数帯域の実装は、地域パラメータ仕様書の推奨事項に従います。これらの地域別パラメータは、産業、科学、および医療 (ISM) 帯域に適合する周波数割り当てとともに、一連の無線パラメータにグループ化されます。コンプライアンスチームと協力して、適用される規制要件を確実に満たすことをお勧めします。

## Configuration and Update Server (CUPS) がゲートウェイ認証情報を管理することを許可するための IAM ロールを追加する
<a name="lorawan-onboard-permissions"></a>

この手順では、Configuration and Update Server (CUPS) がゲートウェイ認証情報を管理することを許可する IAM ロールを追加する方法について説明します。LoRaWAN ゲートウェイが AWS IoT Core for LoRaWAN との接続を試みる前に、必ずこの手順を実行してください。ただし、これを行う必要があるのは 1 回だけです。

**Configuration and Update Server (CUPS) がゲートウェイ認証情報を管理することを許可する IAM ロールを追加する**

1. [[Roles hub of the IAM console](https://console.aws.amazon.com/iam/home#/roles)] (IAM コンソールのロールハブ) にログインして、[**Create role**] (ロールの作成) を選択します。

1. **IoTWirelessGatewayCertManagerRole** ロールを既に追加している可能性があると思われる場合は、検索バーに **IoTWirelessGatewayCertManagerRole** と入力します。

   検索結果に **IoTWirelessGatewayCertManagerRole** ロールが表示された場合、必要な IAM ロールがあります。これで手順を終了できます。

   検索結果が空の場合、必要な IAM ロールがありません。この手順を続行して、追加します。

1. **[Select type of trusted entity]** (信頼できるエンティティのタイプを選択) で、**[Another AWS アカウント]** (別の AWS アカウント) を選択します。

1. [**Account ID**] (アカウント ID) で AWS アカウント アカウント ID を入力し、[**Next: Permissions**] (次へ: アクセス許可) を選択します。

1. 検索ボックスに「**AWSIoTWirelessGatewayCertManager**」と入力します。

1. 検索結果のリストで、**AWSIoTWirelessGatewayCertManager** という名前のポリシーを選択します。

1. [**次へ: タグ**]、[**次へ: 確認**] の順に選択します。

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 コンソールに戻り、ゲートウェイの追加を完了できます。

# ゲートウェイを AWS IoT Core for LoRaWAN に追加する
<a name="lorawan-onboard-gateway-add"></a>

コンソールまたは CLI を使用して、ゲートウェイを AWS IoT Core for LoRaWAN に追加できます。

ゲートウェイを追加する前に、「[ゲートウェイを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-gateways.md)」の「**ゲートウェイをオンボードする前に**」セクションで説明されている要素を考慮することをお勧めします。

初めてゲートウェイを追加する場合は、コンソールを使用することをお勧めします。CLI を使用してゲートウェイを追加する場合は、ゲートウェイが AWS IoT Core for LoRaWAN と接続するために必要な IAM ロールを既に作成済みである必要があります。ロールを作成する方法については、「[Configuration and Update Server (CUPS) がゲートウェイ認証情報を管理することを許可するための IAM ロールを追加する](lorawan-rfregion-permissions.md#lorawan-onboard-permissions)」を参照してください。

## コンソールを使用してゲートウェイを追加する
<a name="lorawan-onboard-gateway-console"></a>

AWS IoT コンソールの [AWS IoT Core for LoRaWAN](https://console.aws.amazon.com/iot/home#/wireless/landing) の **[Intro]** (イントロダクション) ページに移動し、**[Get started]** (開始方法) を選択して、**[Add gateway]** (ゲートウェイを追加) を選択します。ゲートウェイを既に追加している場合は、[**View gateway**] (ゲートウェイの表示) を選択して、追加したゲートウェイを表示します。ゲートウェイをさらに追加する場合は、[**Add gateway**] (ゲートウェイの追加) を選択します。

1. 

**ゲートウェイの詳細と周波数帯域情報を提供する**  
[**Gateway details**] (ゲートウェイの詳細) セクションを使用して、ゲートウェイの EUI や周波数帯域設定などのデバイス設定データに関する情報を提供します。
   + 

**ゲートウェイの EUI**  
個々のゲートウェイデバイスの EUI (拡張一意識別子)。EUI は `c0ee40ffff29df10` などの 16 桁の英数字コードであり、LoRaWAN ネットワーク内のゲートウェイを一意に識別します。この情報はゲートウェイモデルに固有のものであり、ゲートウェイデバイスまたはそのユーザーマニュアルに記載されています。
**注記**  
ゲートウェイの EUI は、ゲートウェイデバイスに表示される Wi-Fi MAC アドレスとは異なります。EUI は、ゲートウェイを一意に識別する EUI-64 標準に準拠しているため、他の AWS アカウント とリージョンで再利用できません。
   + 

**周波数帯域 (RFRegion)**  
ゲートウェイの周波数帯。ゲートウェイがサポートするもの、およびゲートウェイの物理的な接続元の国または地域に応じて、`US915`、`EU868`、`AU915`、または `AS923-1` から選択できます。帯域の詳細については、[ゲートウェイとデバイス接続用の LoRa 周波数帯域の選択を検討する](lorawan-rfregion-permissions.md#lorawan-frequency-bands) を参照してください。

1. 

**ワイヤレスゲートウェイ設定データを指定する (オプション)**  
これらのフィールドはオプションで、ゲートウェイとその設定に関する追加情報を提供するために使用できます。
   + 

**ゲートウェイの名前、説明、タグ**  
これらのオプションフィールドの情報は、ワイヤレスシステムの要素をどのように編成および説明するかによって決まります。ゲートウェイに**名前**を追加し、[**Description**] (説明) フィールドを使用してゲートウェイに関する情報を提供し、**タグ**を使用してゲートウェイに関するメタデータのキーと値のペアを追加できます。リソースの命名と説明の詳細については、[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 ゲートウェイは AWS IoT Core for LoRaWAN に対してプライベートキーと証明書を提示する必要があります。AWS IoT が X.509 標準を使用してゲートウェイの ID を確認できるように、**ゲートウェイ証明書**を作成します。

   [**Create certificate**] (証明書の作成) ボタンをクリックして、証明書ファイルをダウンロードします。これらはゲートウェイを設定するために後で使用します。

1. 

**CUPS エンドポイントと LNS エンドポイントをコピーし、証明書をダウンロードする**  
LoRaWAN ゲートウェイは、AWS IoT Core for LoRaWAN への接続を確立するときに、CUPS エンドポイントまたは LNS エンドポイントに接続する必要があります。CUPS エンドポイントでは設定管理も提供されるため、CUPS エンドポイントを使用することをお勧めします。AWS IoT Core for LoRaWAN エンドポイントの真正性を確認するために、ゲートウェイは CUPS エンドポイントおよび LNS エンドポイントごとに信頼証明書を使用します。

   [**Copy**] (コピー) ボタンをクリックして CUPS エンドポイントと LNS エンドポイントをコピーします。この情報はゲートウェイを構成するために後で必要になります。次に、[**Download server trust certificates**] (サーバー信頼証明書のダウンロード) ボタンをクリックして、CUPS エンドポイントおよび LNS エンドポイントの信頼証明書をダウンロードします。

1. 

**ゲートウェイのアクセス許可のための IAM ロールを作成する**  
Configuration and Update Server (CUPS) がゲートウェイ認証情報を管理することを許可する IAM ロールを追加する必要があります。
**注記**  
このステップでは、**IoTWirelessGatewayCertManager** ロールを作成します。すでにこのロールを作成している場合は、このステップをスキップできます。LoRaWAN ゲートウェイが AWS IoT Core for LoRaWAN との接続を試みる前に、これを行う必要があります。ただし、実行する必要があるのは 1 回だけです。

   アカウントに **IoTWirelessGatewayCertManager** IAM ロールを作成するには、[**Create role**] (ロールの作成) ボタンをクリックします。ロールが既に存在する場合は、ドロップダウンリストから選択します。

   [**Submit**] (送信) をクリックして、ゲートウェイの作成を完了します。

## API を使用してゲートウェイを追加する
<a name="lorawan-onboard-gateway-api"></a>

API または CLI を使用して初めてゲートウェイを追加する場合は、ゲートウェイが AWS IoT Core for LoRaWAN と接続できるように **IoTWirelessGatewayCertManager** IAM ロールを追加する必要があります。ロールの作成方法については、「[Configuration and Update Server (CUPS) がゲートウェイ認証情報を管理することを許可するための IAM ロールを追加する](lorawan-rfregion-permissions.md#lorawan-onboard-permissions)」セクションを参照してください。

以下に、LoRaWAN ゲートウェイの追加、更新、削除に関連するタスクを実行する API アクションを示します。

**AWS IoT Core for LoRaWAN ゲートウェイ向けの 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)

AWS IoT Core for LoRaWAN リソースを作成および管理するために使用できるアクションとデータタイプの完全なリストについては、「[AWS IoT Wireless API reference](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` ファイルを指定することもできます。

**注記**  
この手順は、ここに示す CLI コマンドに対応する AWS API のメソッドを使用することにより、API で行うこともできます。

```
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>

ゲートウェイの接続ステータスを確認する前に、ゲートウェイを追加済みで、AWS IoT Core for LoRaWAN に接続済みである必要があります。ゲートウェイを追加する方法については、「[ゲートウェイを AWS IoT Core for LoRaWAN に追加する](lorawan-onboard-gateway-add.md)」を参照してください。

## ゲートウェイを AWS IoT Core for LoRaWAN に接続する
<a name="lorawan-connect-gateway"></a>

ゲートウェイを追加したら、ゲートウェイの設定インターフェイスに接続して、設定情報と信頼証明書を入力します。

AWS IoT Core for LoRaWAN にゲートウェイの情報を追加した後、AWS IoT Core for LoRaWAN 情報をゲートウェイデバイスに追加します。ゲートウェイのベンダーが提供するドキュメントでは、証明書ファイルをゲートウェイにアップロードし、AWS IoT Core for LoRaWAN と通信するようにゲートウェイデバイスを設定するプロセスについて説明されているはずです。

**AWS IoT Core for LoRaWAN での使用を認定されたゲートウェイ**  
LoRaWAN ゲートウェイを設定する手順については、AWS IoT Core for LoRaWAN ワークショップの「[Configure gateway device](https://iotwireless.workshop.aws/en/200_gateway/400_configuregateway.html)」セクションを参照してください。ここでは、AWS IoT Core for LoRaWAN での使用が認定されたゲートウェイを接続するための手順について説明します。

**CUPS プロトコルをサポートするゲートウェイ**  
次の手順で、CUPS プロトコルをサポートするゲートウェイを接続する方法について説明します。

1. ゲートウェイの追加時に取得した次のファイルをアップロードします。
   + ゲートウェイデバイス証明書およびプライベートキーファイル。
   + CUPS エンドポイントの信頼証明書ファイル `cups.trust`。

1. 前に取得した CUPS エンドポイント URL を指定します。エンドポイントは `prefix.cups.lorawan.region.amazonaws.com:443` の形式です。

この情報の入手方法については、「[ゲートウェイを AWS IoT Core for LoRaWAN に追加する](lorawan-onboard-gateway-add.md)」を参照してください。

**LNS プロトコルをサポートするゲートウェイ**  
次の手順で、LNS プロトコルをサポートするゲートウェイを接続する方法について説明します。

1. ゲートウェイの追加時に取得した次のファイルをアップロードします。
   + ゲートウェイデバイス証明書およびプライベートキーファイル。
   + LNS エンドポイントの信頼証明書ファイル `lns.trust`。

1. 前に取得した LNS エンドポイント URL を指定します。エンドポイントは https://`prefix.lns.lorawan.region.amazonaws.com:443` の形式です。

この情報の入手方法については、「[ゲートウェイを AWS IoT Core for LoRaWAN に追加する](lorawan-onboard-gateway-add.md)」を参照してください。

ゲートウェイを AWS IoT Core for LoRaWAN に接続したら、コンソールまたは 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)] (ゲートウェイ) ページに移動し、追加したゲートウェイを選択します。ゲートウェイの詳細ページの [**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"
}
```

# デバイスを AWS IoT Core for LoRaWAN にオンボードする
<a name="lorawan-onboard-end-devices"></a>

ゲートウェイをAWS IoT Core for LoRaWAN にオンボードして接続ステータスを確認したら、ワイヤレス機器をオンボードできます。ゲートウェイをオンボードする方法については、「[ゲートウェイを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-gateways.md)」を参照してください。

LoRaWAN デバイスは、LoRaWAN プロトコルを使用して、クラウドホスト型アプリケーションとデータを交換します。AWS IoT Core for LoRaWAN は、LoRa Alliance によって標準化された 1.0.x または 1.1 LoRaWAN 仕様に準拠したデバイスをサポートしています。

LoRaWAN デバイスは、通常、1 つ以上のセンサーとアクターで構成されます。デバイスは、LoRaWAN ゲートウェイを介してアップリンクテレメトリデータを AWS IoT Core for LoRaWAN に送信します。クラウドでホストされたアプリケーションは、LoRaWAN ゲートウェイを介して LoRaWAN デバイスにダウンリンクコマンドを送信することで、センサーを制御できます。

**ワイヤレスデバイスをオンボードする前に**  
ワイヤレスデバイスを AWS IoT Core for LoRaWAN にオンボードする前に、以下の情報を事前に用意しておく必要があります。
+ 

**LoRaWAN の仕様と無線機器の設定**  
各デバイスに固有の設定パラメータの入力準備を事前にしておくと、コンソールへのデータの入力がよりスムーズになります。入力する必要がある特定のパラメータは、デバイスが使用する LoRaWAN 仕様によって異なります。仕様と設定パラメータの完全なリストについては、各デバイスに関するドキュメントを参照してください。
+ 

**デバイス名と説明 (オプション)**  
これらのオプションフィールドの情報は、ワイヤレスシステムの要素をどのように編成および説明するかによって決まります。リソースの命名と説明の詳細については、[AWS IoT Wireless リソースについて説明する](iotwireless-describe-resources.md) を参照してください。
+ 

**デバイスおよびサービスプロファイル**  
多くのデバイスで共有され、AWS IoT Core for LoRaWAN にデバイスおよびサービスプロファイルとして保存できる一部のワイヤレスデバイス設定パラメータを用意しておきます。設定パラメータは、デバイスのドキュメントまたはデバイス自体に記載されています。デバイスを追加する前に、デバイスの設定パラメータに一致するデバイスプロファイルを特定するか、必要に応じて作成します。詳細については、「[プロファイルを AWS IoT Core for LoRaWAN に追加する](lorawan-define-profiles.md)」を参照してください。
+ 

**AWS IoT Core for LoRaWAN 送信先**  
各デバイスは、メッセージを処理して AWS IoT やその他のサービスに送信する送信先に割り当てる必要があります。デバイスメッセージを処理および送信する AWS IoT ルールは、デバイスのメッセージ形式に固有です。デバイスからのメッセージを処理して正しいサービスに送信するには、デバイスのメッセージで使用するために作成する送信先を特定し、デバイスに割り当てます。

**Topics**
+ [ワイヤレスデバイスを AWS IoT Core for LoRaWAN に追加する](lorawan-end-devices-add.md)
+ [プロファイルを AWS IoT Core for LoRaWAN に追加する](lorawan-define-profiles.md)
+ [AWS IoT Core for LoRaWAN に送信先を追加する](lorawan-create-destinations.md)
+ [LoRaWAN デバイスメッセージを処理するルールを作成する](lorawan-destination-rules.md)
+ [LoRaWAN デバイスを接続し、接続ステータスを確認する](lorawan-device-connection-status.md)

# ワイヤレスデバイスを AWS IoT Core for LoRaWAN に追加する
<a name="lorawan-end-devices-add"></a>

初めてワイヤレスデバイスを追加する場合は、コンソールを使用することをお勧めします。AWS IoT コンソールの [AWS IoT Core for LoRaWAN](https://console.aws.amazon.com/iot/home#/wireless/landing) の **[Intro]** (イントロダクション) ページに移動し、**[Get started]** (開始方法) を選択して、**[Add device]** (デバイスを追加) を選択します。デバイスを既に追加している場合は、[**View device**] (デバイスの表示) を選択して、追加したゲートウェイを表示します。デバイスを追加する場合は、[**Add device**] (デバイスの追加) を選択します。

または、AWS IoT コンソールの [[Devices](https://console.aws.amazon.com/iot/home#/wireless/devices)] (デバイス) ページからワイヤレスデバイスを追加することもできます。

## コンソールを使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する
<a name="lorawan-end-device-spec-console"></a>

アクティベーション方法と LoRaWAN のバージョンに基づいて、**ワイヤレスデバイスの仕様**を選択します。選択すると、AWS が所有して管理するキーによってデータが暗号化されます。

**OTAA および ABP アクティベーションモード**  
LoRaWAN デバイスがアップリンクデータを送信する前に、*アクティベーション*または*参加手順*と呼ばれるプロセスを完了する必要があります。デバイスをアクティベートするには、OTAA (無線通信経由アクティベーション) または ABP (パーソナライゼーションによるアクティベーション) のいずれかを使用できます。

ABP は参加手順を必要とせず、静的キーを使用します。OTAA を使用すると、LoRaWAN デバイスが参加要求を送信し、ネットワークサーバーが要求を許可することができます。アクティベーションごとに新しいセッションキーが生成されて安全性が高まるため、デバイスのアクティベーションには OTAA を使用することをお勧めします。

**LoRaWAN バージョン**  
OTAA を使用すると、LoRaWAN デバイスとクラウドホスト型アプリケーションがルートキーを共有します。これらのルートキーは、バージョン v1.0.x と v1.1 のどちらを使用しているかによって異なります。v1.0.x には **AppKey** (アプリケーションキー) の 1 つのルートキーしかありません。v1.1 には **AppKey** (アプリケーションキー) と **NwkKey** (ネットワークキー) の 2 つのルートキーがあります。セッションキーは、各アクティベーションのルートキーに基づいて生成されます。**NwkKey** と **AppKey** はいずれも、ワイヤレスベンダーが提供した 32 桁の 16 進数値です。

**ワイヤレスデバイスの EUI**  
**ワイヤレスデバイスの仕様**を選択すると、コンソールに表示されているワイヤレスデバイスの EUI (拡張一意識別子) パラメータが表示されます。この情報は、デバイスまたはワイヤレスベンダーのドキュメントに記載されています。
+ **DevEUI**: お使いのデバイスに固有の 16 桁の 16 進数値で、デバイスのラベルまたはドキュメントに記載されています。
+ **AppEUI**: 参加サーバーに固有の 16 桁の 16 進数値で、デバイスのドキュメントに記載されています。LoRaWAN バージョン v1.1 では、**AppEUI** は **JoinEUI** と呼ばれます。

一意識別子、セッションキー、およびルートキーの詳細については、[LoRa Alliance](https://lora-alliance.org/about-lorawan) ドキュメントを参照してください。

## API を使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する
<a name="lorawan-end-device-spec-api"></a>

API を使用してワイヤレスデバイスを追加する場合は、ワイヤレスデバイスを作成する前に、まずデバイスプロファイルとサービスプロファイルを作成する必要があります。ワイヤレスデバイスを作成するときは、デバイスプロファイル ID とサービスプロファイル 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)

AWS IoT Core for LoRaWAN リソースを作成および管理するために使用できるアクションとデータタイプの完全なリストについては、「[AWS IoT Wireless API reference](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 ファイルを使用してパラメータを入力することにより、ワイヤレスデバイスを作成します。

**注記**  
この手順は、ここに示す CLI コマンドに対応する AWS API のメソッドを使用することにより、API で行うこともできます。

**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)」を参照してください。

# プロファイルを AWS IoT Core for LoRaWAN に追加する
<a name="lorawan-define-profiles"></a>

デバイスおよびサービスプロファイルを定義して、一般的なデバイス設定を記述できます。これらのプロファイルは、デバイスによって共有される設定パラメータを記述し、これらのデバイスを簡単に追加できるようにします。AWS IoT Core for LoRaWAN では、デバイスプロファイルとサービスプロファイルがサポートされています。

 これらのプロファイルに入力する設定パラメータと値は、デバイスの製造元によって提供されます。

## デバイスプロファイルを追加する
<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>

コンソールを使用してワイヤレスデバイスを追加する場合は、「[コンソールを使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する](lorawan-end-devices-add.md#lorawan-end-device-spec-console)」で説明されているように、ワイヤレスデバイスの仕様を追加した後、デバイスプロファイルを追加できます。または、AWS IoT コンソールの **LoRaWAN** タブの [[Profiles](https://console.aws.amazon.com/iot/home#/wireless/profiles)] (プロファイル) ページからワイヤレスデバイスを追加することもできます。

デフォルトのデバイスプロファイルから選択するか、新しいデバイスプロファイルを作成できます。デフォルトのデバイスプロファイルを使用することをお勧めします。アプリケーションでデバイスプロファイルの作成が必要な場合は、**デバイスプロファイル名**を指定し、[**Frequency band (RfRegion)**] (周波数帯 (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)

AWS IoT Core for LoRaWAN リソースを作成および管理するために使用できるアクションとデータタイプの完全なリストについては、「[AWS IoT Wireless API reference](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 を持つデバイスプロファイルが自動的に作成されます。これで、次の 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>

コンソールを使用してワイヤレスデバイスを追加する場合は、「[コンソールを使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する](lorawan-end-devices-add.md#lorawan-end-device-spec-console)」で説明されているように、デバイスプロファイルを追加した後、サービスプロファイルを追加できます。または、AWS IoT コンソールの **LoRaWAN** タブの [[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)

AWS IoT Core for LoRaWAN リソースを作成および管理するために使用できるアクションとデータタイプの完全なリストについては、「[AWS IoT Wireless API reference](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"
}
```

# AWS IoT Core for LoRaWAN に送信先を追加する
<a name="lorawan-create-destinations"></a>

AWS IoT Core for LoRaWAN の送信先は、AWS のサービスで使用するデバイスのデータを処理する AWS IoT ルールを記述します。

ほとんどの LoRaWAN デバイスは、AWS のサービスで使用できる形式で AWS IoT Core for LoRaWAN にデータを送信しないため、AWS IoT ルールで最初にデータを処理する必要があります。AWS IoT ルールには、デバイスのデータを解釈する SQL ステートメントと、SQL ステートメントの結果を、それを使用するサービスに送信するトピックルールアクションが含まれています。

送信先を初めて追加している場合は、コンソールの使用をお勧めします。

## コンソールを使用して送信先を追加します
<a name="lorawan-create-destination-console"></a>

「[コンソールを使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する](lorawan-end-devices-add.md#lorawan-end-device-spec-console)」で説明されているように、コンソールを使用してワイヤレスデバイスを追加する場合は、ワイヤレスデバイスの仕様とプロファイルを AWS IoT Core for LoRaWAN に前述のように追加したら、先に進んで送信先を追加することができます。

または、AWS IoT コンソールの [[Destinations]](https://console.aws.amazon.com/iot/home#/wireless/destinations) (送信先) ページから AWS IoT Core for LoRaWAN の送信先を追加することもできます。

デバイスのデータを処理するには、AWS IoT Core for LoRaWAN の送信先を作成するときに以下のフィールドを指定して、[**Add destination**] (送信先を追加) を選択します。
+ 

**送信先の詳細**  
[**Destination name**] (送信先名) と、必要に応じて送信先の説明を入力します。
+ 

**ルール名**  
デバイスが送信したメッセージを評価し、デバイスのデータを処理するために設定された AWS IoT ルールです。ルール名は送信先にマップされます。送信先には、受信したメッセージを処理するためのルールが必要です。メッセージは、AWS IoT ルールの呼び出し、または AWS IoT メッセージブローカーへのパブリッシュのいずれかによって処理されるように選択できます。
  + [**Enter a rule name**] (ルール名を入力) を選択する場合は、名前を入力し、次に [**Copy**] (コピー) をクリックして、AWS IoT ルールを作成するときに入力するルール名をコピーします。[**Create rule**] (ルールの作成) を選択して今すぐルールを作成するか、AWS IoT コンソールの [[Rules](https://console.aws.amazon.com/iot/home#/create/rule)] (ルール) ハブを開き、その名前のルールを作成します。

    ルールを入力し、[**Advanced**] (アドバンスト) 設定を使用してトピック名を指定することもできます。トピック名はルールの呼び出し中に提供され、ルール内の `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]** (IoT メッセージブローカーに発行) を選択する場合は、トピック名を入力します。その後、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) を参照してください。
+ 

**ロール名**  
[**Rule name**] (ルール名) で名前を付けたルールにアクセスするための許可をデバイスのデータに付与する IAM ロール。コンソールでは、新しいサービスロールを作成する、または既存のサービスロールを選択することができます。新しいサービスロールを作成する場合は、ロール名 (例、**IoTWirelessDestinationRole**) を入力するか、あるいは、空白のままにして AWS IoT Core for LoRaWAN で新しいロール名を作成することできます。その後、適切なアクセス許可を持つ IAM ロールが AWS IoT Core for LoRaWAN で自動的に作成されます。

  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)

AWS IoT Core for LoRaWAN リソースを作成および管理するために使用できるアクションとデータタイプの完全なリストについては、「[AWS IoT Wireless API reference](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>

AWS IoT Core for LoRaWAN の送信先には、AWS IoT ルールにデータを送信するために必要なアクセス許可を AWS IoT Core for LoRaWAN に付与する IAM ロールが必要です。そのようなロールがまだ定義されていない場合は、ロールのリストに表示されるように定義する必要があります。

コンソールを使用して送信先を追加するときは、このトピックで先ほど説明したように、AWS IoT Core for LoRaWAN が自動的に IAM ロールを作成します。API または CLI を使用して送信先を追加する場合、送信先の IAM ロールを作成する必要があります。

**AWS IoT Core for LoRaWAN 送信先ロール用の IAM ポリシーを作成するには**

1. [IAM コンソールのポリシーハブ](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. [**Create policy**] (ポリシーの作成) を選択します。

**AWS IoT Core for LoRaWAN 送信先の IAM ロールを作成するには**

1. [[Roles hub of the IAM console](https://console.aws.amazon.com/iam/home#/roles)] (IAM コンソールのロールハブ) にログインして、[**Create role**] (ロールの作成) を選択します。

1. **[Select type of trusted entity]** (信頼できるエンティティのタイプを選択) で、**[Another AWS アカウント]** (別の AWS アカウント) を選択します。

1. [**Account ID**] (アカウント ID) で AWS アカウント アカウント ID を入力し、[**Next: Permissions**] (次へ: アクセス許可) を選択します。

1. 検索ボックスで、前の手順で作成した IAM ポリシーの名前を入力します。

1. 検索結果で、前の手順で作成した IAM ポリシーを確認します。

1. [**次へ: タグ**]、[**次へ: 確認**] の順に選択します。

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**] (信頼ポリシーの更新) を選択します。

このロールを定義すると、AWS IoT Core for LoRaWAN の送信先を設定するときに、ロールのリストにそのロールが表示されます。

# LoRaWAN デバイスメッセージを処理するルールを作成する
<a name="lorawan-destination-rules"></a>

AWS IoT ルールは、デバイスメッセージを他のサービスに送信します。AWS IoT は、LoRaWAN デバイスから受信したバイナリメッセージを処理して、メッセージを他の形式に変換して、他のサービスで使用しやすくすることもできます。

[AWS IoT Core for LoRaWAN の送信先](lorawan-create-destinations.md)は、デバイスのメッセージデータを処理して他のサービスに送信するルールにワイヤレスデバイスを関連付けます。このルールは、AWS IoT Core for LoRaWAN がデバイスのデータを受信するとすぐに、そのデータに対して機能します。[AWS IoT Core for LoRaWAN の送信先](lorawan-create-destinations.md)は、メッセージが同じデータ形式で、データを同じサービスに送信するすべてのデバイスで共有できます。

## AWS IoT ルールがデバイスメッセージを処理する方法
<a name="how-rules-process-message"></a>

AWS IoT ルールがデバイスのメッセージデータを処理する方法は、データを受信するサービス、デバイスのメッセージデータの形式、およびサービスが必要とするデータ形式によって異なります。通常、このルールは AWS Lambda 関数を呼び出して、デバイスのメッセージデータをサービスが必要とする形式に変換し、その結果をサービスに送信します。

次の図は、メッセージデータがワイヤレスデバイスから AWS のサービスに移動するときに、メッセージデータがどのように保護および処理されるかを示しています。

![\[AWS IoT Core for LoRaWAN データがワイヤレスデバイスから AWS IoT およびその他のサービスにどのように渡されるかを示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-data-flow.png)


1. LoRaWAN ワイヤレスデバイスは、バイナリメッセージを送信する前に AES128 CTR モードを使用して暗号化します。

1. AWS IoT Core for LoRaWAN は、バイナリメッセージを復号し、復号されたバイナリメッセージペイロードを base64 文字列としてエンコードします。

1. 結果として生じる base64 でエンコードされたメッセージは、メッセージペイロード (JSON ドキュメントとしてフォーマットされていない) として、デバイスに割り当てられた送信先に記載されている AWS IoT ルールに送信されます。

1. AWS IoT ルールは、ルールの設定に記載されているサービスにメッセージデータを送信します。

ワイヤレスデバイスから受信した、暗号化されたバイナリペイロードは、AWS IoT Core for LoRaWAN によって変更および解釈されません。復号されたバイナリメッセージペイロードは、base64 文字列としてのみエンコードされます。サービスがバイナリメッセージペイロードのデータ要素にアクセスするためには、ルールによって呼び出される関数によってデータ要素をペイロードから解析する必要があります。base64 でエンコードされたメッセージペイロードは ASCII 文字列であるため、後で解析するために保存することができます。

## LoRaWAN デバイスのルールを作成する
<a name="create-lorawan-rules"></a>

AWS IoT Core for LoRaWAN は、メッセージブローカーを使用することなく、AWS IoT ルールを使用して、デバイスメッセージを他の AWS のサービスに直接安全に送信します。取り込みパスからメッセージブローカーを削除することで、コストを削減し、データフローを最適化します。

デバイスメッセージを他の AWS のサービスに送信するための AWS IoT Core for LoRaWAN ルールには、AWS IoT Core for LoRaWAN 送信先と、その送信先に割り当てられた AWS IoT ルールが必要です。AWS IoT ルールには、SQL クエリステートメントと少なくとも 1 つのルールアクションが含まれている必要があります。

通常、AWS IoT ルールクエリステートメントは、次のもので構成されます。
+ メッセージペイロードからデータを選択してフォーマットする SQL SELECT 句
+ 使用するメッセージを識別するトピックフィルター (ルールクエリステートメントの FROM オブジェクト)
+ アクションを実行する条件を指定するオプションの条件文 (SQL WHERE 句)

ルールクエリステートメントの例を以下に示します。

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

LoRaWAN デバイスからのペイロードを処理するために AWS IoT ルールを構築する場合、ルールクエリオブジェクトの一部として 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) を参照してください。

AWS IoT Core for LoRaWAN 送信先の作成と使用については、「[AWS IoT Core for LoRaWAN に送信先を追加する](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 の 「AWS IoT Core for LoRaWAN Solution Samples」](https://github.com/aws-samples/aws-iot-core-lorawan/tree/main/transform_binary_payload) を参照してください。

# LoRaWAN デバイスを接続し、接続ステータスを確認する
<a name="lorawan-device-connection-status"></a>

デバイスの接続ステータスを確認する前に、デバイスが追加済みで、AWS IoT Core for LoRaWAN に接続済みである必要があります。デバイスの追加方法については、「[ワイヤレスデバイスを AWS IoT Core for LoRaWAN に追加する](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)」を参照してください。

# AWS IoT Core for LoRaWAN によるワイヤレスリソースの位置の設定
<a name="lorawan-configure-location"></a>


|  | 
| --- |
| この機能を使用する前に、LoRaWAN デバイスの位置情報を解決するために選択したサードパーティープロバイダーは、国際 GNSS サービス (IGS)、NASA 経由の EarthData、その他のサードパーティーによって提供または管理されているデータフィードとデータセットに依存していることに注意してください。これらのデータフィードとデータセットは、(カスタマーアグリーメントで定義されている) サードパーティーのコンテンツであり、現状のまま提供されます。詳細については、「[AWS サービス条件](https://aws.amazon.com/service-terms)」を参照してください。 | 

AWS IoT Core for LoRaWAN を使用して静止位置データを指定するか、サードパーティーのソルバーでリアルタイムにデバイスの位置を特定するための測位を有効化できます。位置情報は、LoRaWAN デバイスとゲートウェイのどちらか、あるいは両方に追加したり更新したりすることができます。

また、位置情報は、デバイスやゲートウェイを AWS IoT Core for LoRaWAN に追加する場合、またはデバイスやゲートウェイの設定詳細を編集する場合に指定します。位置情報は [GeoJSON](https://geojson.org/) ペイロードとして指定されます。GeoJSON 形式は、地理データ構造をエンコードするために使用される形式です。ペイロードには、[世界測地系 (座標系) (WGS84)](https://gisgeography.com/wgs84-world-geodetic-system/) に基づくデバイス位置の緯度と経度の座標が含まれています。

ソルバーによってリソースの位置を計算すると、Amazon Location Service を使用している場合は、リソースの位置が表示される Amazon Location マップを有効化できます。位置データを使用すると、次のことが可能になります。
+ 測位を有効にして、LoRaWAN デバイスの位置を特定して取得する。
+ ゲートウェイとデバイスの位置を追跡して監視する。
+ 位置データへの更新を処理し、他の AWS のサービス にルーティングする AWS IoT ルールを定義する。ルールアクションのリストについては、*AWS IoT デベロッパーガイド*の「 [AWS IoT ルールアクション](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html)」を参照してください。
+ 位置データと Amazon SNS を使用して、異常なアクティビティが発生した場合に備えてアラートを作成し、デバイスで通知を受け取る。

## LoRaWAN デバイスの測位の仕組み
<a name="lorawan-location-solver"></a>

測位機能を有効にすると、サードパーティーの Wi-Fi および GNSS ソルバーを使用してデバイスの位置を特定できます。この情報は、デバイスの追跡と監視に使用できます。以下の手順は、LoRaWAN デバイスの測位を有効にして位置情報を表示する方法を示しています。

**注記**  
サードパーティーのソルバーは、[LoRa Edge](https://www.semtech.com/products/wireless-rf/lora-edge) チップを搭載した LoRaWAN デバイスでのみ使用できます。LoRaWAN ゲートウェイでは使用できません。ゲートウェイの場合でも、静止位置情報を指定することで、Amazon Location マップで位置を特定できます。

1. 

**デバイスを追加する**

   測位を有効にするには、最初にデバイスを AWS IoT Core for LoRaWAN に追加します。LoRaWAN デバイスには、ジオロケーションアプリケーションを対象とした長距離 LoRa トランシーバー、マルチコンステレーション GNSS スキャナー、パッシブ Wi-Fi MAC スキャナーを統合した超低電力プラットフォームである LoRa Edge チップセットを搭載する必要があります。

1. 

**測位を有効にする**

   デバイスの位置をリアルタイムで取得するには、測位を有効にします。LoRaWAN デバイスがアップリンクメッセージを送信すると、メッセージに含まれる Wi-Fi および GNSS スキャンデータが、ジオロケーションフレームポートを使用して AWS IoT Core for LoRaWAN に送信されます。

1. 

**位置情報を取得する**

   トランシーバーからのスキャン結果を基に計算されたソルバーから、デバイスの推定位置を取得します。Wi-Fi と GNSS の両方のスキャン結果を使用して位置情報を計算した場合、AWS IoT Core for LoRaWAN はさらに精度の高い推定位置を選択します。

1. 

**位置情報を表示する**

   ソルバーで位置情報が計算されると、計算した位置と入力した静止位置情報との差を示す精度情報も表示されます。デバイスの位置は Amazon Location マップでも確認できます。
**注記**  
ソルバーは LoRaWAN ゲートウェイには使用できないため、精度情報は `0.0` と表示されます。

測位ソルバーに使用されるアップリンクメッセージの形式と周波数ポートの詳細については、「[AWS IoT Core for LoRaWAN からルールエンジンへのアップリンクメッセージ](lorawan-location-devices.md#lorawan-location-devices-uplink)」を参照してください。

## 測位ワークフローの概要
<a name="lorawan-location-workflow"></a>

次の図は、AWS IoT Core for LoRaWAN で、デバイスとゲートウェイの位置情報が保存および更新される方法を示しています。

![\[AWS IoT Core for LoRaWAN が、静止位置データと生データを使用して、リアルタイムで位置を計算することを示すイメージ。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-lms-architecture.png)


1. 

**リソースの静止位置を指定する**  
緯度と経度の座標を使用して、GeoJSON ペイロードとしてデバイスまたはゲートウェイの静止位置情報を指定します。オプションで高度座標を指定することもできます。使用する座標は WGS84 座標系に基づきます。詳細については、「[World Geodetic System (WGS84)](https://gisgeography.com/wgs84-world-geodetic-system/)」(世界測地系 (WGS84)) を参照してください。

1. 

**デバイスの測位を有効にする**  
LoRa Edge チップを搭載した LoRaWAN デバイスを使用している場合、オプションで測位を有効にして、デバイスの位置をリアルタイムで追跡できます。デバイスがアップリンクメッセージを送信すると、ジオロケーションフレームポートを使用して、GNSS および Wi-Fi スキャンデータが AWS IoT Core for LoRaWAN に送信されます。次に、ソルバーでは、この情報を使用してデバイスの位置を決定します。

1. 

**送信先を追加して位置データをルーティングする**  
デバイスデータを処理するための IoT ルールを記述する送信先を追加することで、更新された位置情報を AWS IoT Core for LoRaWAN にルーティングすることができます。また、Amazon Location マップでリソースの最新の位置を確認することもできます。

## リソースの位置を設定する
<a name="lorawan-location-how"></a>

リソースの位置は AWS マネジメントコンソール、AWS IoT Wireless API、または AWS CLI を使用して設定できます。

デバイスに LoRa Edge チップが搭載されている場合は、測位を有効にしてリアルタイムの位置情報を計算することもできます。ゲートウェイの場合は、静止位置座標を入力し、Amazon Location を使用して Amazon Location マップでゲートウェイの位置を追跡できます。

**Topics**
+ [LoRaWAN デバイスの測位の仕組み](#lorawan-location-solver)
+ [測位ワークフローの概要](#lorawan-location-workflow)
+ [リソースの位置を設定する](#lorawan-location-how)
+ [LoRaWAN ゲートウェイの位置を設定する](lorawan-location-gateways.md)
+ [LoRaWAN デバイスの位置を設定する](lorawan-location-devices.md)

# LoRaWAN ゲートウェイの位置を設定する
<a name="lorawan-location-gateways"></a>

AWS IoT Core for LoRaWAN にゲートウェイを追加すると、静止位置データを指定できます。Amazon Location Service マップを有効にすると、位置データが Amazon Location マップに表示されます。

**注記**  
サードパーティーソルバーは LoRaWAN ゲートウェイでは使用できません。ゲートウェイの場合でも、静止位置座標を指定できます。ゲートウェイの場合のように、ソルバーを使用して位置を計算しない場合、精度情報は `0.0` と表示されます。

ゲートウェイの位置は、AWS マネジメントコンソール、AWS IoT Wireless API、または AWS CLI を使用して設定できます。

## コンソールを使用してゲートウェイの位置を設定する
<a name="lorawan-location-gateways-console"></a>

AWS マネジメントコンソール を使用してゲートウェイリソースの位置を設定するには、まずコンソールにサインインし、AWS IoT コンソールの [https://console.aws.amazon.com/iot/home#/wireless/gateways](https://console.aws.amazon.com/iot/home#/wireless/gateways) (ゲートウェイ) ハブページに移動します。

**位置情報を追加する**  
ゲートウェイの位置設定を追加するには

1. **[Gateways]** (ゲートウェイ) ハブページで、**[Add gateway]** (ゲートウェイの追加) を選択します。

1. ゲートウェイの EUI、周波数帯域 (RFRegion)、およびその他のゲートウェイの詳細と LoRaWAN 設定情報を入力します。詳細については、「[コンソールを使用してゲートウェイを追加する](lorawan-onboard-gateway-add.md#lorawan-onboard-gateway-console)」を参照してください。

1. **[Position information - Optional]** (位置情報 - オプション) セクションに移動して、緯度と経度の座標と、オプションの高度座標を使用して、ゲートウェイの位置情報を入力します。位置情報は WGS84 座標系に基づいています。

**ゲートウェイの位置を表示する**  
ゲートウェイの位置を設定したら、AWS IoT Core for LoRaWAN は `iotwireless.map` という Amazon Location マップを作成します。このマップは、**[Position]** (位置) タブのゲートウェイの詳細ページで確認できます。指定した位置座標に基づいて、ゲートウェイの位置がマップ上にマーカーとして表示されます。ズームインまたはズームアウトして、マップ上のゲートウェイの位置をはっきりと表示できます。**[Position]** (位置) タブには、精度情報とゲートウェイの位置を決定した際のタイムスタンプも表示されます。

**注記**  
Amazon Location Service のマップがインストールされていない場合は、マップにアクセスしてゲートウェイの位置を表示するには、Amazon Location Service を使用する必要があることを示すメッセージが表示されます。Amazon Location Service マップを使用すると、AWS アカウント に追加料金が発生する可能性があります。詳細については、「[AWS IoT Core 料金表](https://aws.amazon.com/iot-core/pricing/)」を参照してください。

`iotwireless.map` は、[https://docs.aws.amazon.com/location-maps/latest/APIReference/API_GetMapTile.html](https://docs.aws.amazon.com/location-maps/latest/APIReference/API_GetMapTile.html) といった `Get` API オペレーションを使用してアクセスされるマップデータのソースとして機能します。マップに使用される `Get` API に関する情報は、「[Amazon Location Service API リファレンス](https://docs.aws.amazon.com/location-maps/latest/APIReference/Welcome.html)」を参照してください。

このマップに関する追加情報を取得するには、Amazon Location Service コンソールに移動し、**[maps]** (マップ) を選択してから、[iotwireless.map](https://console.aws.amazon.com/location/maps/home#/describe/iotwireless.map) を選択します。詳細については、「Amazon Location Service デベロッパーガイド」の「[マップ](https://docs.aws.amazon.com/location/latest/developerguide/map-concepts.html)」を参照してください。

**ゲートウェイの位置設定を更新する**  
ゲートウェイの位置設定を変更するには、ゲートウェイの詳細ページで **[Edit]** (編集) を選択し、位置情報と送信先を更新します。

**注記**  
過去の位置データに関する情報はありません。ゲートウェイの位置座標を更新すると、以前に報告された位置データが上書きされます。位置を更新したら、ゲートウェイ詳細の **[Position]** (位置) タブに新しい位置情報が表示されます。タイムスタンプの変更は、それがゲートウェイの最新位置に対応していることを示しています。

## API を使用してゲートウェイの位置を設定する
<a name="lorawan-location-gateways-api"></a>

位置情報の指定や、ゲートウェイの位置を設定するには、AWS IoT Wireless API か AWS CLI を使用します。

**重要**  
API アクションの [UpdatePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdatePosition.html)、[GetPosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetPosition.html)、[PutPositionConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_PutPositionConfiguration.html)、[GetPositionConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetPositionConfiguration.html)、[ListPositionConfigurations](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListPositionConfigurations.html) はサポートされなくなりました。代わりに、測位情報を更新および取得するための呼び出しには、[GetResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetResourcePosition.html) と [UpdateResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateResourcePosition.html) API オペレーションを使用する必要があります。

### 位置情報を追加する
<a name="lorawan-location-gateways-api-add"></a>

特定のワイヤレスゲートウェイの静止位置情報を追加するには、[UpdateResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateResourcePosition.html) API オペレーションか [update-resource-position](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-resource-position.html) CLI コマンドを使用して、座標を指定します。`ResourceType` に `WirelessGateway`、`ResourceIdentifier` に更新するワイヤレスゲートウェイの ID、GeoJSON ペイロードに位置情報を指定します。

```
aws iotwireless update-resource-position \ 
    --resource-type WirelessGateway \ 
    --resource-id "12345678-a1b2-3c45-67d8-e90fa1b2c34d" \ 
    --cli-input-json file://gatewayposition.json
```

以下は、`gatewayposition.json` ファイルの内容を示しています。

**gatewayposition.json の内容**

```
{ 
     "type": "Point",
     "coordinates": [33.3318, -22.2155, 13.123],
     "properties": {
          "timestamp": "2018-11-30T18:35:24Z"
      }
}
```

このコマンドを実行しても、出力は生成されません。指定した位置情報を表示するには、`GetResourcePosition` API オペレーションを使用します。

### 位置情報を取得する
<a name="lorawan-location-devices-api-get"></a>

特定のワイヤレスゲートウェイの位置情報を取得するには、[GetResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetResourcePosition.html) API オペレーションか [get-resource-position](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-position.html) CLI コマンドを使用します。`resourceType` に `WirelessGateway` を指定し、`resourceIdentifier` にワイヤレスゲートウェイの ID を入力します。

```
aws iotwireless get-resource-position \ 
    --resource-type WirelessGateway \ 
    --resource-id "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
```

このコマンドを実行すると、ワイヤレスゲートウェイの位置情報が GeoJSON ペイロードとして表示されます。位置座標、位置座標タイプ、ゲートウェイの最新位置に対応するタイムスタンプなどの追加プロパティの情報が表示されます。

```
{
    {
    "type": "Point",
     "coordinates": [33.3318,-22.2155,13.123],
     "properties": {
         "timestamp": "2018-11-30T18:35:24Z"
         }
    }
}
```

# LoRaWAN デバイスの位置を設定する
<a name="lorawan-location-devices"></a>

デバイスを AWS IoT Core for LoRaWAN に追加すると、静止位置情報の指定、測位の有効化 (オプション)、送信先の指定が可能になります。送信先には、デバイスの位置情報を処理し、更新された位置を Amazon Location Service にルーティングする IoT ルールを記述します。デバイスの位置を設定すると、精度情報、指定した送信先とともに、位置データが Amazon Location マップに表示されます。

デバイスの位置の設定には、AWS マネジメントコンソール、AWS IoT Wireless API、または AWS CLI を使用できます。

## アップリンクメッセージのフレームポートと形式
<a name="lorawan-location-devices-fportuplink"></a>

ポジショニングを有効にする場合は、デバイスから AWS IoT Core for LoRaWAN に Wi-Fi および GNSS スキャンデータを通信するため、ジオロケーションフレームポートを指定する必要があります。位置情報は、このフレームポートを使用して AWS IoT Core for LoRaWAN に送信されます。

LoRaWAN は、データ配信フィールド (FRMPayload) と Port フィールド (FPort) を備え、異なるタイプのメッセージを区別する仕様になっています。位置情報を送信するために、フレームポートには 1 から 223 までの値を指定できます。FPort 0 は MAC メッセージ用に、FPort 224 は MAC コンプライアンステスト用に、ポート 225〜255 は将来的なアプリケーション拡張の標準化に向けて予約されています。

### AWS IoT Core for LoRaWAN からルールエンジンへのアップリンクメッセージ
<a name="lorawan-location-devices-uplink"></a>

送信先を追加すると、ルールエンジンを使用してデータを Amazon Location Service にルーティングするための AWS IoT ルールが作成されます。その後、更新された位置情報が Amazon Location マップに表示されます。測位を有効化していない場合、デバイスの静止位置座標を更新すると、送信先で位置データがルーティングされます。

次のコードは、AWS IoT Core for LoRaWAN から送信されたアップリンクメッセージの形式を、位置情報、精度、ソルバー設定、ワイヤレスメタデータとともに示しています。強調表示されているフィールドはオプションです。垂直精度情報がない場合、値は `null` になります。

```
{
    // Position configuration parameters for given wireless device
    "WirelessDeviceId": "5b58245e-146c-4c30-9703-0ca942e3ff35",     

    // Position information for a device in GeoJSON format. Altitude
    // is optional. If no vertical accuracy information is available
    // or positioning isn't activated, the value is set to null.
    // The position information coordinates are listed in the order 
    // [longitude, latitude, altitude].
    "coordinates": [33.33000183105469, -22.219999313354492, 99.0],
    "type": "Point",
    "properties": { 
         "horizontalAccuracy": number,
         "verticalAccuracy": number",
         "timestamp": "2022-08-19T03:08:35.061Z"
    },

    //Parameters controlled by AWS IoT Core for LoRaWAN
    "WirelessMetadata": 
    {
        "LoRaWAN":
        {
            "ADR": false,
            "Bandwidth": 125,
            "ClassB": false,
            "CodeRate": "4/5",
            "DataRate": "0",
            "DevAddr": "00b96cd4",
            "DevEui": "58a0cb000202c99",            
            "FOptLen": 2,
            "FCnt": 1,
            "Fport": 136,   
            "Frequency": "868100000",     
            "Gateways": [
             {
                    "GatewayEui": "80029cfffe5cf1cc",      
                    "Snr": -29,
                    "Rssi": 9.75
             }
             ],  
            "MIC": "7255cb07",  
            "MType": "UnconfirmedDataUp",
            "Major": "LoRaWANR1",
            "Modulation": "LORA", 
            "PolarizationInversion": false,    
            "SpreadingFactor": 12,                         
            "Timestamp": "2021-05-03T03:24:29Z"
            
        }
    }
}
```

## コンソールを使用してデバイスの位置を設定する
<a name="lorawan-location-devices-console"></a>

AWS マネジメントコンソール を使用してデバイスの位置を設定および管理するには、まずコンソールにサインインし、次に AWS IoT コンソールの [https://console.aws.amazon.com/iot/home#/wireless/devices](https://console.aws.amazon.com/iot/home#/wireless/devices) (デバイス) ハブページに移動します。

**位置情報を追加する**  
デバイスの位置情報を追加するには、次の手順を実行します。

1. **[Devices]** (デバイス) ハブページで、**[Add wireless device]** (ワイヤレスデバイスの追加) を選択します。

1. ワイヤレスデバイスの仕様、デバイスとサービスのプロファイル、およびデータを他の AWS のサービス にルーティングするための IoT ルールを定義する送信先を入力します。詳細については、「[デバイスを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-end-devices.md)」を参照してください。

1. 位置情報を入力して、ジオロケーションを有効化し (オプション)、メッセージのルーティングに使用する位置データの送信先を指定します。
   + 

**位置情報**  
緯度と経度の座標、およびオプションで高度座標を使用して、デバイスの位置データを指定します。位置情報は WGS84 座標系に基づいています。
   + 

**ジオロケーション**  
AWS IoT Core for LoRaWAN でデバイスの位置を計算するためにジオロケーションを使用する場合は、ポジショニングを有効化します。サードパーティーの GNSS および Wi-Fi ソルバーを使用して、デバイスの位置をリアルタイムで特定します。

     ジオロケーション情報を入力するには、**[ポジショニングを有効化]** を選択し、GNSS および Wi-Fi スキャンデータを AWS IoT Core for LoRaWAN と通信するための位置情報フレームポートを入力します。参照用にデフォルトの FPort が入力されていますが、1 から 223 までの任意の値を選択できます。
   + 

**位置データの送信先**  
デバイスの位置データを処理して AWS IoT Core for LoRaWAN に転送する AWS IoT ルールを記述する送信先を選択します。この送信先は、位置データのルーティングのみに使用されます。これは、デバイスデータを他の AWS のサービス にルーティングするために使用するものとは異なる送信先である必要があります。

**デバイスの位置設定を表示する**  
デバイスの位置を設定したら、AWS IoT Core for LoRaWAN は、`iotwireless.map` という Amazon Location マップを作成します。このマップは、デバイスの **[Position]** (位置) タブの詳細ページで確認できます。指定した位置座標またはサードパーティーソルバーによって計算された位置に基づいて、デバイスの位置がマップ上にマーカーとして表示されます。ズームインまたはズームアウトすることで、マップ上のデバイスの位置をはっきりと表示できます。デバイスの詳細ページの **[Position]** (位置) タブには、精度情報、デバイスの位置が決定されたタイムスタンプ、および指定した位置データの送信先も表示されます。

**注記**  
Amazon Location Service の地図を有効にしていない場合、地図にアクセスして位置を表示するには、Amazon Location Service を使用する必要があることを示すメッセージが表示されます。Amazon Location Service マップを使用すると、AWS アカウント に追加料金が発生する可能性があります。詳細については、「[AWS IoT Core 料金表](https://aws.amazon.com/iot-core/pricing/)」を参照してください。

`iotwireless.map` は、[https://docs.aws.amazon.com/location-maps/latest/APIReference/API_GetMapTile.html](https://docs.aws.amazon.com/location-maps/latest/APIReference/API_GetMapTile.html) といった `Get` API オペレーションを使用してアクセスされるマップデータのソースとして機能します。マップに使用される `Get` API に関する情報は、「[Amazon Location Service API リファレンス](https://docs.aws.amazon.com/location-maps/latest/APIReference/Welcome.html)」を参照してください。

このマップに関する追加情報を取得するには、Amazon Location Service コンソールに移動し、**[maps]** (マップ) を選択してから、[iotwireless.map](https://console.aws.amazon.com/location/maps/home#/describe/iotwireless.map) を選択します。詳細については、「Amazon Location Service デベロッパーガイド」の「[マップ](https://docs.aws.amazon.com/location/latest/developerguide/map-concepts.html)」を参照してください。

**デバイスの位置設定を更新する**  
デバイスの位置設定を変更するには、デバイスの詳細ページで **[Edit]** (編集) を選択し、次に、位置情報と、ジオロケーション設定、送信先を更新します。

**注記**  
過去の位置データに関する情報はありません。デバイスの位置座標を更新すると、以前に報告された位置データが上書きされます。ポジションを更新したら、デバイス詳細の **[Position]** (位置) タブに、新しい位置情報が表示されます。タイムスタンプの変更は、それがデバイスの最新位置に対応していることを示しています。

## API を使用してデバイスの位置を設定する
<a name="lorawan-location-devices-api"></a>

AWS IoT Wireless API または AWS CLI を使用することで、位置情報の指定、デバイス位置の設定、ジオロケーションの有効化 (オプション) が可能になります。

**重要**  
API アクションの [UpdatePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdatePosition.html)、[GetPosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetPosition.html)、[PutPositionConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_PutPositionConfiguration.html)、[GetPositionConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetPositionConfiguration.html)、[ListPositionConfigurations](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListPositionConfigurations.html) はサポートされなくなりました。代わりに、測位情報を更新および取得するための呼び出しには、[GetResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetResourcePosition.html) と [UpdateResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateResourcePosition.html) API オペレーションを使用する必要があります。

### 位置情報と設定を追加する
<a name="lorawan-location-devices-api-add"></a>

特定のワイヤレスデバイスの静止位置情報を追加するには、[UpdateResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateResourcePosition.html) API オペレーションか、[update-resource-position](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-resource-position.html) CLI コマンドを使用して、座標を指定します。`ResourceType` に `WirelessDevice`、`ResourceIdentifier` に更新するワイヤレスデバイス ID、位置情報を指定します。

```
aws iotwireless update-resource-position \ 
    --resource-type WirelessDevice \ 
    --resource-id "1ffd32c8-8130-4194-96df-622f072a315f" \ 
    --position [33.33, -33.33, 10.0]
```

以下は、`deviceposition.json` ファイルの内容を示しています。ジオロケーション情報データを送信するための FPort 値を指定するには、[CreateWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html) および [UpdateWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateWirelessDevice.html) API オペレーションで[測位](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_Positioning.html)オブジェクトを使用します。

**deviceposition.json の内容**

```
{ 
     "type": "Point",
     "coordinates": [33.3318, -22.2155, 13.123],
     "properties": {
          "verticalAccuracy": 707,
          "horizontalAccuracy": 
          "timestamp": "2018-11-30T18:35:24Z"
      }
}
```

このコマンドを実行しても、出力は生成されません。指定した位置情報を表示するには、`GetResourcePosition` API オペレーションを使用します。

### 位置情報と設定を取得する
<a name="lorawan-location-devices-api-get"></a>

特定のワイヤレスデバイスの位置情報を取得するには、[GetResourcePosition](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetResourcePosition.html) API または [get-resource-position](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-resource-position.html) CLI コマンドを使用します。`resourceType` に `WirelessDevice` を指定し、また `resourceIdentifier` にワイヤレスデバイスの ID を入力します。

```
aws iotwireless get-resource-position \ 
    --resource-type WirelessDevice \ 
    --resource-id "1ffd32c8-8130-4194-96df-622f072a315f"
```

このコマンドを実行すると、ワイヤレスデバイスの位置情報が GeoJSON ペイロードとして表示されます。位置座標、位置のタイプ、精度情報、デバイスの最新位置に対応するタイムスタンプなどのプロパティに関する情報が表示されます。

```
{ 
     "type": "Point",
     "coordinates": [33.3318, -22.2155, 13.123],
     "properties": {
          "verticalAccuracy": 707,
          "horizontalAccuracy": 389,
          "horizontalConfidenceLevel": 0.68,
          "verticalConfidenceLevel": 0.68,
          "timestamp": "2018-11-30T18:35:24Z"
      }
}
```

# AWS IoT Wireless によるゲートウェイの管理
<a name="lorawan-manage-gateways"></a>

AWS IoT Core for LoRaWAN でゲートウェイを使用する場合の重要な考慮事項を次に示します。ゲートウェイを AWS IoT Core for LoRaWAN に追加する方法については、「[ゲートウェイを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-gateways.md)」を参照してください。

## LoRa Basic Station ソフトウェア要件
<a name="lorawan-lora-basics-station"></a>

AWS IoT Core for LoRaWAN に接続するためには、LoRaWAN ゲートウェイで [LoRa Basics Station](https://doc.sm.tc/station) というソフトウェアが実行されている必要があります。LoRa Basics Station は、Semtech 社によって管理され、[GitHub ](https://github.com/lorabasics/basicstation)リポジトリによって配信されているオープンソースのソフトウェアです。AWS IoT Core for LoRaWAN では、LoRa Basics Station バージョン 2.0.4 以降がサポートされています。最新バージョンは 2.0.6 です。

## AWS Partner Device Catalog の認定されたゲートウェイの使用
<a name="lorawan-qualified-gateways"></a>

[AWS Partner Device Catalog](https://devices.amazonaws.com/search?page=1&sv=iotclorawan) には、AWS IoT Core for LoRaWAN での使用が認定されているゲートウェイとデベロッパーキットが含まれています。ゲートウェイを AWS IoT Core に接続するための埋め込みソフトウェアを変更する必要がないため、これらの認定ゲートウェイを使用することをお勧めします。これらのゲートウェイには、AWS IoT Core for LoRaWAN と互換性のあるバージョンの BasicStation ソフトウェアが既に搭載されています。

**注記**  
AWS IoT Core for LoRaWAN の認定ゲートウェイとして Partner Catalog に記載されていないゲートウェイをお持ちの場合、そのゲートウェイがバージョン 2.0.4 以降の LoRa Basics Station ソフトウェアを実行していれば、使用できる可能性があります。LoRaWAN ゲートウェイの認証に **TLS Server and Client Authentication** を使用していることを確認してください。

## CUPS および LNS プロトコルの使用
<a name="lorawan-cups-lns-protocols"></a>

LoRa Basics Station ソフトウェアには、ネットワークサーバーにゲートウェイを接続するための 2 つのサブプロトコル、LoRaWAN Network Server (LNS) プロトコルと Configuration and Update Server (CUPS) プロトコルが含まれています。

LNS プロトコルは、LoRa Basics Station 互換ゲートウェイとネットワークサーバーの間にデータ接続を確立します。LoRa アップリンクおよびダウンリンクメッセージは、安全な WebSockets を介して、このデータ接続経由で交換されます。

CUPS プロトコルは、認証情報の管理、ゲートウェイのリモート設定とファームウェアの更新を可能にします。AWS IoT Core for LoRaWAN は、LoRaWAN データの取り込みとリモートゲートウェイの管理それぞれに対して LNS エンドポイントと CUPS エンドポイントの両方を提供します。

詳細については、「[LNS プロトコル](https://doc.sm.tc/station/tcproto.html)」および「[CUPS プロトコル](https://doc.sm.tc/station/cupsproto.html)」を参照してください。

**Topics**
+ [LoRa Basic Station ソフトウェア要件](#lorawan-lora-basics-station)
+ [AWS Partner Device Catalog の認定されたゲートウェイの使用](#lorawan-qualified-gateways)
+ [CUPS および LNS プロトコルの使用](#lorawan-cups-lns-protocols)
+ [LoRaWAN ゲートウェイのビーコンとフィルタリング機能を設定](lorawan-gateway-configure.md)
+ [AWS IoT Core for LoRaWAN で CUPS サービスを使用してゲートウェイファームウェアを更新する](lorawan-update-firmware.md)
+ [LoRaWAN ダウンリンクデータトラフィックを受信するゲートウェイの選択](lorawan-gateway-participate.md)

# LoRaWAN ゲートウェイのビーコンとフィルタリング機能を設定
<a name="lorawan-gateway-configure"></a>

LoRaWAN デバイスを使用する場合、LoRaWAN ゲートウェイの特定のオプションパラメータを設定できます。パラメータには以下が含まれます。
+ 

**ビーコン**  
クラス B LoRaWAN デバイスのブリッジとして機能する LoRaWAN ゲートウェイのビーコンパラメータを設定できます。これらのデバイスはスケジュールされた時間帯にダウンリンクメッセージを受信するため、これらの時間同期ビーコンを送信するようにゲートウェイのビーコンパラメータを設定する必要があります。
+ 

**フィルタリング**  
LoRaWAN ゲートウェイの `NetID` および `JoinEUI` パラメータを設定することで、デバイスのデータトラフィックをフィルタリングすることができます。トラフィックをフィルタリングすることで、帯域幅の使用量を節約し、ゲートウェイと LNS 間のトラフィックフローを削減することができます。
+ 

**サブバンド**  
ゲートウェイのサブバンドを設定して、使用する特定のサブバンドを指定できます。さまざまなサブバンド間をホップできないワイヤレスデバイスでは、この機能を使用して、その特定のサブバンドの周波数チャネルのみを使用してデバイスと通信できます。

次のトピックでは、これらのパラメータとその設定方法について詳しく説明します。ビーコンのパラメータは、AWS マネジメントコンソール では使用できず、AWS IoT Wireless API または AWS CLI を使用してのみ指定できます。

**Topics**
+ [クラス B デバイスにビーコンを送信するようにゲートウェイを設定する](lorawan-gateway-beaconing.md)
+ [ゲートウェイのサブバンドとフィルタリング機能を設定する](lorawan-subband-filter-configuration.md)

# クラス B デバイスにビーコンを送信するようにゲートウェイを設定する
<a name="lorawan-gateway-beaconing"></a>

クラス B ワイヤレスデバイスを AWS IoT Core for LoRaWAN にオンボードすると、デバイスはスケジュールされたタイムスロットにダウンリンクメッセージを受信します。デバイスは、ゲートウェイから送信される時間同期ビーコンに基づいてこれらのスロットを開きます。ゲートウェイがこれらの時間同期ビーコンを送信するには、AWS IoT Core for LoRaWAN を使用してゲートウェイの特定のビーコン関連パラメータを設定します。

これらのビーコンパラメータを設定するには、ゲートウェイが LoRa Basics Station ソフトウェアバージョン 2.0.6 を実行している必要があります。「[AWS Partner Device Catalog の認定されたゲートウェイの使用](lorawan-manage-gateways.md#lorawan-qualified-gateways)」を参照してください。

## ビーコンパラメータを設定する方法
<a name="lorawan-beaconing-configure"></a>

**注記**  
ゲートウェイがクラス B ワイヤレスデバイスと通信している場合のみ、ビーコンパラメータを設定する必要があります。

[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessGateway.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessGateway.html) API オペレーションを使用して AWS IoT Core for LoRaWAN にゲートウェイを追加する際にビーコンパラメータの設定を行います。API オペレーションを呼び出す際には、ゲートウェイの `Beaconing` オブジェクトを使用して、以下のパラメータを指定します。パラメータを設定すると、ゲートウェイは 128 秒間隔でデバイスにビーコンを送信します。
+ `DataRate`: ビーコンを送信しているゲートウェイのデータレート。
+ `Frequencies`: ゲートウェイがビーコンを送信する周波数のリスト。

次の例は、ゲートウェイのパラメータを設定する方法を示しています。`input.json` ファイルにはゲートウェイ証明書やプロビジョニング認証情報などの追加の詳細が含まれます。`CreateWirelessGateway`API オペレーションを使用して AWS IoT Core for LoRaWAN にゲートウェイを追加する方法の詳細については、「[API を使用してゲートウェイを追加する](lorawan-onboard-gateway-add.md#lorawan-onboard-gateway-api)」を参照してください。

**注記**  
ビーコンのパラメータは、AWS IoT コンソールを使用してゲートウェイを AWS IoT Core for LoRaWAN に追加する際には利用できません。

```
aws iotwireless create-wireless-gateway \
    --name "myLoRaWANGateway" \        
    --cli-input-json file://input.json
```

以下は、`input.json` ファイルの内容を示しています。

**input.json の内容**

```
{ 
    "Description": "My LoRaWAN gateway",
    "LoRaWAN": {
        "Beaconing": { 
          "DataRate": 8,
          "Frequencies": ["923300000","923900000"]
        },
        "GatewayEui": "a1b2c3d4567890ab",
        "RfRegion": US915, 
        "JoinEuiFilters": [ 
         ["0000000000000001", "00000000000000ff"], 
         ["000000000000ff00", "000000000000ffff"] 
         ], 
        "NetIdFilters": ["000000", "000001"], 
        "RfRegion": "US915", 
        "SubBands": [2] 
    }     
}
```

以下のコードは、このコマンドを実行したときの出力例を示しています。

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:400232685877aa:WirelessGateway/a01b2c34-d44e-567f-abcd-0123e445663a",
    "Id": a01b2c34-d44e-567f-abcd-0123e445663a"
}
```

## ビーコンパラメータに関する情報を取得する
<a name="lorawan-beaconing-get"></a>

ゲートウェイのビーコンパラメータに関する情報は、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessGateway.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessGateway.html) API オペレーションを使用して取得できます。

**注記**  
ゲートウェイがすでにオンボーディングされている場合は、ビーコンパラメータの設定に `UpdateWirelessGateway` API オペレーションを使用することはできません。パラメータを設定するには、ゲートウェイを削除してから、`CreateWirelessGateway` API オペレーションを使用してゲートウェイを追加するときにパラメータを指定する必要があります。

```
aws iotwireless get-wireless-gateway \
    --identifier "12345678-a1b2-3c45-67d8-e90fa1b2c34d" \
    --identifier-type WirelessGatewayId
```

このコマンドを実行すると、ゲートウェイとビーコンパラメータに関する情報が返されます。

# ゲートウェイのサブバンドとフィルタリング機能を設定する
<a name="lorawan-subband-filter-configuration"></a>

LoRaWAN ゲートウェイは、ゲートウェイが AWS IoT Core for LoRaWAN に接続できるようにする [LoRa Basics Station](https://doc.sm.tc/station) ソフトウェアを実行します。AWS IoT Core for LoRaWAN に接続するために、LoRa ゲートウェイはまず CUPS サーバーに LNS エンドポイントをクエリし、そのエンドポイントとの WebSockets データ接続を確立します。接続が確立されたら、その接続を介してアップリンクフレームとダウンリンクフレームを交換できます。

## ゲートウェイが受信する LoRa データフレームのフィルタリング
<a name="lorawan-frequency-channels-subbands"></a>

LoRaWAN ゲートウェイがエンドポイントへの接続を確立した後、AWS IoT Core for LoRaWAN は、LoRa ゲートウェイの設定の一連のパラメータを指定する `router_config` メッセージで応答します。これには、`NetID` や `JoinEui` のフィルタリングパラメータが含まれます。`router_config` についてと、LoRaWAN Network Server (LNS) との接続が確立される方法については、[LNS プロトコル](https://doc.sm.tc/station/tcproto.html)を参照してください。

```
{
"msgtype"    : "router_config"
"NetID"      : [ INT, .. ]
"JoinEui"    : [ [INT,INT], .. ] // ranges: beg,end inclusive
"region"     : STRING             // e.g. "EU863", "US902", ..
"hwspec"     : STRING
"freq_range" : [ INT, INT ]       // min, max (hz)
"DRs"        : [ [INT,INT,INT], .. ]   // sf,bw,dnonly
"sx1301_conf": [ SX1301CONF, .. ]
"nocca"      : BOOL
"nodc"       : BOOL
"nodwell"    : BOOL
}
```

ゲートウェイは、通常、Wi-Fi、イーサネット、またはセルラーなどの広帯域幅ネットワーク経由で、LoRaWAN デバイスデータを LNS との間で送受信します。ゲートウェイは通常、すべてのメッセージをピックアップし、ゲートウェイに送信されるトラフィックを AWS IoT Core for LoRaWAN に渡します。ただし、一部のデバイスデータトラフィックをフィルターするようにゲートウェイを設定できます。これにより、帯域幅の使用量を節約し、ゲートウェイと LNS 間のトラフィックフローを削減できます。

データフレームをフィルターするように LoRa ゲートウェイを設定するには、`router_config` メッセージ内のパラメータ `NetID` および `JoinEui` を使用できます。`NetID` は、受け入れられる NetID 値のリストです。リストされているもの以外のデータフレームを含む LoRa データフレームは除外されます。`JoinEui` は、JoinEUI 値の範囲をエンコードする整数値のペアのリストです。参加要求フレームは、メッセージ内の `JoinEui` フィールドが [BegEui,EndEui] の範囲にない限り、ゲートウェイによって除外されます。

## 周波数チャネルとサブバンド
<a name="lorawan-frequency-channels-subbands"></a>

US915 および AU915 の RF リージョンでは、ワイヤレスデバイスには 64 個の 125 KHz アップリンクチャネルと 8 個の 500 KHz アップリンクチャネルがあり、LoRa ゲートウェイを使用して LoRaWAN ネットワークにアクセスできます。アップリンク周波数チャネルは 8 つのサブバンドに分かれており、それぞれに 8 つの 125 KHz チャネルと 1 つの 500 KHz チャネルがあります。AU915 リージョンの通常ゲートウェイごとに、1 つ以上のサブバンドがサポートされます。

一部のワイヤレスデバイスはサブバンド間でホップできず、AWS IoT Core for LoRaWAN への接続時に 1 つのサブバンドでのみ周波数チャネルを使用します。これらのデバイスからのアップリンクパケットを送信するには、LoRa ゲートウェイをその特定のサブバンドを使用するように設定します。EU868 など、他の RF リージョンのゲートウェイでは、この設定は必要ありません。

## コンソールを使用して、フィルタリングおよびサブバンドを使用するようにゲートウェイを設定する
<a name="lorawan-configure-gateway-channels-console"></a>

特定のサブバンドを使用するようにゲートウェイを設定したり、LoRa データフレームをフィルタリングする機能を有効にしたりすることができます。コンソールを使用してこれらのパラメータを指定するには、次のようにします。

1. AWS IoT コンソールの [AWS IoT Core for LoRaWAN](https://console.aws.amazon.com/iot/home#/wireless/gateways) の **[Gateways]** (ゲートウェイ) ページに移動し、**[Add gateway]** (ゲートウェイの追加) を選択します。

1. **[Gateway's Eui]** (ゲートウェイのEUI)、**[Frequency band (RFRegion)]** (周波数帯 (RFRegion))、オプションで **[Name]** (名前) および **[Description]** (説明) など、ゲートウェイの詳細を指定して、AWS IoT のモノをゲートウェイに関連付けるかどうかを選択します。ゲートウェイを追加する方法については、「[コンソールを使用してゲートウェイを追加する](lorawan-onboard-gateway-add.md#lorawan-onboard-gateway-console)」を参照してください。

1. [**LoRaWAN configuration**] (LoRaWAN 設定) セクションでは、サブバンドとフィルタリング情報を指定できます。
   + `SubBands`: サブバンドを追加するには、**Add SubBand**を選択し、ゲートウェイでサポートされているサブバンドを示す整数値のリストを指定します。`SubBands` パラメータは、`RfRegion` US915 および AU915 でのみ設定でき、これらのサポート対象リージョン内のいずれかの `[1,8]` の範囲内にある値を持つ必要があります。
   + `NetIdFilters`: アップリンクフレームをフィルターするには、[**Add NetId**] (NetID の追加) をクリックし、ゲートウェイが使用する文字列値のリストを指定します。ワイヤレスデバイスからの着信アップリンクフレームの NetID は、リストされている値の少なくとも 1 つと一致する必要があります。一致しない場合、フレームは除外されます。
   + `JoinEuiFilters`: [**Add JoinEui range**] (参加範囲の追加) を選択し、ゲートウェイが LoRa フレームをフィルターするために使用する文字列値のペアのリストを指定します。ワイヤレスデバイスからの参加要求の一部として指定された JoinEUI 値は、それぞれが [BegEui, EndEui] のペアとしてリストされた、少なくとも 1 つの JoinEuiRange 値の範囲内にある必要があります。そうでない場合、フレームは除外されます。

1. 「[コンソールを使用してゲートウェイを追加する](lorawan-onboard-gateway-add.md#lorawan-onboard-gateway-console)」で説明されている手順に従って、ゲートウェイの設定を続行できます。

ゲートウェイを追加した後、AWS IoT コンソールで [AWS IoT Core for LoRaWAN](https://console.aws.amazon.com/iot/home#/wireless/gateways) の **[Gateways]** (ゲートウェイ)ページで、追加したゲートウェイを選択すると、[Gateway details] (ゲートウェイの詳細) ページの **[LoRaWAN specific details]** (LoRaWAN 固有の詳細) セクションに `SubBands`、フィルター `NetIdFilters` および `JoinEuiFilters` が表示されます。

## API を使用して、フィルタリングおよびサブバンドを使用するようにゲートウェイを設定する
<a name="lorawan-configure-gateway-channels-api"></a>

ゲートウェイの作成に使用する [CreateWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessGateway.html) API を使用して、使用するサブバンドを設定し、フィルタリング機能を有効にすることができます。`CreateWirelessGateway` API を使用すると、`LoRaWAN` フィールドを使用して指定したゲートウェイ設定情報の一部としてサブバンドとフィルターを指定できます。以下に、この情報を含むリクエストトークンを示します。

```
POST /wireless-gateways HTTP/1.1
Content-type: application/json

{
"Arn": "arn:aws:iotwireless:us-east-1:400232685877aa:WirelessGateway/
       a11e3d21-e44c-471c-afca-6716c228336a",
"Description": "Using my first LoRaWAN gateway",
   "LoRaWAN": { 
      "GatewayEui": "a1b2c3d4567890ab",
      "JoinEuiFilters": [
        ["0000000000000001", "00000000000000ff"],
        ["000000000000ff00", "000000000000ffff"]
      ],
      "NetIdFilters": ["000000", "000001"],
      "RfRegion": "US915",
      "SubBands": [2]
   },
   "Name": "myFirstLoRaWANGateway"  
   "ThingArn": null,
   "ThingName": null
}
```

また、[UpdateWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateWirelessGateway.html) API を使用して、サブバンドは更新せずにフィルターを更新することができます。`JoinEuiFilters` と `NetIdfilters` の値が null の場合、そのフィールドに更新がないことを意味します。値が null でなく、空のリストが含まれている場合は、更新が適用されています。指定したフィールドの値を取得するには、[GetWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessGateway.html) API を使用します。

# AWS IoT Core for LoRaWAN で CUPS サービスを使用してゲートウェイファームウェアを更新する
<a name="lorawan-update-firmware"></a>

ゲートウェイで実行される [LoRa Basics Station](https://doc.sm.tc/station) ソフトウェアは、Configuration and Update Server (CUPS) プロトコルを使用して、認証情報管理とファームウェア更新インターフェイスを提供します。CUPS プロトコルは、ECDSA シグニチャによるセキュアなファームウェアアップデート配信を提供します。

ゲートウェイのファームウェアは頻繁に更新する必要があります。AWS IoT Core for LoRaWAN で CUPS サービスを使用して、ファームウェアの更新をゲートウェイに提供できます。また、更新に署名することもできます。ゲートウェイのファームウェアを更新するには、SDK または CLI を使用できますが、コンソールは使用できません。

更新プロセスは完了までに約 45 分かかります。AWS IoT Core for LoRaWAN への接続用にゲートウェイを初めて設定する場合、さらに時間がかかることがあります。ゲートウェイの製造元は、通常、独自のファームウェア更新ファイルと署名を提供しているため、代わりにそれを使用して「[S3 バケットにファームウェアファイルをアップロードし、IAM ロールを追加する](lorawan-upload-firmware-s3bucket.md)」に進むことができます。

ファームウェア更新ファイルがない場合は、「[ファームウェア更新ファイルと署名を生成する](lorawan-script-fwupdate-sigkey.md)」で、アプリケーションに適応させるために使用できる例を参照してください。

**Topics**
+ [ファームウェア更新ファイルと署名を生成する](lorawan-script-fwupdate-sigkey.md)
+ [S3 バケットにファームウェアファイルをアップロードし、IAM ロールを追加する](lorawan-upload-firmware-s3bucket.md)
+ [タスク定義を使用してファームウェア更新をスケジュールし、実行する](lorawan-schedule-firmware-update.md)

# ファームウェア更新ファイルと署名を生成する
<a name="lorawan-script-fwupdate-sigkey"></a>

この手順のステップはオプションで、使用しているゲートウェイによって異なります。ゲートウェイの製造元は、独自のファームウェア更新を更新ファイルまたはスクリプトの形式で提供し、Basics Station はこのスクリプトをバックグラウンドで実行します。この場合、ほとんどの場合、使用しているゲートウェイのリリースノートにファームウェア更新ファイルが記載されています。その更新ファイルまたはスクリプトを代わりに使用して、「[S3 バケットにファームウェアファイルをアップロードし、IAM ロールを追加する](lorawan-upload-firmware-s3bucket.md)」に進むことができます。

このスクリプトがない場合は、以下に示す、ファームウェア更新ファイルを生成するために実行するコマンドを使用してください。また、更新に署名して、コードが変更および破損していないこと、信頼できる作成者のみが発行したコードがデバイスで実行されるようにすることもできます。

**Topics**
+ [ファームウェア更新ファイルを生成する](#lorawan-firmware-update-script)
+ [ファームウェア更新の署名を生成する](#lorawan-generate-signature-fwupdate)
+ [次のステップを確認する](#lorawan-fwupdate-sigkey-next-steps)

## ファームウェア更新ファイルを生成する
<a name="lorawan-firmware-update-script"></a>

ゲートウェイで動作している LoRa Basics Station ソフトウェアは、CUPS 応答でファームウェア更新を受信できます。製造元から提供されたスクリプトがない場合は、Raspberry Pi ベースの RAKWireless ゲートウェイ用に書かれた次のファームウェア更新スクリプトを参照してください。基本スクリプトと、新しいステーションバイナリ、バージョンファイル、`station.conf` が添付されています。

**注記**  
スクリプトは RAKWireless ゲートウェイに固有のものなので、使用しているゲートウェイに応じてアプリケーションに適応させる必要があります。

**基本スクリプト**  
以下は、Raspberry Pi ベースの RAKWireless ゲートウェイのサンプル基本スクリプトを示しています。次のコマンドを `base.sh` ファイルに保存し、端末で、Raspberry Pi のウェブブラウザからスクリプトを実行できます。

```
*#!/bin/bash*
execution_folder=/home/pi/Documents/basicstation/examples/aws_lorawan
station_path="$execution_folder/station"
version_path="$execution_folder/version.txt"
station_conf_path="$execution_folder/station_conf"

# Function to find the Basics Station binary at the end of this script 
# and store it in the station path
function prepare_station()
{
 match=$(grep --text --line-number '^STATION:$' $0 | cut -d ':' -f 1) 
 payload_start=$((match + 1)) 
 match_end=$(grep --text --line-number '^END_STATION:$' $0 | cut -d ':' -f 1) 
 payload_end=$((match_end - 1)) 
 lines=$(($payload_end-$payload_start+1)) 
 head -n $payload_end $0 | tail -n $lines  > $station_path
}

# Function to find the version.txt at the end of this script 
# and store it in the location for version.txt
function prepare_version()
{
  match=$(grep --text --line-number '^VERSION:$' $0 | cut -d ':' -f 1) 
  payload_start=$((match + 1))        
  match_end=$(grep --text --line-number '^END_VERSION:$' $0 | cut -d ':' -f 1) 
  payload_end=$((match_end - 1)) 
  lines=$(($payload_end-$payload_start+1)) 
  head -n $payload_end $0 | tail -n $lines  > $version_path
}

# Function to find the version.txt at the end of this script 
# and store it in the location for version.txt
function prepare_station_conf()
{
 match=$(grep --text --line-number '^CONF:$' $0 | cut -d ':' -f 1) 
 payload_start=$((match + 1)) 
 match_end=$(grep --text --line-number '^END_CONF:$' $0 | cut -d ':' -f 1) 
 payload_end=$((match_end - 1)) 
 lines=$(($payload_end-$payload_start+1)) 
 head -n $payload_end $0 | tail -n $lines  > $station_conf_path
}

# Stop the currently running Basics station so that it can be overwritten
# by the new one
killall station

# Store the different files
prepare_station
prepare_versionp
prepare_station_conf

# Provide execute permission for Basics station binary
chmod +x $station_path

# Remove update.bin so that it is not read again next time Basics station starts
rm -f /tmp/update.bin

# Exit so that rest of this script which has binaries attached does not get executed
exit 0
```

**ペイロードスクリプトを追加する**  
基本スクリプトに、Basics Station バイナリ、更新するバージョンを識別する version.txt、および `station.conf` を追加して、`addpayload.sh` というスクリプトにしました。次に、このスクリプトを実行します。

```
*#!/bin/bash
*
base.sh > fwstation

# Add station
echo "STATION:" >> fwstation
cat $1 >> fwstation
echo "" >> fwstation
echo "END_STATION:" >> fwstation

# Add version.txt
echo "VERSION:" >> fwstation
cat $2 >> fwstation
echo "" >> fwstation
echo "END_VERSION:" >> fwstation

# Add station.conf
echo "CONF:" >> fwstation
cat $3 >> fwstation
echo "END_CONF:" >> fwstation

# executable
chmod +x fwstation
```

これらのスクリプトを実行したら、端末で次のコマンドを実行して、ファームウェア更新ファイル `fwstation` を生成します。

```
$ ./addpayload.sh station version.txt station.conf
```

## ファームウェア更新の署名を生成する
<a name="lorawan-generate-signature-fwupdate"></a>

LoRa Basics Stationソフトウェアは、ECDSA 署名付きファームウェア更新を提供します。署名付き更新をサポートするには、以下が必要です。
+ ECDSA プライベートキーによって生成され、128 バイト未満である必要がある署名。
+ 署名に使用されるプライベートキー。`sig-%d.key` の形式のファイル名を持つゲートウェイに格納する必要があります。ファイル名 `sig-0.key` を使用することをお勧めします。
+ プライベートキーを介した 32 ビットの CRC。

署名と CRC は AWS IoT Core for LoRaWAN API に渡されます。前述のファイルを生成するには、次の `gen.sh` スクリプトを使用できます。これは、GitHub リポジトリの [basicstation](https://github.com/lorabasics/basicstation/blob/master/examples/cups/prep.sh) の例から着想を得たものです。

```
*#!/bin/bash

*function ecdsaKey() {
    # Key not password protected for simplicity    
    openssl ecparam -name prime256v1 -genkey | openssl ec -out $1
}

# Generate ECDSA key
ecdsaKey sig-0.prime256v1.pem

# Generate public key
openssl ec -in sig-0.prime256v1.pem -pubout -out sig-0.prime256v1.pub

# Generate signature private key
openssl ec -in sig-0.prime256v1.pub -inform PEM -outform DER -pubin | tail -c 64 > sig-0.key

# Generate signature
openssl dgst -sha512 -sign sig-0.prime256v1.pem $1 > sig-0.signature

# Convert signature to base64
openssl enc -base64 -in sig-0.signature -out sig-0.signature.base64

# Print the crc
crc_res=$(crc32 sig-0.key)printf "The crc for the private key=%d\n" $((16#$crc_res))

# Remove the generated files which won't be needed later
rm -rf sig-0.prime256v1.pem sig-0.signature sig-0.prime256v1.pub
```

スクリプトによって生成されたプライベートキーは、ゲートウェイに保存する必要があります。キーファイルはバイナリ形式です。

```
./gen_sig.sh fwstation 
read EC key
writing EC key
read EC key
writing EC key
read EC key
writing EC key
The crc for the private key=3434210794

$ cat sig-0.signature.base64 
MEQCIDPY/p2ssgXIPNCOgZr+NzeTLpX+WfBo5tYWbh5pQWN3AiBROen+XlIdMScv
AsfVfU/ZScJCalkVNZh4esyS8mNIgA==

$ ls sig-0.key
sig-0.key

$ scp sig-0.key pi@192.168.1.11:/home/pi/Documents/basicstation/examples/iotwireless
```

## 次のステップを確認する
<a name="lorawan-fwupdate-sigkey-next-steps"></a>

ファームウェアと署名の生成が完了したので、次のトピックに進み、ファームウェアファイル `fwstation` を Amazon S3 バケットにアップロードします。バケットは、ファームウェア更新ファイルをオブジェクトとして格納するコンテナです。S3 バケット内のファームウェア更新ファイルを読み取る許可を CUPS サーバーに付与する IAM ロールを追加できます。

# S3 バケットにファームウェアファイルをアップロードし、IAM ロールを追加する
<a name="lorawan-upload-firmware-s3bucket"></a>

Amazon S3 を使用して、*バケット*を作成します。バケットは、ファームウェア更新ファイルを保存できるコンテナです。ファイルを S3 バケットにアップロードし、CUPS サーバーがバケットから更新ファイルを読み取ることを許可する IAM ロールを追加できます。Amazon S3 の詳細については、「[Amazon S3 の使用開始](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)」を参照してください。

アップロードするファームウェア更新ファイルは、使用しているゲートウェイによって異なります。「[ファームウェア更新ファイルと署名を生成する](lorawan-script-fwupdate-sigkey.md)」で説明されている手順と同様の手順に従った場合は、スクリプトを実行して生成された `fwstation` ファイルをアップロードします。

この手順の完了には 20 分ほどかかります。

**Topics**
+ [Amazon S3 バケットを作成し、更新ファイルをアップロードする](#lorawan-create-s3-bucket)
+ [S3 バケットを読み取る許可を持つ IAM ロールを作成する](#lorawan-s3-iam-permissions)
+ [次のステップを確認する](#lorawan-s3iam-next-steps)

## Amazon S3 バケットを作成し、更新ファイルをアップロードする
<a name="lorawan-create-s3-bucket"></a>

AWS マネジメントコンソール を使用して Amazon S3 バケットを作成し、次に、ファームウェア更新ファイルをバケットにアップロードします。

**S3 バケットの作成**  
S3 バケットを作成するには、[Amazon S3 コンソール](https://console.aws.amazon.com/s3/home#)を開きます。サインインしていない場合はサインインしてから、次の手順を実行します。

1. [**バケットを作成する**] を選択します。

1. [**Bucket name**] (バケット名) に、一意のわかりやすい名前を入力します (例: `iotwirelessfwupdate`)。バケットの推奨命名規則については、[https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html) を参照してください。

1. LoRaWAN ゲートウェイとデバイスの作成に使用するものとして選択されている AWS リージョン を選択したことと、[**Block all public access**] (すべてのパブリックアクセスをブロック) 設定が選択され、バケットがデフォルトのアクセス権限を使用するようになっていることを確認してください。

1. [**Bucket versioning**] (バケットバージョニング) で [**Enable**] (有効) を選択します。これは、複数のバージョンのファームウェア更新ファイルを同じバケット内に保持するうえで役立ちます。

1. [**Server-side encryption**] (サーバー側の暗号化) が [**Disable**] (無効) に設定されていることを確認して、[**Create bucket**] (バケットを作成する) を選択します。

**ファームウェアの更新ファイルをアップロードする**  
これで、AWS マネジメントコンソール に表示されているバケットのリストに、自分のバケットが表示されます。バケットを選択し、次の手順を実行してファイルをアップロードします。

1. バケットを選択し、[**Upload**] (アップロード) を選択します。

1. [**Add file**] (ファイルを追加する) を選択し、ファームウェア更新ファイルをアップロードします。「[ファームウェア更新ファイルと署名を生成する](lorawan-script-fwupdate-sigkey.md)」で説明されている手順に従った場合は、`fwstation` ファイルをアップロードします。それ以外の場合は、ゲートウェイの製造元から提供されたファイルをアップロードします。

1. すべての設定がデフォルトに設定されていることを確認します。[**Predefined ACLs**] (事前定義された ACL) が [**private**] (プライベート) に設定されていることを確認し、[**Upload**] (アップロード) を選択してファイルをアップロードします。

1. アップロードしたファイルの S3 URI をコピーします。バケットを選択すると、アップロードしたファイルが [**Objects**] (オブジェクト) に表示されます。ファイルを選択し、[**Copy S3 URI** (S3 URI をコピーする) を選択します。前に説明した例 (`fwstation`) と同様の名前をバケットに付けた場合、URI は `s3://iotwirelessfwupdate/fwstation` のようになります。S3 URI は IAM ロールを作成するときに使用します。

## S3 バケットを読み取る許可を持つ IAM ロールを作成する
<a name="lorawan-s3-iam-permissions"></a>

次に、S3 バケットからファームウェア更新ファイルを読み取る許可を CUPS に付与する IAM ロールとポリシーを作成します。

**ロールに IAM ポリシーを作成する**  
AWS IoT Core for LoRaWAN 送信先ロールに IAM ポリシーを作成するには、[IAM コンソールの [Policies] (ポリシー) ハブ](https://console.aws.amazon.com/iam/home#/policies)を開き、次の手順を完了します。

1. [**Create policy**] (ポリシーの作成) を選択し、[**JSON**] タブを選択します。

1. エディタからすべてのコンテンツを削除し、このポリシードキュメントを貼り付けます。ポリシーは、`iotwireless` バケットと、オブジェクト内に格納されているファームウェア更新ファイル `fwstation` へのアクセス権限を提供します。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucketVersions",
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::iotwirelessfwupdate/fwstation",
                   "arn:aws:s3:::iotwirelessfwupdate"
               ]
           }
       ]
   }
   ```

1. [**Review policy**] (ポリシーの確認) を選択し、[**Name**] (名前) に、このポリシーの名前を入力します (例: `IoTWirelessFwUpdatePolicy`)。この名前は、次の手順で使用するために必要です。

1. [**Create policy**] (ポリシーの作成) を選択します。

**ポリシーがアタッチされた IAM ロールを作成する**  
次に、IAM ロールを作成して、先ほど S3 バケットへのアクセス用に作成したポリシーをアタッチします。[IAM コンソールの [Roles] (ロール) ハブ](https://console.aws.amazon.com/iam/home#/roles)を開き、以下のステップを完了します。

1. [**Create role**]（ロールの作成） を選択します。

1. **[Select type of trusted entity]** (信頼できるエンティティのタイプを選択) で、**[Another AWS アカウント**] (別の AWS アカウント) を選択します。

1. [**Account ID**] (アカウント ID) で AWS アカウント アカウント ID を入力し、[**Next: Permissions**] (次へ: アクセス許可) を選択します。

1. 検索ボックスで、前の手順で作成した IAM ポリシーの名前を入力します。検索結果で、先ほど作成した IAM ポリシー (例: `IoTWirelessFwUpdatePolicy`) を確認し、それを選択します。

1. [**次へ: タグ**]、[**次へ: 確認**] の順に選択します。

1. [**Role name**] (ロール名) に、このロールの名前を入力し (例: `IoTWirelessFwUpdateRole`)、[**Create role**] (ロールの作成) を選択します。

**IAM ロールの信頼関係を編集する**  
前のステップを実行した後に表示される確認メッセージで、作成したロールの名前を選択して、ロールを編集します。ロールを編集して、次の信頼関係を追加します。

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**] (信頼ポリシーの更新) を選択します。

1. ロールの ARN を取得します。IAM ロールを選択すると、[Summary] (概要) セクションに [**Role ARN**] (ロールの ARN) が表示されます (例: `arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole`)。この [**Role ARN**] (ロールの ARN) をコピーします。

## 次のステップを確認する
<a name="lorawan-s3iam-next-steps"></a>

これで、S3 バケットと、CUPS サーバーが S3 バケットを読み取ることを許可する IAM ロールが作成されました。次のトピックに進み、ファームウェア更新をスケジュールして実行します。先ほどコピーした [**S3 URI**] および [**Role ARN**] (ロールの ARN) はそのまま保持してください。これらは、ファームウェア更新を行うために実行するタスク定義を作成するときに入力します。

# タスク定義を使用してファームウェア更新をスケジュールし、実行する
<a name="lorawan-schedule-firmware-update"></a>

タスク定義を使用して、ファームウェア更新に関する詳細を含めたり、更新を定義できます。AWS IoT Core for LoRaWAN では、ゲートウェイに関連付けられた次の 3 つのフィールドからの情報に基づいてファームウェアの更新が提供されます。
+ 

**ステーション**  
Basics Station ソフトウェアのバージョンとビルド時間。この情報を特定するために、ゲートウェイによって実行されている Basics Station ソフトウェアを使用して生成することもできます (例:`2.0.5(rpi/std) 2021-03-09 03:45:09`)。
+ 

**PackageVersion (パッケージバージョン)**  
ゲートウェイの `version.txt` ファイルによって指定されたファームウェアのバージョン。この情報はゲートウェイに存在しない可能性がありますが、ファームウェアのバージョンを定義する方法として推奨しています (例: `1.0.0`)。
+ 

**モデル**  
ゲートウェイで使用されているプラットフォームまたはモデル (例: Linux)。

この手順の完了には 20 分かかります。

**Topics**
+ [ゲートウェイで現在実行されているバージョンを取得する](#lorawan-gateway-current-version)
+ [ワイヤレスゲートウェイタスク定義を作成する](#lorawan-create-task-definition)
+ [ファームウェア更新タスクを実行し、進捗状況を追跡する](#lorawan-run-fwupdate-task)

## ゲートウェイで現在実行されているバージョンを取得する
<a name="lorawan-gateway-current-version"></a>

ゲートウェイがファームウェア更新の対象であるかどうかを判断するために、CUPS サーバーは、CUPS 要求時にゲートウェイが `Station`、`PackageVersion`、`Model` のフィールドを提示したときに、これら 3 つのフィールドすべてについて、一致を確認します。タスク定義を使用する場合、これらのフィールドは `CurrentVersion` フィールドの一部として格納されています。

AWS IoT Core for LoRaWAN API または AWS CLI を使用して、ゲートウェイの `CurrentVersion` を取得できます。次のコマンドは、CLI を使用してこの情報を取得する方法を示しています。

1. ゲートウェイを既にプロビジョニングしている場合は、[get-wireless-gateway](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-wireless-gateway.html) コマンドを使用して、ゲートウェイに関する情報を取得できます。

   ```
   aws iotwireless get-wireless-gateway \ 
       --identifier 5a11b0a85a11b0a8 \ 
           --identifier-type GatewayEui
   ```

   以下は、このコマンドの出力例です。

   ```
   {
       "Name": "Raspberry pi",
       "Id": "1352172b-0602-4b40-896f-54da9ed16b57",
       "Description": "Raspberry pi",
       "LoRaWAN": {
           "GatewayEui": "5a11b0a85a11b0a8",
           "RfRegion": "US915"
       },
       "Arn": "arn:aws:iotwireless:us-east-1:231894231068:WirelessGateway/1352172b-0602-4b40-896f-54da9ed16b57"
   }
   ```

1. `get-wireless-gateway` コマンドによって報告されたワイヤレスゲートウェイ ID を使用して、[get-wireless-gateway-firmware-information](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-wireless-gateway-firmware-information.html) コマンドによって `CurrentVersion` を取得できます。

   ```
   aws iotwireless get-wireless-gateway-firmware-information \
       --id "3039b406-5cc9-4307-925b-9948c63da25b"
   ```

   以下は、このコマンドの出力例で、3 つのフィールドすべての情報が `CurrentVersion` によって表示されています。

   ```
   {
       "LoRaWAN": {
           "CurrentVersion": {
               "PackageVersion": "1.0.0",
               "Model": "rpi",
               "Station": "2.0.5(rpi/std) 2021-03-09 03:45:09"
           }
       }
   }
   ```

## ワイヤレスゲートウェイタスク定義を作成する
<a name="lorawan-create-task-definition"></a>

タスク定義を作成するときは、AutoCreateTasks パラメータを使用してタスクの自動作成を指定することをお勧めします。`AutoCreateTasks` は、前述の 3 つのパラメータすべてに一致するゲートウェイに適用されます。このパラメータが無効になっている場合は、パラメータを手動でゲートウェイに割り当てる必要があります。

AWS IoT Core for LoRaWAN API または AWS CLI を使用してワイヤレスゲートウェイのタスク定義を作成できます。以下のコマンドは、CLI を使用してタスク定義を作成する方法を示します。

1. `input.json` ファイルを作成します。このファイルには、`CreateWirelessGatewayTaskDefinition` API に渡す情報が含まれます。`input.json` ファイルで、前に取得した次の情報を指定します。
   + 

**UpdateDataSource**  
S3 バケットにアップロードしたファームウェア更新ファイルを含むオブジェクトへのリンクを指定します (例えば、`s3://iotwirelessfwupdate/fwstation`)。
   + 

**UpdateDataRole**  
S3 バケットを読み取る許可を提供する、作成した IAM ロールのロール ARN へのリンクを指定します (例えば、`arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole`)。
   + 

**SigKeyCRC と UpdateSignature**  
この情報はゲートウェイの製造元から提供されている可能性がありますが、「[ファームウェア更新ファイルと署名を生成する](lorawan-script-fwupdate-sigkey.md)」で説明されている手順に従った場合は、署名の生成時にこの情報を見つけることができます。
   + 

**CurrentVersion**  
先ほど `get-wireless-gateway-firmware-information ` コマンドを実行して取得した `CurrentVersion` 出力を指定します。

     ```
     cat input.json
     ```

     以下は、`input.json` ファイルの内容を示しています。

     ```
     {
         "AutoCreateTasks": true,
         "Name": "FirmwareUpdate",
         "Update":
         {
             "UpdateDataSource" : "s3://iotwirelessfwupdate/fwstation",
             "UpdateDataRole" : "arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole",
             "LoRaWAN" :
             {
                 "SigKeyCrc": 3434210794,
                 "UpdateSignature": "MEQCIDPY/p2ssgXIPNCOgZr+NzeTLpX+WfBo5tYWbh5pQWN3AiBROen+XlIdMScvAsfVfU/ZScJCalkVNZh4esyS8mNIgA==",
                 "CurrentVersion" :
                 {
                 "PackageVersion": "1.0.0",
                 "Model": "rpi",
                 "Station": "2.0.5(rpi/std) 2021-03-09 03:45:09"
                 }
             }
         }
     }
     ```

1. `input.json` ファイルを [create-wireless-gateway-task-definition](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-wireless-gateway-task-definition.html) コマンドに渡して、タスク定義を作成します。

   ```
   aws iotwireless create-wireless-gateway-task-definition \ 
       --cli-input-json file://input.json
   ```

   以下は、このコマンドの出力を示しています。

   ```
   {
       "Id": "4ac46ff4-efc5-44fd-9def-e8517077bb12",
       "Arn": "arn:aws:iotwireless:us-east-1:231894231068:WirelessGatewayTaskDefinition/4ac46ff4-efc5-44fd-9def-e8517077bb12"
   }
   ```

## ファームウェア更新タスクを実行し、進捗状況を追跡する
<a name="lorawan-run-fwupdate-task"></a>

ゲートウェイはファームウェア更新を受信する準備ができており、電源が入ると CUPS サーバーに接続します。CUPS サーバーは、ゲートウェイのバージョンで一致するものを検出すると、ファームウェア更新をスケジュールします。

タスクとは、処理中のタスク定義です。`AutoCreateTasks` を `True` に設定して自動タスク作成を指定したので、一致するゲートウェイが見つかるとすぐにファームウェア更新タスクが開始されます。

`GetWirelessGatewayTask` API を使用してタスクの進行状況を追跡できます。[get-wireless-gateway-task](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-wireless-gateway-task.html) コマンドを初めて実行すると、タスクのステータスが `IN_PROGRESS` として表示されます。

```
aws iotwireless get-wireless-gateway-task \ 
    --id 1352172b-0602-4b40-896f-54da9ed16b57
```

以下は、このコマンドの出力を示しています。

```
{
    "WirelessGatewayId": "1352172b-0602-4b40-896f-54da9ed16b57",
    "WirelessGatewayTaskDefinitionId": "ec11f9e7-b037-4fcc-aa60-a43b839f5de3",
    "LastUplinkReceivedAt": "2021-03-12T09:56:12.047Z",
    "TaskCreatedAt": "2021-03-12T09:56:12.047Z",
    "Status": "IN_PROGRESS"
}
```

次回にこのコマンドを実行した場合、ファームウェアの更新が有効になると、更新されたフィールド `Package`、`Version`、`Model` が表示され、タスクのステータスが `COMPLETED` に変わります。

```
aws iotwireless get-wireless-gateway-task \ 
    --id 1352172b-0602-4b40-896f-54da9ed16b57
```

以下は、このコマンドの出力を示しています。

```
{
    "WirelessGatewayId": "1352172b-0602-4b40-896f-54da9ed16b57",
    "WirelessGatewayTaskDefinitionId": "ec11f9e7-b037-4fcc-aa60-a43b839f5de3",
    "LastUplinkReceivedAt": "2021-03-12T09:56:12.047Z",
    "TaskCreatedAt": "2021-03-12T09:56:12.047Z",
    "Status": "COMPLETED"
}
```

この例では、Raspberry Pi ベースの RAKWireless ゲートウェイを使用したファームウェア更新を紹介しました。更新された `Package`、`Version`、および `Model` フィールドを保存するために、ファームウェア更新スクリプトによって、実行中の BasicStation が停止します。そのため、BasicStation を再起動する必要があります。

```
2021-03-12 09:56:13.108 [CUP:INFO] CUPS provided update.bin
2021-03-12 09:56:13.108 [CUP:INFO] CUPS provided signature len=70 keycrc=37316C36
2021-03-12 09:56:13.148 [CUP:INFO] ECDSA key#0 -> VERIFIED
2021-03-12 09:56:13.148 [CUP:INFO] Running update.bin as background process
2021-03-12 09:56:13.149 [SYS:VERB] /tmp/update.bin: Forked, waiting...
2021-03-12 09:56:13.151 [SYS:INFO] Process /tmp/update.bin (pid=6873) completed
2021-03-12 09:56:13.152 [CUP:INFO] Interaction with CUPS done - next regular check in 10s
```

ファームウェアのアップデートが失敗すると、CUPS サーバーからの `FIRST_RETRY` のステータスが表示され、ゲートウェイは同じ要求を送信します。`SECOND_RETRY` の後に CUPS サーバーがゲートウェイに接続できない場合、`FAILED` のステータスが表示されます。

前のタスクが `COMPLETED` または `FAILED` になったら、新しいタスクを開始する前に、[delete-wireless-gateway-task](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-wireless-gateway-task.html) コマンドを実行して古いタスクを削除します。

```
aws iotwireless delete-wireless-gateway-task \ 
    --id 1352172b-0602-4b40-896f-54da9ed16b57
```

# LoRaWAN ダウンリンクデータトラフィックを受信するゲートウェイの選択
<a name="lorawan-gateway-participate"></a>

デバイスに AWS IoT Core for LoRaWAN からダウンリンクメッセージを送信する場合、ダウンリンクデータトラフィックに使用するゲートウェイを選択できます。個々のゲートウェイを指定することも、ダウンリンクトラフィックを受信するゲートウェイのリストから選択することもできます。

## ゲートウェイリストの指定方法
<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 オペレーションを使用して、デバイスからダウンリンクメッセージを送信する際に使用する個々のゲートウェイまたはゲートウェイのリストを指定することができます。API オペレーションを呼び出す際には、ゲートウェイの `ParticipatingGateways` オブジェクトを使用して、以下のパラメータを指定します。

**注記**  
使用するゲートウェイのリストは、AWS IoT コンソールでは使用できません。このゲートウェイのリストは、`SendDataToWirelessDevice` API オペレーションまたは CLI を使用する場合にのみ使用するように指定することができます。
+ `DownlinkMode`: ダウンリンクメッセージをシーケンシャルモードで送信するか、並行モードで送信するかを示します。クラス A デバイスの場合は、前回のアップリンクメッセージ送信で選択したゲートウェイのみを使用するように `UsingUplinkGateway` を指定します。
+ `GatewayList`: ダウンリンクデータトラフィックの送信に使用するゲートウェイのリスト。ダウンリンクペイロードは、指定された頻度で指定されたゲートウェイに送信されます。これは、リストを `GatewayId` と `DownlinkFrequency` のペアで構成される `GatewayListItem` オブジェクトのリストを使用して示されます。
+ `TransmissionInterval`: AWS IoT Core for LoRaWAN が次のゲートウェイにペイロードを送信する前に待機する時間。

**注記**  
このゲートウェイリストを指定して、ダウンリンクメッセージをクラス B またはクラス C のワイヤレスデバイスに送信する場合にのみ使用できます。クラス A デバイスを使用する場合、ダウンリンクメッセージがデバイスに送信されるときに、アップリンクメッセージの送信時に選択したゲートウェイが使用されます。

次の例は、ゲートウェイのパラメータを指定する方法を示しています。`input.json` ファイルには追加の詳細が含まれます。`SendDataToWirelessDevice` API オペレーションを使用したダウンリンクメッセージの送信の詳細については、「[API を使用してダウンリンクキューオペレーションを実行する](lorawan-downlink-queue.md#lorawan-downlink-queue-api)」を参照してください。

**注記**  
参加しているゲートウェイのリストを指定するパラメータは、AWS IoT コンソールを使用して AWS IoT Core for LoRaWAN からダウンリンクメッセージを送信するときには利用できません。

```
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"
```

このコマンドを実行すると、キュー内のメッセージとそのパラメータに関する情報が返されます。

# AWS IoT Core for LoRaWAN によるデバイスの管理
<a name="lorawan-manage-end-devices"></a>

次に、デバイスで AWS IoT Core for LoRaWAN を使用する際の重要な考慮事項をいくつか示します。AWS IoT Core for LoRaWAN へのデバイスの追加方法については、「[デバイスを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-end-devices.md)」を参照してください。

## デバイスに関する考慮事項
<a name="lorawan-devices-criteria"></a>

AWS IoT Core for LoRaWAN との通信に使用するデバイスを選択する際は、次の点を考慮してください。
+ 使用可能なセンサー
+ バッテリー容量
+ エネルギー消費量
+ Cost
+ アンテナの種類と送信範囲

## AWS IoT Core for LoRaWAN での使用を認定されたゲートウェイでのデバイスの使用
<a name="lorawan-devices-qualified-gateways"></a>

使用するデバイスは、AWS IoT Core for LoRaWAN での使用を認定されたワイヤレスゲートウェイとペアにできます。これらのゲートウェイとデベロッパーキットは、[AWS Partner Device Catalog](https://devices.amazonaws.com/search?page=1&sv=iotclorawan) にあります。また、これらのデバイスの、ゲートウェイへの近接性も考慮することをお勧めします。詳細については、「[AWS Partner Device Catalog の認定されたゲートウェイの使用](lorawan-manage-gateways.md#lorawan-qualified-gateways)」を参照してください。

## LoRaWAN バージョン
<a name="lorawan-lorawan-version"></a>

AWS IoT Core for LoRaWAN は、LoRa Alliance によって標準化された 1.0.x または 1.1 LoRaWAN 仕様に準拠するすべてのデバイスをサポートしています。

## アクティベーションモード
<a name="lorawan-activation-modes"></a>

LoRaWAN デバイスがアップリンクデータを送信する前に、*アクティベーション*または*参加*手順と呼ばれるプロセスを完了する必要があります。デバイスをアクティベートするには、OTAA (無線通信経由アクティベーション) または ABP (パーソナライゼーションによるアクティベーション) のいずれかを使用できます。アクティベーションごとに新しいセッションキーが生成されて安全性が高まるため、デバイスのアクティベーションには OTAA を使用することをお勧めします。

ワイヤレスデバイスの仕様は、LoRaWAN のバージョンと、アクティベーションごとに生成されるルートキーとセッションキーを決定するアクティベーションモードに基づいています。詳細については、「[コンソールを使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する](lorawan-end-devices-add.md#lorawan-end-device-spec-console)」を参照してください。

## デバイスクラス
<a name="lorawan-device-classes"></a>

LoRaWAN デバイスは、いつでもアップリンクメッセージを送信できます。ダウンリンクメッセージをリッスンすると、バッテリー容量が消費され、バッテリー持続時間が短縮されます。LoRaWAN プロトコルは、LoRaWAN デバイスの 3 つのクラスを指定します。
+ クラス A デバイスは、ほとんどの時間をスリープ状態にし、短時間だけダウンリンクメッセージをリッスンします。これらのデバイスは、最大 10 年のバッテリー寿命を持つバッテリー駆動のセンサーです。
+ クラス B デバイスは、スケジュールされたダウンリンクスロットでメッセージを受信できます。これらのデバイスは、主にバッテリー駆動のアクチュエータです。
+ クラス C デバイスはスリープせず、継続的に着信メッセージをリッスンすることがないため、メッセージの受信にそれほど遅延はありません。これらのデバイスは、主に主電源駆動のアクチュエータです。

これらのワイヤレスデバイスの考慮事項の詳細については、「[LoRaWAN の詳細](what-is-lorawan.md#lorawan-learn-more)」で説明したリソースを参照してください。

**Topics**
+ [デバイスに関する考慮事項](#lorawan-devices-criteria)
+ [AWS IoT Core for LoRaWAN での使用を認定されたゲートウェイでのデバイスの使用](#lorawan-devices-qualified-gateways)
+ [LoRaWAN バージョン](#lorawan-lorawan-version)
+ [アクティベーションモード](#lorawan-activation-modes)
+ [デバイスクラス](#lorawan-device-classes)
+ [AWS IoT Core for LoRaWAN でのアダプティブデータレート (ADR) の実行](iot-lorawan-adr.md)
+ [LoRaWAN デバイスと AWS IoT 間の通信の管理](lorawan-device-cloud-communication.md)
+ [パブリック LoRaWAN デバイスネットワーク (Everynet) からの LoRaWAN トラフィックの管理](iot-lorawan-roaming.md)

# AWS IoT Core for LoRaWAN でのアダプティブデータレート (ADR) の実行
<a name="iot-lorawan-adr"></a>

エンドデバイスからのメッセージがゲートウェイで受信されるようにしつつ、デバイスの送信電力消費量を最適化するために、AWS IoT Core for LoRaWAN では、アダプティブデータレートを使用します。アダプティブデータレートは、ゲートウェイで受信されるパケットのエラーレートを下げながら、データレート、送信電力、再送信回数を最適化するようにエンドデバイスに指示します。例えば、エンドデバイスがゲートウェイの近くにある場合、アダプティブデータレートによって送信電力が低下し、データレートが向上します。

**Topics**
+ [アダプティブデータレート (ADR) の仕組み](#iot-lorawan-adr-algorithm)
+ [データレート制限 (CLI) を設定する](#iot-lorawan-adr-use)

## アダプティブデータレート (ADR) の仕組み
<a name="iot-lorawan-adr-algorithm"></a>

ADR を有効にするには、デバイスがフレームヘッダーに ADR ビットを設定する必要があります。ADR ビットが設定されると、AWS IoT Core for LoRaWAN は `LinkADRReq` MAC コマンドを送信し、デバイスは ADR コマンドの ACK ステータスを含む `LinkADRAns` コマンドで応答します。デバイスが ADR コマンドを ACK すると、AWS IoT Core for LoRaWAN からの ADR 指示に従って、最適なデータレートを得るように送信パラメータ値を調整します。

AWS IoT Core for LoRaWAN ADR アルゴリズムは、アップリンクメタデータ履歴の SINR 情報を使用して、デバイスに使用する最適な送信電力とデータレートを決定します。このアルゴリズムは、ADR ビットがフレームヘッダーに設定された後に始まる最新の 20 個のアップリンクメッセージを使用します。再送信の数を決定するために、パケットエラー率 (PER) を使用します。PER は、失われたパケットの合計数に対する割合です。このアルゴリズムを使用すると、データレートの範囲、つまりデータレートの最小制限と最大制限のみを制御できます。

## データレート制限 (CLI) を設定する
<a name="iot-lorawan-adr-use"></a>

デフォルトでは、LoRaWAN デバイスのフレームヘッダーに ADR ビットを設定すると、AWS IoT Core for LoRaWAN は ADR を実行します。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 マネジメントコンソール からサービスプロファイルを作成するときに、最大データレート制限と最小データレート制限を指定することはできません。AWS IoT Wireless API または AWS CLI を使用してのみ指定にすることができます。

データレートの最小制限と最大制限を指定するには、`CreateServiceProfile` API オペレーションで `DrMin` および `DrMax` パラメータを使用します。デフォルトの最小および最大データレート制限は 0 と 15 です。例えば、次の CLI コマンドは、最小データレート制限を 3、最大制限を 12 に設定します。

```
aws iotwireless create-service-profile \ 
    --lorawan DrMin=3,DrMax=12
```

このコマンドを実行すると、サービスプロファイルの ID と Amazon リソースネーム (ARN) が生成されます。

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

AWS IoT Wireless API オペレーション [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetServiceProfile.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetServiceProfile.html)、または AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/get-service-profile.html](https://docs.aws.amazon.com/cli/latest/reference/get-service-profile.html) を使用して、指定されたパラメータの値を取得できます。

```
aws iotwireless get-service-profile --id "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
```

このコマンドを実行すると、サービスプロファイルパラメータの値が生成されます。

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

複数のプロファイルを作成した場合は、API オペレーション、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListServiceProfiles.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListServiceProfiles.html)、または AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/list-service-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/list-service-profiles.html) を使用して、AWS アカウント のサービスプロファイルを一覧表示し、次に `GetServiceProfile` API または `get-service-profile` CLI コマンドを使用して、データレート制限をカスタマイズしたサービスプロファイルを取得できます。

# LoRaWAN デバイスと AWS IoT 間の通信の管理
<a name="lorawan-device-cloud-communication"></a>

LoRaWAN デバイスを AWS IoT Core for LoRaWAN に接続した後、デバイスはクラウドへのメッセージの送信を開始できます。アップリンクメッセージは、デバイスから送信され、AWS IoT Core for LoRaWAN によって受信されるメッセージです。LoRaWAN デバイスはいつでもアップリンクメッセージを送信できます。その後、AWS のサービス およびクラウドホスト型アプリケーションへ転送されます。AWS IoT Core for LoRaWAN およびその他の AWS のサービス やアプリケーションからデバイスへ送信されるメッセージは、ダウンリンクメッセージと呼ばれます。

以下は、デバイスとクラウド間で送信されるアップリンクメッセージとダウンリンクメッセージを表示および管理する方法を示しています。ダウンリンクメッセージのキューを保持し、キューに追加された順序でこれらのメッセージをデバイスに送信できます。

**Topics**
+ [LoRaWAN デバイスから送信されたアップリンクメッセージの形式の表示](lorawan-uplink-metadata-format.md)
+ [LoRaWAN デバイスに送信するダウンリンクメッセージをキューに入れる](lorawan-downlink-queue.md)

# LoRaWAN デバイスから送信されたアップリンクメッセージの形式の表示
<a name="lorawan-uplink-metadata-format"></a>

LoRaWAN デバイスを AWS IoT Core for LoRaWAN に接続したら、ワイヤレスデバイスから受信するアップリンクメッセージの形式を確認できます。

## アップリンクメッセージを確認する前に
<a name="lorawan-uplink-metadata-prerequisites"></a>

データを送受信できるように、ワイヤレスデバイスをオンボーディングし、デバイスを AWS IoT に接続済みである必要があります。AWS IoT Core for LoRaWAN へのデバイスのオンボーディングについては、「[デバイスを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-end-devices.md)」を参照してください。

## アップリンクメッセージに含まれているもの
<a name="lorawan-uplink-metadata-contains"></a>

LoRaWAN デバイスは、LoRaWAN ゲートウェイを使用して AWS IoT Core for LoRaWAN に接続できます。デバイスから受信したアップリンクメッセージには、次の情報が含まれます。
+ ワイヤレスデバイスから送信される暗号化されたペイロードメッセージに対応するペイロードデータ。
+ 以下を含むワイヤレスメタデータ
  + DevEUI、データレート、デバイスが動作している周波数チャネルなどのデバイス情報。
  + デバイスに接続されているゲートウェイのオプションの追加パラメータおよびゲートウェイ情報。ゲートウェイパラメータには、ゲートウェイの EUI、SNR、および RSSI が含まれます。

  ワイヤレスメタデータを使用すると、ワイヤレスデバイスや、デバイスと AWS IoT の間で送信されるデータに関する有用な情報が得られます。例えば、`AckedMessageId` パラメータを使用して、最後に確認されたダウンリンクメッセージがデバイスによって受信されたかどうかを確認できます。必要に応じて、ゲートウェイ情報を含めることを選択した場合、デバイスに近い強力なゲートウェイチャネルに切り替えるかどうかを識別できます。

## アップリンクメッセージを確認する方法
<a name="lorawan-uplink-metadata-observe"></a>

デバイスをオンボーディングした後、AWS IoT コンソールの [**Test**] (テスト) ページで [MQTT テストクライアント](https://console.aws.amazon.com/iot/home#/test)を使用して、送信先を作成するときに指定したトピックにサブスクライブできます。デバイスが接続され、ペイロードデータの送信が開始されると、メッセージが表示されるようになります。

この図は、AWS IoT Core for LoRaWAN に接続された LoRaWAN システムの主要な要素を識別するとともに、プライマリデータプレーンおよびシステム内のデータフローを示しています。

![\[AWS IoT Core for LoRaWAN データがワイヤレスデバイスから AWS IoT およびその他のサービスにどのように渡されるかを示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-data-flow.png)


ワイヤレスデバイスがアップリンクデータの送信を開始すると、AWS IoT Core for LoRaWAN によりワイヤレスメタデータの情報がペイロードでラッピングされ、AWS アプリケーションに送信されます。

## アップリンクメッセージの例
<a name="lorawan-uplink-metadata-example"></a>

次の例は、デバイスから受信したアップリンクメッセージの形式を示しています。

```
{
    "WirelessDeviceId": "5b58245e-146c-4c30-9703-0ca942e3ff35", 
    "PayloadData": "Cc48AAAAAAAAAAA=",    
    "WirelessMetadata":
    {
        "LoRaWAN":
        {
            "ADR": false,
            "Bandwidth": 125,
            "ClassB": false,
            "CodeRate": "4/5",
            "DataRate": "0",
            "DevAddr": "00b96cd4",
            "DevEui": "58a0cb000202c99",            
            "FOptLen": 2,
            "FCnt": 1,
            "Fport": 136,   
            "Frequency": "868100000",     
            "Gateways": [
             {
                    "GatewayEui": "80029cfffe5cf1cc",      
                    "Snr": -29,
                    "Rssi": 9.75
             }
             ],  
            "MIC": "7255cb07",  
            "MType": "UnconfirmedDataUp",
            "Major": "LoRaWANR1",
            "Modulation": "LORA", 
            "PolarizationInversion": false,    
            "SpreadingFactor": 12,                         
            "Timestamp": "2021-05-03T03:24:29Z"
            
        }
    }
}
```

### アップリンクメタデータからゲートウェイメタデータを除外する
<a name="lorawan-uplink-metadata-example2"></a>

アップリンクメタデータからゲートウェイメタデータ情報を除外する場合は、サービスプロファイルの作成時に **AddGwMetadata** パラメータを無効にします。このパラメータの無効化については、「[サービスプロファイルを追加する](lorawan-define-profiles.md#lorawan-service-profiles)」を参照してください。

この場合、次の例に示すように、アップリンクメタデータに `Gateways` セクションは表示されません。

```
{  
    "WirelessDeviceId": "0d9a439b-e77a-4573-a791-49d5c0f4db95",
    "PayloadData": "AAAAAAAA//8=",
    "WirelessMetadata": {
        "LoRaWAN": {
            "ClassB": false,
            "CodeRate": "4/5",
            "DataRate": "1",
            "DevAddr": "01920f27",
            "DevEui": "ffffff10000163b0",
            "FCnt": 1,
            "FPort": 5,
            "Timestamp": "2021-04-29T05:19:43.646Z"
    }
  }
}
```

# 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) が見つからないというエラーが表示されることがあります。このエラーは、ダウンリンクメッセージを受信しているデバイスの宛先が正しく指定されていないために発生する可能性があります。このエラーを解決するには、デバイスの送信先の詳細を確認します。

# パブリック LoRaWAN デバイスネットワーク (Everynet) からの LoRaWAN トラフィックの管理
<a name="iot-lorawan-roaming"></a>

公開されている LoRaWAN ネットワークを使用すれば、LoRaWAN デバイスを数分でクラウドに接続できます。AWS IoT Core for LoRaWAN は、米国と英国の Everynet のネットワークカバレッジをサポートするようになりました。パブリックネットワークを使用する場合、デバイスごとにパブリックネットワーク接続料金が毎月請求されます。この料金は、パブリックネットワーク接続が提供されるすべての AWS リージョン に適用されます。この機能の価格設定の詳細については、「[AWS IoT Core 料金表](https://aws.amazon.com/iot-core/pricing/)」を参照してください。

**重要**  
パブリックネットワークは Everynet が直接サービスとして運営、提供しています。この機能を使用する前に、該当する「[AWSサービス条件](https://aws.amazon.com/service-terms/)」を参照してください。さらに、AWS IoT Core for LoRaWAN を通してパブリックネットワークを利用する場合、`DevEUI` や `JoinEUI` などの特定の LoRaWAN デバイス情報は、AWS IoT Core for LoRaWAN が利用可能なリージョン間でレプリケーションされます。

AWS IoT Core for LoRaWAN は、「[LoRaWAN バックエンドインターフェイス 1.0 仕様](https://lora-alliance.org/wp-content/uploads/2020/11/lorawantm-backend-interfaces-v1.0.pdf)」で説明されているように、ローミングの LoRa Alliance 仕様に従ってパブリック LoRaWAN ネットワークをサポートします。パブリックネットワーク機能を使用して、ホームネットワークの外部にあるエンドデバイスを接続できます。この機能をサポートするために、AWS IoT Core for LoRaWAN は Everynet と提携して無線通信範囲を拡大しています。

## パブリック LoRaWAN ネットワークを使用する利点
<a name="lorawan-roaming-benefits"></a>

LoRaWAN デバイスは、パブリックネットワークを使用してクラウドに接続できるため、デプロイまでの時間が短縮され、プライベート LoRaWAN ネットワークの維持に必要な時間とコストを削減できます。

パブリック LoRaWAN ネットワークを使用すると、カバレッジの拡張、無線ネットワークなしでのコアの実行、カバレッジの高密度化などの利点が得られます。この機能は次の用途に使用できます。
+ [パブリック LoRaWAN ネットワークサポートアーキテクチャ](lorawan-roaming-works.md#lorawan-roaming-architecture) セクションの図のデバイス A など、ホームネットワークから移動するデバイスにカバレッジを提供します。
+ [パブリック LoRaWAN ネットワークサポートアーキテクチャ](lorawan-roaming-works.md#lorawan-roaming-architecture) セクションの図のデバイス B など、接続する LoRa ゲートウェイがないデバイスにもカバレッジを拡張します。その後、デバイスはパートナーが提供するゲートウェイを使用してホームネットワークに接続できます。

LoRaWAN デバイスは、ローミング機能を使用してパブリックネットワークを使用してクラウドに接続できるため、デプロイまでの時間が短縮され、プライベート LoRaWAN ネットワークの維持に必要な時間とコストを削減できます。

以下のセクションでは、パブリックネットワークサポートのアーキテクチャ、パブリック LoRaWAN ネットワークサポートの仕組み、およびこの機能の使用方法について説明します。

**Topics**
+ [パブリック LoRaWAN ネットワークを使用する利点](#lorawan-roaming-benefits)
+ [LoRaWAN パブリックネットワークサポートの仕組み](lorawan-roaming-works.md)
+ [パブリックネットワークサポートの使用方法](lorawan-roaming-use.md)

# LoRaWAN パブリックネットワークサポートの仕組み
<a name="lorawan-roaming-works"></a>

AWS IoT Core for LoRaWAN は、LoRa Alliance の仕様に従って、パッシブローミング機能をサポートしています。パッシブローミングでは、ローミングプロセスはエンドデバイスに対して完全に透過的です。ホームネットワークの外部をローミングするエンドデバイスは、そのネットワーク内のゲートウェイに接続し、アプリケーションサーバーを使用してアップリンクデータとダウンリンクデータを交換できます。デバイスは、ローミングプロセス全体を通してホームネットワークに接続されたままになります。

**注記**  
AWS IoT Core for LoRaWAN は、パッシブローミングのステートレス機能のみをサポートします。ハンドオーバーローミングはサポートされていません。ハンドオーバーローミングでは、デバイスがホームネットワークの外部に移動すると、別の通信事業者に切り替わります。

**Topics**
+ [パブリック LoRaWAN ネットワークの概念](#lorawan-roaming-concepts)
+ [パブリック LoRaWAN ネットワークサポートアーキテクチャ](#lorawan-roaming-architecture)

## パブリック LoRaWAN ネットワークの概念
<a name="lorawan-roaming-concepts"></a>

AWS IoT Core for LoRaWAN でサポートされているパブリックネットワーク機能では、次の概念が使用されます。

**LoRaWAN network server (LNS)**  
LNS はスタンドアロンのプライベートサーバーで、オンプレミスで実行することも、クラウドベースのサービスにすることもできます。AWS IoT Core for LoRaWAN は、クラウド上でサービスを提供する LNS です。

**ホームネットワークサーバー (hNS)**  
ホームネットワークは、デバイスが属するネットワークです。ホームネットワークサーバー (hNS) は、AWS IoT Core for LoRaWAN がデバイスのプロビジョニングデータ (`DevEUI`、`AppEUI`、セッションキーなど) を保存する LNS です。

**訪問先ネットワークサーバー (vNS)**  
訪問先ネットワークとは、デバイスがホームネットワークを離れるときに通信可能になるネットワークです。訪問先ネットワークサーバー (vNS) は、エンドデバイスにサービスを提供できるように hNS とビジネス上および技術上の契約を結んでいる LNS です。AWS パートナーの Everynet は訪問先のネットワークとして機能し、カバレッジを提供します。

**サービス提供ネットワークサーバー (sNS)**  
サービス提供ネットワークサーバー (sNS) は、デバイスの MAC コマンドを処理する LNS です。1 つの LoRa セッションには 1 つの sNS しか存在できません。

**転送ネットワークサーバー (fNS)**  
転送ネットワークサーバー (fNS) は、無線ゲートウェイを管理する LNS です。1 つの LoRa セッションには、0 個以上の fNS が関与する可能性があります。このネットワークサーバーは、デバイスから受信したデータパケットのホームネットワークへの転送を管理します。

## パブリック LoRaWAN ネットワークサポートアーキテクチャ
<a name="lorawan-roaming-architecture"></a>

次のアーキテクチャ図は、AWS IoT Core for LoRaWAN が Everynet と提携してパブリックネットワーク接続を提供する方法を示しています。この場合、デバイス A は、LoRa ゲートウェイを介して AWS IoT Core for LoRaWAN によって提供される hNS (ホームネットワークサーバー) に接続されます。デバイス A がホームネットワークから移動すると、訪問先のネットワークに入り、Everynet が提供する訪問先ネットワークサーバー (vNS) によってカバーされます。また、vNS は、接続する LoRa ゲートウェイを持たないデバイス B にもカバレッジを拡張します。

次のセクションで説明するように、パブリックネットワークのカバレッジ情報を AWS IoT コンソールに表示できます。

![\[AWS IoT Core for LoRaWAN がローミングをサポートして、ホームネットワークの外に移動するデバイスをサポートし、接続するゲートウェイを持たないデバイスにカバレッジを拡張する方法を示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-roaming-architecture.png)


 AWS IoT Core for LoRaWAN は、[LoRa Alliance LoRaWAN Roaming Hub Technical Recommendation](https://lora-alliance.org/wp-content/uploads/2022/01/TR010-1.0.0-LoRaWAN-Roaming-Hub.pdf) に従ってローミングハブ機能を使用しています。ローミングハブは、Everynet がエンドデバイスから受信したトラフィックをルーティングするためのエンドポイントを提供します。この場合、Everynet はデバイスから受信したトラフィックを転送する転送ネットワークサーバー (fNS) として機能します。LoRa Alliance 仕様で定義されている HTTP RESTful API を使用しています。

**注記**  
デバイスがホームネットワークから移動して、ホームネットワークと Everynet の両方が通信できる場所に入ると、先着順のポリシーを使用して、LoRa ゲートウェイに接続するか、Everynet のゲートウェイに接続するかを決定します。

パブリックネットワークにアクセスする場合、HN とサービングネットワークサーバー (SN) は分離されます。次に、sNS と hNS の間でアップリンクパケットとダウンリンクパケットが交換されます。

# パブリックネットワークサポートの使用方法
<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) を使用するときに、これらのパラメータを指定します。

**注記**  
AWS IoT Core for LoRaWAN は、ハンドオーバーローミングをサポートしていません。サービスプロファイルを作成する場合、ハンドオーバーローミングを使用するかどうかを指定する `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)」と「[AWS IoT Core for LoRaWAN に送信先を追加する](lorawan-create-destinations.md)」を参照してください。
   + 

**新しいデバイスのオンボーディング**  
デバイスをまだオンボーディングしていない場合は、デバイスを AWS IoT Core for LoRaWAN に追加するときにこのサービスプロファイル使用するように指定します。次のコマンドは、`create-wireless-device` CLI コマンドを使用して、作成したサービスプロファイルの ID を使用してデバイスを追加する方法を示しています。コンソールを使用したサービスプロファイルを追加する方法については、「[コンソールを使用してワイヤレスデバイスの仕様を AWS IoT Core for LoRaWAN に追加する](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 クラウド クラウドに接続できます。デバイスのアクティベーション手順や参加方法については、デバイスのマニュアルを参照してください。
**注記**  
ローミング機能を有効にし、アクティベーション方法として OTAA を使用するデバイスのパブリックネットワークへの接続を有効にできます。ABP デバイスはサポートされていません。デバイスのアクティベーション手順や参加方法については、デバイスのマニュアルを参照してください。「[アクティベーションモード](lorawan-manage-end-devices.md#lorawan-activation-modes)」を参照してください。
デバイスのローミング機能を無効にするには、このサービスプロファイルからデバイスの関連付けを解除し、ローミングパラメータが `false` に設定されている別のサービスプロファイルにデバイスを関連付けます。このサービスプロファイルに切り替えた後、デバイスがパブリックネットワークで実行され続けないように、別の結合を実行する必要があります。

1. 

**アップリンクとダウンリンクのメッセージを交換する**

   デバイスが AWS IoT Core for LoRaWAN に接続されたら、デバイスとクラウドの間でメッセージの交換を開始できます。
   + 

**アップリンクメッセージを表示する**  
デバイスからアップリンクメッセージを送信すると、AWS IoT Core for LoRaWAN は以前に設定した宛先を使用してこれらのメッセージを 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 ロケーションマップに表示します。Amazon ロケーションマップを使用する前に、Amazon Location Service 利用規約を確認してください。AWS は、選択したサードパーティーデータプロバイダーに API クエリを送信する場合があることに注意してください。このプロバイダーは現在使用している AWS リージョン の外部にある可能性があります。詳細については、「[AWS サービス条件](https://aws.amazon.com/service-terms)」を参照してください。

# LoRaWAN デバイスおよびマルチキャストグループのファームウェア更新無線通信経由 (FUOTA) を実行する
<a name="lorawan-multicast-fuota"></a>

ファームウェア更新を無線通信経由で実行して、単一の LoRaWAN デバイスまたはデバイスのグループのデバイスファームウェアを更新できます。デバイスファームウェアを更新するか、またはダウンリンクのペイロードを複数のデバイスに送信するには、マルチキャストグループを作成します。マルチキャストを使用すると、送信元は 1 つのマルチキャストグループにデータを送信できます。その後、データは受信側デバイスのグループに配信されます。

FUOTA およびマルチキャストグループに対する AWS IoT Core for LoRaWAN のサポートは、[LoRa Alliance](https://lora-alliance.org/about-lorawan) の次の仕様に基づいています。
+ LoRaWAN Remote Multicast Setup Specification、TS005-2.0.0
+ LoRaWAN Fragmented Data Block Transportation Specification、TS004-2.0.0
+ LoRaWAN Application Layer Clock Synchronization Specification、TS003-2.0.0

**注記**  
AWS IoT Core for LoRaWAN では、LoRa Alliance 仕様に従い、クロック同期が自動的に実行されます。ClockSync シグナリングを使用してサーバー側の時刻をリクエストするデバイスに返信するには `AppTimeReq` 関数を使用します。

以下のトピックでは、マルチキャストグループを作成し、FUOTA を実行する方法を示します。

**Topics**
+ [マルチキャストおよび FUOTA 設定用のデバイスを準備する](lorawan-prepare-devices-multicast.md)
+ [マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)
+ [AWS IoT Core for LoRaWAN デバイス用の Firmware Updates Over-The-Air (FUOTA)](lorawan-mc-fuota-overview.md)

# マルチキャストおよび FUOTA 設定用のデバイスを準備する
<a name="lorawan-prepare-devices-multicast"></a>

AWS IoT Core for LoRaWAN にワイヤレスデバイスを追加すると、コンソールまたは CLI を使用して、マルチキャストおよび FUOTA 設定用にワイヤレスデバイスを準備できます。初めて設定を行う場合は、コンソールを使用することをお勧めします。マルチキャストグループを管理し、グループに多数のデバイスを追加または削除するには、CLI を使用して多数のリソースを管理することをお勧めします。

## GenAppKey および FPorts
<a name="lorawan-prepare-devices-parameters"></a>

ワイヤレスデバイスを追加する際、デバイスをマルチキャストグループに追加したり FUOTA を実行する前に、次のパラメータを設定します。これらのパラメータを設定する前に、お使いのデバイスが FUOTA およびマルチキャストをサポートしており、ワイヤレスデバイスの仕様が `OTAA v1.1` または `OTAAv1.0.x` であることを確認してください。
+ `GenAppKey`: LoRaWAN バージョン 1.0.x をサポートし、マルチキャストグループを使用するデバイスの場合、`GenAppKey` はマルチキャストグループのセッションキーの取得元となるデバイス固有のルートキーです。
**注記**  
ワイヤレス仕様 `OTAA v1.1` を使用する LoRaWAN デバイスの場合、`AppKey` は、`GenAppKey` と同じ目的で使用されます。

  データ転送を開始するパラメータを設定するため、AWS IoT Core for LoRaWAN によりエンドデバイスにセッションキーが配布されます。LoRaWAN のバージョンの詳細については、「[LoRaWAN バージョン](lorawan-manage-end-devices.md#lorawan-lorawan-version)」を参照してください。
**注記**  
AWS IoT Core for LoRaWAN には、暗号化された形式で提供される `GenAppKey` の情報が保存されます。
+ `FPorts`: FUOTA およびマルチキャストグループの LoRaWAN 仕様に従い、AWS IoT Core for LoRaWAN により `FPorts` パラメータの次のフィールドにデフォルト値が割り当てられます。次のいずれかの `FPort` 値が既に割り当てられている場合、1 から 223 までの別の値を選択できます。
  + `Multicast`: 200

    この `FPort` 値は、マルチキャストグループに使用されます。
  + `FUOTA`: 201

    この `FPort` 値は FUOTA に使用されます。
  + `ClockSync`: 202

    この `FPort` 値は、クロック同期に使用されます。

## マルチキャストおよび FUOTA 用のデバイスプロファイル
<a name="lorawan-prepare-devices-profiles"></a>

マルチキャストセッションの開始時、グループ内のデバイスへのダウンリンクメッセージの送信に、クラス B またはクラス C の配信ウィンドウが使用されます。マルチキャストおよび FUOTA 用に追加するデバイスでは、クラス B またはクラス C のオペレーションモードがサポートされている必要があります。デバイスがサポートするデバイスクラスに応じて、クラス B モードかクラス C モードのいずれか、または両方が有効になっているデバイスのデバイスプロファイルを選択します。

デバイスプロファイルの詳細については、「[プロファイルを AWS IoT Core for LoRaWAN に追加する](lorawan-define-profiles.md)」を参照してください。

## コンソールを使用してマルチキャストおよび FUOTA 用のデバイスを準備する
<a name="lorawan-prepare-devices-multicast-console"></a>

コンソールを使用して、マルチキャストの設定および FUOTA の FPorts パラメータと GenAppKey パラメータを指定するには、次の操作を実行します。

1. [AWS IoT コンソールの [Devices] (デバイス) ハブ](https://console.aws.amazon.com/iot/home#/wireless/devices)に移動し、**[Add wireless device]** (ワイヤレスデバイスの追加) を選択します。

1. **[Wireless device specification]** (ワイヤレスデバイスの仕様) を選択します。デバイスでは、デバイスのアクティベーション用に OTAA を使用する必要があります。OTAA v1.0.x または OTAA v1.1 を選択すると、**[FUOTA configuration-Optional]** (FUOTA 設定-オプション) セクションが表示されます。

1. ワイヤレスデバイスの EUI (拡張一意識別子) パラメータを入力します。

1. **[FUOTA configuration-Optional]** (FUOTA 設定-オプション) セクションを展開し、**[This device supports firmware updates over the air (FUOTA)]** (このデバイスは FUOTA をサポートしています) を選択します。これにより、マルチキャスト、FUOTA、クロック同期の **FPort** の値を入力できます。ワイヤレスデバイスの仕様に `OTAA v1.0.x` を選択した場合、**GenAppKey** を入力します。

1. プロファイルとルーティングメッセージの送信先を選択して、AWS IoT Core for LoRaWAN にデバイスを追加します。デバイスにリンクされているデバイスプロファイルについては、**[Supports Class B]** (クラス B をサポート) または **[Supports Class C]** (クラス C をサポート) モードのどちらか一方または両方を選択していることを確認してください。

**注記**  
FUOTA の設定パラメータを指定するには、[AWS IoT コンソールの [Devices] (デバイス) ハブ](https://console.aws.amazon.com/iot/home#/wireless/devices)を使用する必要があります。これらのパラメータは、AWS IoT コンソールの **[Intro]** (Intro) ページを使用してデバイスをオンボードしている場合は表示されません。

ワイヤレスデバイスの仕様とデバイスのオンボーディングについての詳細は、「[ワイヤレスデバイスを AWS IoT Core for LoRaWAN に追加する](lorawan-end-devices-add.md)」を参照してください。

**注記**  
これらのパラメータは、ワイヤレスデバイスの作成時にのみ指定できます。既存のデバイスの更新時に、パラメータを変更または指定することはできません。

## API オペレーションを使用してマルチキャストおよび FUOTA 用のデバイスを準備する
<a name="lorawan-prepare-devices-multicast-api"></a>

マルチキャストグループを使用したり FUOTA を実行するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-wireless-device.html) CLI コマンドを使用して、これらのパラメータを設定します。アプリケーションキーと FPorts パラメータを指定することに加えて、デバイスにリンクされているデバイスプロファイルが、クラス B モードまたはクラス C モードのいずれか、または両方をサポートしていることを確認してください。

`create-wireless-device` コマンドへの入力として `input.json` ファイルを指定できます。

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

各パラメータの意味は次のとおりです。

**input.json の内容**

```
{
    "Description": "My LoRaWAN wireless device"
    "DestinationName": "IoTWirelessDestination"
    "LoRaWAN": {
        "DeviceProfileId": "ab0c23d3-b001-45ef-6a01-2bc3de4f5333",
        "ServiceProfileId": "fe98dc76-cd12-001e-2d34-5550432da100",
        "FPorts": { 
            "ClockSync": 202,
            "Fuota": 201,
            "Multicast": 200
      },
        "OtaaV1_0_x": {
            "AppKey": "3f4ca100e2fc675ea123f4eb12c4a012",
            "AppEui": "b4c231a359bc2e3d",
            "GenAppKey": "01c3f004a2d6efffe32c4eda14bcd2b4"
        },
        "DevEui": "ac12efc654d23fc2"
    },
    "Name": "SampleIoTWirelessThing"
    "Type": LoRaWAN
}
```

使用可能な CLI コマンドの詳細については、[AWS CLI リファレンス](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html)を参照してください。

**注記**  
これらのパラメータの値を指定した後は、`UpdateWirelessDevice` API オペレーションを使用して更新を行うことはできません。代わりに、パラメータ `GenAppKey` および `FPorts` の値を持つ新しいデバイスを作成できます。

これらのパラメータに指定された値に関する情報を取得するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-wireless-device.html) CLI コマンドを使用します。

## 次のステップ
<a name="lorawan-prepare-devices-next"></a>

パラメータを設定したら、マルチキャストグループと FUOTA タスクを作成して、ダウンリンクのペイロードを送信したり、LoRaWAN デバイスのファームウェアを更新できます。
+ マルチキャストグループの作成についての詳細は、「[マルチキャストグループを作成しグループにデバイスを追加する](lorawan-create-multicast-groups.md)」を参照してください。
+ FUOTA タスクの作成についての詳細は、「[FUOTA タスクを作成およびファームウェアイメージの指定](lorawan-fuota-create-task.md)」を参照してください。

# マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する
<a name="lorawan-multicast-groups"></a>

ダウンリンクのペイロードを複数のデバイスに送信するには、マルチキャストグループを作成します。マルチキャストを使用すると、送信元は 1 つのマルチキャストアドレスにデータを送信できます。その後、データは受信側デバイスのグループ全体に配信されます。

マルチキャストグループ内のデバイスでは、同じマルチキャストアドレス、セッションキー、およびフレームカウンターが共有されます。同じセッションキーを使用することで、マルチキャストグループ内のデバイスで、ダウンリンクの送信開始時にメッセージを復号化できます。マルチキャストグループではダウンリンクのみがサポートされています。ダウンリンクのペイロードがデバイスによって受信されたかどうかは確認されません。

AWS IoT Core for LoRaWAN のマルチキャストグループでは、次のことが行えます。
+ デバイスプロファイル、RFRegion、またはデバイスクラスを使用して、デバイスのリストをフィルタリングし、これらのデバイスをマルチキャストグループに追加します。
+ 48 時間の配信時間内に、1 つ以上のペイロードのダウンリンクメッセージをマルチキャストグループ内のデバイスにスケジュールして送信します。
+ ダウンリンクメッセージを受信するために、マルチキャストセッションの開始時に、デバイスを一時的にクラス B モードまたはクラス C モードに切り替えます。
+ マルチキャストグループの設定とそのデバイスの状態をモニタリングし、問題のトラブルシューティングも行います。
+ Firmware Updates-Over-The-Air (FUOTA) を使用して、マルチキャストグループ内のデバイスにファームウェアの更新を安全にデプロイします。

 次の動画では、AWS IoT Core for LoRaWAN マルチキャストグループの作成方法について説明し、グループにデバイスを追加し、グループにダウンリンクメッセージをスケジュールするプロセスについて説明します。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/LcCR-1eKX1w/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/LcCR-1eKX1w)


次に、マルチキャストグループを作成し、ダウンリンクメッセージをスケジュールする方法を示します。

**Topics**
+ [マルチキャストグループを作成しグループにデバイスを追加する](lorawan-create-multicast-groups.md)
+ [マルチキャストグループおよびグループ内のデバイスのステータスのモニタリングとトラブルシューティング](lorawan-multicast-status.md)
+ [マルチキャストグループ内のデバイスに送信するダウンリンクメッセージをスケジュールする](lorawan-multicast-schedule-downlink.md)

# マルチキャストグループを作成しグループにデバイスを追加する
<a name="lorawan-create-multicast-groups"></a>

コンソールまたは CLI を使用して、マルチキャストグループを作成できます。初めてマルチキャストグループを作成する場合は、コンソールを使用してマルチキャストグループを追加することをお勧めします。マルチキャストグループの管理、グループからのデバイスの追加または削除には、CLI を使用できます。

追加したエンドデバイスとシグナリングを交換すると、AWS IoT Core for LoRaWAN によりエンドデバイスとの共有キーが確立され、データ転送のパラメータが設定されます。

## 前提条件
<a name="lorawan-create-multicast-groups-prereq"></a>

マルチキャストグループを作成しグループにデバイスを追加するには、次の操作を実行します。
+ FUOTA の設定パラメータ `GenAppKey` および `FPorts` を指定して、マルチキャストおよび FUOTA の設定用にデバイスを準備します。詳細については、「[マルチキャストおよび FUOTA 設定用のデバイスを準備する](lorawan-prepare-devices-multicast.md)」を参照してください。
+ デバイスがクラス B またはクラス C のオペレーションモードをサポートしているかどうかを確認します。デバイスがサポートするデバイスクラスに応じて、**[Supports Class B]** (クラス B をサポート) または **[Supports Class C]** (クラス C をサポート) モードの一方または両方が有効なデバイスプロファイルを選択します。デバイスプロファイルの詳細については、「[プロファイルを AWS IoT Core for LoRaWAN に追加する](lorawan-define-profiles.md)」を参照してください。

  マルチキャストセッションの開始時、グループ内のデバイスへのダウンリンクメッセージの送信に、クラス B またはクラス C の配信ウィンドウが使用されます。

## コンソールを使用してマルチキャストグループを作成する
<a name="lorawan-create-multicast-groups-console"></a>

コンソールを使用してマルチキャストグループを作成するには、AWS IoT コンソールの [[Multicast groups]](https://console.aws.amazon.com/iot/home#/wireless/multicastGroups) (マルチキャストグループ) ページに移動して、**[Create multicast group]** (マルチキャストグループの作成) を選択します。

1. 

**マルチキャストグループの作成**

   マルチキャストグループを作成するには、グループのマルチキャストプロパティおよびタグを指定します。

   1. 

**マルチキャストプロパティの指定**  
マルチキャストプロパティを指定するには、マルチキャストグループについての次の情報を入力します。
      + **Name** (名前): マルチキャストグループの一意の名前を入力します。名前には、文字、数字、ハイフン、またはアンダースコアのみを使用できます。スペースを含めることはできません。
      + **Description** (説明): マルチキャストグループの説明をオプションで提供できます。説明の長さは最大 2,048 文字です。

   1. 

**マルチキャストグループのタグ**  
オプションで、マルチキャストグループの **Tags** (タグ) として任意のキーと値の組み合わせを指定できます。マルチキャストグループの作成を続行するには、**[Next]** (次へ) を選択します。

1. 

**マルチキャストグループにデバイスを追加**

   個々のデバイスまたはデバイスのグループをマルチキャストグループに追加できます。デバイスを追加するには、次の操作を実行します。

   1. 

**RFRegion の指定**  
マルチキャストグループの 周波数帯域 または **RFRegion** を指定します。マルチキャストグループの **RFRegion** は、マルチキャストグループに追加するデバイスの **RFRegion** と一致する必要があります。**RFRegion** の詳細については、「[ゲートウェイとデバイス接続用の LoRa 周波数帯域の選択を検討する](lorawan-rfregion-permissions.md#lorawan-frequency-bands)」を参照してください。

   1. 

**マルチキャストのデバイスクラスを選択する**  
マルチキャストセッションの開始時に、マルチキャストグループ内のデバイスをクラス B モードまたはクラス C モードのどちらに切り替えるかを選択します。クラス B のセッションでは通常のダウンリンクスロットでダウンリンクメッセージを受信でき、クラス C ではいつでもダウンリンクメッセージを受信できます。

   1. 

**グループに追加するデバイスを選択**  
マルチキャストグループにデバイスを個別に追加するか、一括で追加するかを選択します。
      + デバイスを個別に追加するには、グループに追加する各デバイスのワイヤレスデバイス ID を入力します。
      + デバイスを一括で追加するには、追加するデバイスをデバイスプロファイルまたはタグでフィルタリングできます。デバイスプロファイルの場合、クラス B、クラス C、または両方のデバイスクラスをサポートするプロファイルを持つデバイスを追加できます。

   1. マルチキャストグループを作成するには、**[Create]** (作成) を選択します。

      マルチキャストグループの詳細と追加したデバイスがグループに表示されます。マルチキャストグループおよびデバイスのステータスに関する情報、および問題のトラブルシューティングについては、「[マルチキャストグループおよびグループ内のデバイスのステータスのモニタリングとトラブルシューティング](lorawan-multicast-status.md)」を参照してください。

マルチキャストグループの作成後は、**[Action]** (アクション) を選択して、デバイスを編集、削除、またはマルチキャストグループに追加できます。デバイスを追加したら、ダウンリンクのペイロードがグループ内のデバイスに送信されるようにセッションをスケジュールできます。

## API を使用してマルチキャストグループを作成
<a name="lorawan-create-multicast-groups-api"></a>

API を使用してマルチキャストグループを作成し、グループにデバイスを追加するには、次の操作を実行します。

1. 

**マルチキャストグループの作成**

   マルチキャストグループの作成には、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateMulticastGroup.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateMulticastGroup.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-multicast-group.html) CLI コマンドを使用します。`create-multicast-group` コマンドへの入力として `input.json` ファイルを指定できます。

   ```
   aws iotwireless create-multicast-group \
       --cli-input-json file://input.json
   ```

   各パラメータの意味は次のとおりです。

   **input.json の内容**

   ```
   {   
      "Description": "Multicast group to send downlink payload and perform FUOTA.",
      "LoRaWAN": { 
         "DlClass": "ClassB",
         "RfRegion": "US915"
      },
      "Name": "MC_group_FUOTA"  
   }
   ```

   マルチキャストグループを作成したら、次の API オペレーションまたは CLI コマンドを使用して、マルチキャストグループに関する情報を更新、削除、取得できます。
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateMulticastGroup](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateMulticastGroup) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-multicast-group.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateMulticastGroup](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateMulticastGroup) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-multicast-group.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListMulticastGroups](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListMulticastGroups) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-multicast-groups.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-multicast-groups.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteMulticastGroup](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteMulticastGroup) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group.html) 

1. 

**マルチキャストグループにデバイスを追加**

   個別に、または一括でマルチキャストグループにデバイスを追加できます。
   + マルチキャストグループにデバイスを一括で追加するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartBulkAssociateWirelessDeviceWithMulticastGroup.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartBulkAssociateWirelessDeviceWithMulticastGroup.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-bulk-associate-wireless-device-with-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-bulk-associate-wireless-device-with-multicast-group.html) CLI コマンドを使用します。マルチキャストグループに関連付けるデバイスを一括でフィルタリングするには、クエリ文字列を指定します。次に、指定された ID がリンクされたデバイスプロファイルを持つデバイスのグループを追加する方法を示します。

     ```
     aws iotwireless start-bulk-associate-wireless-device-with-multicast-group \
         --id "12abd34e-5f67-89c2-9293-593b1bd862e0" \
         --cli-input-json file://input.json
     ```

     各パラメータの意味は次のとおりです。

     **input.json の内容**

     ```
     {
          "QueryString": "DeviceProfileName: MyWirelessDevice AND DeviceProfileId: d6d8ef8e-7045-496d-b3f4-ebcaa1d564bf",
          "Tags": [
             {
                 "Key": "Multicast",
                 "Value": "ClassB"
             }
         ]
     }
     ```

     この `multicast-groups/d6d8ef8e-7045-496d-b3f4-ebcaa1d564bf/bulk` は、デバイスをグループに関連付けるために使用する URL です。
   + マルチキャストグループにデバイスを個別に追加するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithMulticastGroup.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithMulticastGroup.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-wireless-device-with-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-wireless-device-with-multicast-group.html) CLI コマンドを使用します。グループに追加する各デバイスのワイヤレスデバイス ID を指定します。

     ```
     aws iotwireless associate-wireless-device-with-multicast-group \
         --id "12abd34e-5f67-89c2-9293-593b1bd862e0" \
         --wireless-device-id "ab0c23d3-b001-45ef-6a01-2bc3de4f5333"
     ```

   マルチキャストグループを作成したら、次の API オペレーションまたは CLI コマンドを使用して、マルチキャストグループに関する情報を取得したり、デバイスの関連付けを解除できます。
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateWirelessDeviceFromMulticastGroup.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateWirelessDeviceFromMulticastGroup.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-wireless-device-from-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-wireless-device-from-multicast-group.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartBulkDisassociateWirelessDeviceFromMulticastGroup.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartBulkDisassociateWirelessDeviceFromMulticastGroup.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-bulk-disassociate-wireless-device-from-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-bulk-disassociate-wireless-device-from-multicast-group.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-wireless-devices.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-wireless-devices.html) 
**注記**  
`ListWirelessDevices` API オペレーションは、一般的なワイヤレスデバイス、およびマルチキャストグループまたは FUOTA タスクに関連付けられているワイヤレスデバイスを一覧表示するために使用できます。  
マルチキャストグループに関連付けられているワイヤレスデバイスを一覧表示するには、フィルタとして `MulticastGroupID` を持つ `ListWirelessDevices` API オペレーションを使用します。
FUOTA タスクに関連付けられているワイヤレスデバイスを一覧表示するには、フィルタとして `ListWirelessDevices` を持つ `FuotaTaskID` API オペレーションを使用します。

## 次のステップ
<a name="lorawan-create-multicast-next-steps"></a>

マルチキャストグループを作成してデバイスを追加したら、デバイスの追加を続行したり、マルチキャストグループとデバイスのステータスをモニタリングできます。デバイスがグループに正常に追加されている場合、ダウンリンクメッセージがデバイスに送信されるように設定およびスケジュールできます。ダウンリンクメッセージを送信するには、デバイスのステータスが **[Multicast setup ready]** (マルチキャストのセットアップの準備が完了しました) である必要があります。ダウンリンクメッセージをスケジュールすると、ステータスは **[Session attempting]** (セッションの試行中) に変わります。詳細については、「[マルチキャストグループ内のデバイスに送信するダウンリンクメッセージをスケジュールする](lorawan-multicast-schedule-downlink.md)」を参照してください。

マルチキャストグループ内のデバイスのファームウェアを更新する場合、AWS IoT Core for LoRaWAN で Firmware Updates Over-The-Air (FUOTA) を実行できます。詳細については、「[AWS IoT Core for LoRaWAN デバイス用の Firmware Updates Over-The-Air (FUOTA)](lorawan-mc-fuota-overview.md)」を参照してください。

デバイスが追加されなかった場合、またはマルチキャストグループやデバイスのステータスにエラーが表示された場合は、エラーにカーソルを合わせると詳細情報を取得でき、解決することができます。それでもエラーが表示される場合は、問題のトラブルシューティングと解決方法の詳細について、「[マルチキャストグループおよびグループ内のデバイスのステータスのモニタリングとトラブルシューティング](lorawan-multicast-status.md)」を参照してください。

# マルチキャストグループおよびグループ内のデバイスのステータスのモニタリングとトラブルシューティング
<a name="lorawan-multicast-status"></a>

デバイスを追加してマルチキャストグループを作成したら、AWS マネジメントコンソール を開きます。AWS IoT コンソールの [[Multicast groups]](https://console.aws.amazon.com/iot/home#/wireless/multicastGroups) (マルチキャストグループ) ページに移動して、作成したマルチキャストグループを選択し詳細を表示します。マルチキャストグループに関する情報、追加されたデバイスの数、デバイスのステータスに関する詳細が表示されます。ステータス情報を使用して、マルチキャストセッションの進行状況を追跡し、エラーのトラブルシューティングを行うことができます。

## マルチキャストグループのステータス
<a name="lorawan-multicast-group-status"></a>

マルチキャストグループには、AWS マネジメントコンソール で次のステータスメッセージのいずれかが表示されることがあります。
+ 

**保留中**  
このステータスは、マルチキャストグループを作成したが、まだマルチキャストセッションがないことを示します。グループが作成されると、このステータスメッセージが表示されます。この間、マルチキャストグループを更新したり、デバイスをグループに関連付けたり、関連付けを解除したりできます。ステータスが **[Pending]** (保留中) から変更された後は、他のデバイスをグループに追加することは使用できません。
+ 

**セッションの試行中**  
デバイスがマルチキャストグループに正常に追加された後、グループにスケジュールされたマルチキャストセッションがある場合、このステータスメッセージが表示されます。この間、デバイスを更新したりマルチキャストグループに追加することはできません。マルチキャストセッションをキャンセルすると、グループのステータスは **[Pending]** (保留中) に変わります。
+ 

**セッション中**  
マルチキャストセッションで、セッション時間が最も早い場合、このステータスメッセージが表示されます。マルチキャストグループは、ファームウェアの更新セッションが進行中の FUOTA タスクに関連付けられている場合も、この状態のままです。

  セッションに関連した FUOTA タスクがなく、セッション時間がタイムアウトの時間を超えたためにマルチキャストセッションがキャンセルされた場合、またはユーザーがマルチキャストセッションをキャンセルした場合、グループのステータスは **[Pending]** (保留中) に変わります。
+ 

**削除の待機中**  
マルチキャストグループを削除すると、グループのステータスが **[Delete waiting]** (削除の待機中) に変わります。削除は永続的で、元に戻すことはできません。この操作には時間がかかる場合があり、マルチキャストグループが削除されるまでグループのステータスは **[Delete\$1Waiting]** (削除の待機中) になります。マルチキャストグループがこの状態になった後は、他の状態には移行できません。

## マルチキャストグループ内のデバイスのステータス
<a name="lorawan-multicast-device-status"></a>

マルチキャストグループ内のデバイスには、AWS マネジメントコンソール で次のステータスメッセージのいずれかが表示されます。各ステータスメッセージにカーソルを合わせると、そのメッセージが示す内容の詳細を確認できます。
+ 

**パッケージの試行中**  
デバイスがマルチキャストグループに関連付けられると、デバイスのステータスは **[Package attempting]** (パッケージの試行中) になります。このステータスは、AWS IoT Core for LoRaWAN により、デバイスがマルチキャストの設定とオペレーションをサポートしているかどうかがまだ確認されていないことを示します。
+ 

**パッケージはサポートされていません**  
デバイスがマルチキャストグループに関連付けられると、AWS IoT Core for LoRaWAN によりデバイスのファームウェアがマルチキャストの設定とオペレーションに対応しているかどうかが確認されます。サポートされているマルチキャストパッケージがデバイスにない場合、ステータスは **[Package unsupported]** (パッケージはサポートされていません) になります。このエラーを解決するには、デバイスのファームウェアがマルチキャストの設定とオペレーションに対応しているかどうかを確認します。
+ 

**マルチキャストのセットアップを試行中**  
マルチキャストグループに関連付けられているデバイスがマルチキャストの設定およびオペレーションに対応している場合、ステータスは **[Multicast setup attempting]** (マルチキャストのセットアップを試行中) になります。このステータスは、デバイスがマルチキャストのセットアップをまだ完了していないことを示します。
+ 

**マルチキャストのセットアップの準備完了**  
デバイスでマルチキャストのセットアップが完了し、マルチキャストグループに追加されています。このステータスは、デバイスでマルチキャストセッションの準備が完了しており、ダウンリンクメッセージをそれらのデバイスに送信できることを示します。ステータスには、FUOTA を使用してグループ内のデバイスのファームウェアを更新できるタイミングも示されます。
+ 

**セッションの試行中**  
マルチキャストグループ内のデバイス用にマルチキャストセッションがスケジュールされています。マルチキャストグループのセッション開始時のデバイスのステータスは **[Session attempting]** (試行中のセッション) で、セッション用にクラス B またはクラス C の配信ウィンドウを開始できるかどうかのリクエストが送信されます。マルチキャストセッションの設定にかかる時間がタイムアウトの時間を超えた場合、またはユーザーがマルチキャストセッションをキャンセルした場合、ステータスは **[Multicast setup done]** (マルチキャストのセットアップが完了しました) に変わります。
+ 

**セッション中**  
このステータスは、クラス B またはクラス C の配信ウィンドウが開始され、デバイスでマルチキャストセッションが進行中であることを示します。この間、ダウンリンクメッセージは AWS IoT Core for LoRaWAN からマルチキャストグループ内のデバイスに送信されます。セッション時間を更新すると、現在のセッションが上書きされ、ステータスが **[Session attempting]** (セッションの試行中) に変わります。セッション時間の終了時、またはユーザーがマルチキャストセッションをキャンセルした場合、ステータスは **[Multicast setup ready]** (マルチキャストのセットアップの準備が完了しました) になります。

## 次のステップ
<a name="lorawan-multicast-status-next"></a>

これまで、マルチキャストグループおよびグループ内のデバイスのさまざまなステータス、デバイスがマルチキャストの設定に対応していない場合などの問題のトラブルシューティング方法について学習したので、ダウンリンクメッセージがデバイスに送信されるようスケジュールを行えます。マルチキャストグループは **[In session]** (セッション中) になります。ダウンリンクメッセージのスケジュールについては、「[マルチキャストグループ内のデバイスに送信するダウンリンクメッセージをスケジュールする](lorawan-multicast-schedule-downlink.md)」を参照してください。

# マルチキャストグループ内のデバイスに送信するダウンリンクメッセージをスケジュールする
<a name="lorawan-multicast-schedule-downlink"></a>

マルチキャストグループがデバイスに正常に追加されたら、マルチキャストセッションを開始し、それらのデバイスに送信されるダウンリンクメッセージを設定できます。ダウンリンクメッセージは、48 時間以内にスケジュールする必要があります。また、マルチキャストの開始時刻は、現在の時刻から 30 分以上後である必要があります。

**注記**  
マルチキャストグループのデバイスでは、ダウンリンクメッセージを受信したときに確認応答ができません。

## 前提条件
<a name="lorawan-multicast-downlink-prereq"></a>

ダウンリンクメッセージを送信する前に、マルチキャストグループを作成し、ダウンリンクメッセージを送信するグループにデバイスを正常に追加しておく必要があります。マルチキャストセッションの開始時刻がスケジュールされた後に、デバイスを追加することはできません。詳細については、「[マルチキャストグループを作成しグループにデバイスを追加する](lorawan-create-multicast-groups.md)」を参照してください。

いずれかのデバイスが正常に追加されなかった場合、マルチキャストグループとデバイスステータスには、エラーの解決に役立つ情報が含まれます。それでもエラーが続く場合は、エラーのトラブルシューティングについて「[マルチキャストグループおよびグループ内のデバイスのステータスのモニタリングとトラブルシューティング](lorawan-multicast-status.md)」を参照してください。

## コンソールを使用してダウンリンクメッセージをスケジュールする
<a name="lorawan-multicast-downlink-console"></a>

コンソールを使用してダウンリンクメッセージを送信するには、AWS IoT コンソールの [[Multicast groups]](https://console.aws.amazon.com/iot/home#/wireless/multicastGroups) (マルチキャストグループ) ページに移動して、作成したマルチキャストグループを選択します。マルチキャストグループの詳細ページで、**[Schedule downlink message]** (ダウンリンクメッセージのスケジュール) を選択し、その後 **[Schedule downlink session]** (ダウンリンクセッションのスケジュール) を選択します。

1. 

**ダウンリンクメッセージのウィンドウをスケジュールする**

   マルチキャストグループ内のデバイスにダウンリンクメッセージを送信するようタイムウィンドウを設定できます。ダウンリンクメッセージは 48 時間以内にスケジュールする必要があります。

   マルチキャストセッションをスケジュールするには、次のパラメータを指定します。
   + **[Start date]** (開始日) および **[Start time]** (開始時刻): 開始日および開始時刻は、現在の時刻から 30 分以上後で 48 時間より前である必要があります。
**注記**  
指定する時刻は UTC なので、ダウンリンクウィンドウをスケジュールする際は、タイムゾーンとの時差を確認してください。
   + **Session timeout** (セッションタイムアウト): ダウンリンクメッセージが受信されなかった場合、マルチキャストセッションがタイムアウトするまでの時間です。タイムアウトの最短時間は 60 秒です。最大タイムアウト値は、クラス B のマルチキャストグループで 2 日、クラス C のマルチキャストグループで 18 時間です。

1. 

**ダウンリンクメッセージの設定**

   ダウンリンクメッセージを設定するには、次のパラメータを指定します。
   + **Data rate** (データレート): ダウンリンクメッセージのデータレートを選択します。データレートは、RFRegion およびペイロードサイズによって異なります。デフォルトのデータレートは、US915 リージョンで 8、EU868 リージョンで 0 です。
   + **Frequency** (頻度): ダウンリンクメッセージを送信する頻度を選択します。メッセージの競合を回避するため、RFRegion に応じて使用可能な頻度を選択します。
   + **FPort**: ダウンリンクメッセージをデバイスに送信するために使用できる周波数ポートを選択します。
   + **Payload** (ペイロード): データレートに応じて、ペイロードの最大サイズを指定します。デフォルトのデータレートを使用すると、ペイロードの最大サイズを US915 RfRegion では 33 バイト、EU868 RfRegion では 51 バイトに設定できます。より大きなデータレートを使用すると、最大サイズが 242 バイトのペイロードまで転送できます。

   ダウンリンクメッセージをスケジュールするには、**[Schedule]** (スケジュール) を選択します。

## API を使用してダウンリンクメッセージをスケジュールする
<a name="lorawan-multicast-downlink-api"></a>

API を使用してダウンリンクメッセージをスケジュールするには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartMulticastGroupSession.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartMulticastGroupSession.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-multicast-group-session](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-multicast-group-session) CLI コマンドを使用します。

次の API オペレーションまたは CLI コマンドを使用して、マルチキャストグループに関する情報を取得したり、マルチキャストグループを削除できます。
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetMulticastGroupSession.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetMulticastGroupSession.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-multicast-group-session](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-multicast-group-session)
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteMulticastGroupSession.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteMulticastGroupSession.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group-session](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group-session)

セッションの開始後にマルチキャストグループにデータを送信するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToMulticastGroup.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToMulticastGroup.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-multicast-group](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-multicast-group) CLI コマンドを使用します。

## 次のステップ
<a name="lorawan-multicast-downlink-next"></a>

ダウンリンクメッセージがデバイスに送信されるように設定すると、セッションの開始時にメッセージが送信されます。マルチキャストグループ内のデバイスでは、メッセージが受信されたかどうかを確認できません。

### 追加のダウンリンクメッセージを設定する
<a name="lorawan-multicast-downlink-additional"></a>

マルチキャストグループ内のデバイスに送信する追加のダウンリンクメッセージを設定することもできます。
+ コンソールから追加のダウンリンクメッセージを設定するには、次の操作を実行します。

  1. AWS IoT コンソールの [[Multicast groups]](https://console.aws.amazon.com/iot/home#/wireless/multicastGroups) (マルチキャストグループ) ページに移動して、作成したマルチキャストグループを選択します。

  1. マルチキャストグループの詳細ページで、**[Schedule downlink message]** (ダウンリンクメッセージのスケジュール) を選択し、その後 **[Configure additional downlink message]** (追加のダウンリンクメッセージを設定) を選択します。

  1. 最初にダウンリンクメッセージに設定したのと同様に [**Data rate**] (データレート)、[**Frequency**] (頻度)、[**FPort**]、および [**Payload**] (ペイロード) のパラメータを指定します。
+ API または CLI を使用して追加のダウンリンクメッセージを設定するには、追加のダウンリンクメッセージごとに [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToMulticastGroup.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToMulticastGroup.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-multicast-group](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-multicast-group) CLI コマンドを呼び出します。

### セッションスケジュールの更新
<a name="lorawan-multicast-downlink-update"></a>

マルチキャストセッションに新しい開始日時が使用されるよう、セッションスケジュールを更新することもできます。新しいセッションスケジュールは、以前にスケジュールされたセッションに上書きされます。

**注記**  
マルチキャストセッションは、必要な場合にのみ更新してください。更新により、デバイスのグループが長時間起動状態になり、バッテリーを消費する可能性があります。
+ コンソールからセッションスケジュールを更新するには、次の操作を実行します。

  1. AWS IoT コンソールの [[Multicast groups]](https://console.aws.amazon.com/iot/home#/wireless/multicastGroups) (マルチキャストグループ) ページに移動して、作成したマルチキャストグループを選択します。

  1. マルチキャストグループの詳細ページで、**[Schedule downlink message]** (ダウンリンクメッセージのスケジュール) を選択し、その後 **[Update session schedule]** (セッションスケジュールの更新) を選択します。

  1. 最初のダウンリンクメッセージで指定したのと同様に、**[Start date]** (開始日)、**[Start time]** (開始時間)、および **[Session timeout]** (セッションタイムアウト) のパラメータを指定します。
+ API または CLI からセッションスケジュールを更新するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartMulticastGroupSession.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartMulticastGroupSession.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-multicast-group-session](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-multicast-group-session) CLI コマンドを使用します。

# AWS IoT Core for LoRaWAN デバイス用の Firmware Updates Over-The-Air (FUOTA)
<a name="lorawan-mc-fuota-overview"></a>

Firmware Updates Over-The-Air (FUOTA) を使用して、AWS IoT Core for LoRaWAN デバイスにファームウェアの更新をデプロイします。

FUOTA を使用すると、ファームウェアの更新を個々のデバイスまたはデバイスのグループに送信できます。マルチキャストグループを作成して、ファームウェアの更新を複数のデバイスに送信することもできます。まず、デバイスをマルチキャストグループに追加し、その後ファームウェアの更新イメージをそれらのすべてのデバイスに送信します。ファームウェアのイメージにデジタル署名して、イメージを受信するデバイスがそれが正しいソースから来ていることを確認できるようにすることをお勧めします。

AWS IoT Core for LoRaWAN の FUOTA では、次を行うことができます。
+ 新しいファームウェアイメージまたはデルタイメージを単一のデバイスやデバイスのグループにデプロイします。
+ 新しいファームウェアがデバイスに導入された後、そのファームウェアの信頼性と完全性を検証します。
+ デプロイの進行状況をモニタリングし、失敗した場合に問題をデバッグします。

FUOTA およびマルチキャストグループに対する AWS IoT Core for LoRaWAN のサポートは、[LoRa Alliance](https://lora-alliance.org/about-lorawan) の次の仕様に基づいています。
+ LoRaWAN Remote Multicast Setup Specification、TS005-2.0.0
+ LoRaWAN Fragmented Data Block Transportation Specification、TS004-2.0.0
+ LoRaWAN Application Layer Clock Synchronization Specification、TS003-2.0.0

**注記**  
AWS IoT Core for LoRaWAN では、LoRa Alliance 仕様に従い、クロック同期が自動的に実行されます。ClockSync シグナリングを使用してサーバー側の時刻をリクエストするデバイスに返信するには `AppTimeReq` 関数を使用します。

 次の動画では、AWS IoT Core for LoRaWAN FUOTA タスクの作成方法について説明し、タスクにデバイスを追加し、FUOTA タスクをスケジュールするプロセスについて説明します。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/0Yd6PFwL-IM/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/0Yd6PFwL-IM)


**Topics**
+ [FUOTA プロセスの概要](lorawan-fuota-mc-process.md)
+ [FUOTA タスクを作成およびファームウェアイメージの指定](lorawan-fuota-create-task.md)
+ [は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする](lorawan-fuota-add-devices.md)
+ [FUOTA タスクとタスクに追加されたデバイスのステータスを監視およびトラブルシューティングします。](lorawan-fuota-status.md)

# FUOTA プロセスの概要
<a name="lorawan-fuota-mc-process"></a>

次の図は、エンドデバイスに対して AWS IoT Core for LoRaWAN によりFUOTA プロセスがどのように実行されるのかを示しています。FUOTA セッションに個々のデバイスを追加する場合は、マルチキャストグループの作成および設定の手順をスキップできます。FUOTA セッションにデバイスを直接追加できます。その後、AWS IoT Core for LoRaWAN によりファームウェアの更新プロセスが開始されます。

![\[AWS IoT Core for LoRaWAN がエンドデバイス用に FUOTA を実行する方法を示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-fuota-flow.png)


デバイス用に FUOTA を実行するには、最初にデジタル署名されたファームウェアイメージを作成し、FUOTA タスクに追加するデバイスおよびマルチキャストグループを設定します。FUOTA セッションを開始すると、エンドデバイスによりすべてのフラグメントが収集され、フラグメントからイメージが再構築され、ステータスが AWS IoT Core for LoRaWAN に報告されます。その後、新しいファームウェアイメージが適用されます。

FUOTA プロセスのさまざまな手順を次に示します。

1. 

**デジタル署名したファームウェアイメージまたはデルタイメージを作成する**

   AWS IoT Core for LoRaWAN で LoRaWAN デバイス用の FUOTA を実行するには、ファームウェアの更新を無線で送信する際に、ファームウェアイメージまたはデルタイメージにデジタル署名しておくことをお勧めします。その後、画像を受信するデバイスでは、それが正しいソースから来ていることを確認できます。

   ファームウェアイメージのサイズは 1 メガバイトを超えてはいけません。ファームウェアのサイズが大きいほど、更新プロセスの完了に時間がかかります。データ転送を高速化したい場合、または新しいイメージが 1 メガバイトを超える場合は、デルタイメージを使用します。デルタイメージは、新しいファームウェアイメージと以前のイメージの間のデルタとなる新しいイメージの一部です。
**注記**  
AWS IoT Core for LoRaWAN では、デジタル署名作成ツールおよびファームウェアバージョンの管理システムは提供されていません。サードパーティー製のツールを使用して、ファームウェアイメージのデジタル署名を生成できます。[ARM Mbed GitHub リポジトリ](https://github.com/armmbed/mbed-os-example-lorawan-fuota)に埋め込まれているようなデジタル署名ツールを使用することをお勧めします。これには、デルタイメージを生成するためのツールと、デバイスがそのイメージを使用するためのツールも含まれています。

1. 

**FUOTA のデバイスの特定および設定**

   FUOTA のデバイスを特定したら、ファームウェアの更新を個々のデバイスまたは複数のデバイスに送信します。
   + ファームウェアの更新を複数のデバイスに送信するには、マルチキャストグループを作成し、エンドデバイスでマルチキャストグループを設定します。詳細については、「[マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)」を参照してください。
   + 個々のデバイスにファームウェアの更新を送信するには、それらのデバイスを FUOTA セッションに追加し、ファームウェアの更新を実行します。

1. 

**配信ウィンドウをスケジュールしてフラグメンテーションセッションをセットアップする**

   マルチキャストグループを作成した場合、クラス B またはクラス C の配信ウィンドウを指定して、デバイスが AWS IoT Core for LoRaWAN からフラグメントを受信できるタイミングを決定できます。クラス B またはクラス C モードに切り替える前に、デバイスがクラス A で動作している可能性があります。また、セッションの開始時刻を指定する必要があります。

   クラス B またはクラス C のデバイスは、指定された配信ウィンドウで起動し、ダウンリンクパケットの受信を開始します。クラス C モードで動作するデバイスは、クラス B のデバイスよりも多くの電力を消費します。詳細については、「[デバイスクラス](lorawan-manage-end-devices.md#lorawan-device-classes)」を参照してください。

1. 

**エンドデバイスによる AWS IoT Core for LoRaWAN へのステータスの報告およびファームウェアイメージの更新**

   フラグメンテーションセッションの設定後、エンドデバイスおよび AWS IoT Core for LoRaWAN では次の手順が実行され、デバイスのファームウェアが更新されます。

   1. LoRaWan デバイスのデータレートが低いため、FUOTA プロセスを開始するために AWS IoT Core for LoRaWAN でフラグメンテーションセッションが設定され、ファームウェアイメージがフラグメント化されます。その後、これらのフラグメントがエンドデバイスに送信されます。

   1. AWS IoT Core for LoRaWAN によりイメージのフラグメントが送信されたら、LoRaWan エンドデバイスでは次のタスクが実行されます。

      1. フラグメントが収集され、これらのフラグメントからバイナリイメージが再構築されます。

      1. 再構築されたイメージのデジタル署名の確認、イメージの認証が行われ、それが正しいソースから来ていることが確認されます。

      1. AWS IoT Core for LoRaWAN からのファームウェアのバージョンと現在のバージョンが比較されます。

      1. 転送済みの、フラグメント化されたイメージのステータスが AWS IoT Core for LoRaWAN に報告され、新しいファームウェアイメージが適用されます。
**注記**  
場合によっては、ファームウェアイメージのデジタル署名が確認される前に、エンドデバイスにより転送済みのフラグメント化されたイメージのステータスが AWS IoT Core for LoRaWAN に報告されます。

FUOTA プロセスを学習したので、FUOTA タスクを作成し、タスクにデバイスを追加してファームウェアを更新できます。詳細については、「[FUOTA タスクを作成およびファームウェアイメージの指定](lorawan-fuota-create-task.md)」を参照してください。

# FUOTA タスクを作成およびファームウェアイメージの指定
<a name="lorawan-fuota-create-task"></a>

LoRaWAN デバイスのファームウェアを更新するには、まず FUOTA タスクを作成し、アップデートに使用するデジタル署名されたファームウェアイメージを指定します。その後、デバイスおよびマルチキャストグループをタスクに追加し、FUOTA セッションをスケジュールできます。セッションが開始されると、AWS IoT Core for LoRaWAN によりフラグメンテーションセッションが設定されます。また、エンドデバイスによりフラグメントが収集され、イメージが再構築され、新しいファームウェアが適用されます。FUOTA プロセスの詳細については、「[FUOTA プロセスの概要](lorawan-fuota-mc-process.md)」を参照してください。

FUOTA タスクを作成し、S3 バケットに格納するファームウェアイメージまたはデルタイメージをアップロードする方法を次に示します。

## 前提条件
<a name="lorawan-fuota-task-prereq"></a>

FUOTA を実行する前に、エンドデバイスがイメージの適用時にイメージの信頼性を確認できるよう、ファームウェアイメージにデジタル署名する必要があります。サードパーティー製のツールを使用して、ファームウェアイメージのデジタル署名を生成できます。[ARM Mbed GitHub リポジトリ](https://github.com/armmbed/mbed-os-example-lorawan-fuota)に埋め込まれているようなデジタル署名ツールを使用することをお勧めします。これには、デルタイメージを生成するためのツールと、デバイスがそのイメージを使用するためのツールも含まれています。

## コンソールを使用して FUOTA タスクを作成しファームウェアイメージをアップロードする
<a name="lorawan-fuota-task-console"></a>

コンソールを使用して FUOTA タスクを作成し、ファームウェアイメージをアップロードするには、コンソールの [[FUOTA tasks]](https://console.aws.amazon.com/iot/home#/wireless/fuotaTasks) (FUOTA タスク) タブに移動して、**[Create FUOTA task]** (FUOTA タスクの作成) を選択します。

1. 

**FUOTA タスクの作成**

   FUOTA タスクを作成するには、タスクのプロパティとタグを指定します。

   1. 

**FUOTA タスクのプロパティの指定**  
FUOTA タスクのプロパティを指定するには、FUOTA タスクについて次の情報を入力します。
      + **Name** (名前): FUOTA タスクの一意の名前を入力します。名前には、文字、数字、ハイフン、またはアンダースコアのみを使用できます。スペースを含めることはできません。
      + **Description** (説明): マルチキャストグループの説明をオプションで提供できます。説明フィールドは最大 2,048 文字です。
      + **RFRegion**: FUOTA タスクの周波数帯域を設定します。周波数帯域は、ワイヤレスデバイスまたはマルチキャストグループのプロビジョニングに使用したものと一致する必要があります。

   1. 

**FUOTA タスクのタグ**  
オプションで、FUOTA タスクの **Tags** (タグ) として、任意のキーと値の組み合わせを指定できます。イメージの作成を続行するには、**[Next]** (次へ) を選択します。

1. 

**ファームウェアイメージのアップロード**

   FUOTA タスクに追加するデバイスにおけるファームウェアの更新に使用するファームウェアのイメージファイルを選択します。ファームウェアのイメージファイルは S3 バケットに保存されます。お客様に代わってファームウェアイメージにアクセスするアクセス許可を AWS IoT Core for LoRaWAN に与えることができます。ファームウェアイメージにデジタル署名して、ファームウェアの更新時にその信頼性が確認できるようにすることをお勧めします。

   1. 

**ファームウェアのイメージファイルを選択する**  
ファームウェアの新しいイメージファイルを S3 バケットにアップロードするか、既に S3 バケットにアップロードされている既存のイメージを選択できます。
**注記**  
ファームウェアのイメージファイルのサイズは 1 メガバイトを超えてはいけません。ファームウェアのサイズが大きいほど、更新プロセスの完了に時間がかかります。
      + 既存のイメージを使用するには、**[Select an existing firmware image]** (既存のファームウェアイメージを選択する) を選択し、**[Browse S3]** (S3 をブラウズする) を選択します。その後、使用するファームウェアのイメージファイルを選択します。

        AWS IoT Core for LoRaWAN により、S3 バケット内にあるファームウェアのイメージファイルへのパスである S3 URL が設定されます。パスの形式は `s3://bucket_name/file_name` です。[Amazon Simple Storage Service](https://console.aws.amazon.com/s3/) コンソールでファイルを表示するには、**[View]** (表示) を選択します。
      + 新しいファームウェアイメージをアップロードするには。

        1. **[Upload a new firmware image]** (新しいファームウェアイメージをアップロード) を選択し、ファームウェアイメージをアップロードします。イメージファイルは 1 メガバイトを超えてはいけません。

        1. S3 バケットを作成し、ファームウェアイメージファイルを保存するための **Bucket name** (バケット名) を入力するには、**[Create S3 bucketS3]** (S3 バケットの作成) を選択します。

   1. 

**バケットへのアクセス許可**  
新しいサービスロールを作成するか、既存のロールを選択して、AWS IoT Core for LoRaWAN がお客様に代わって S3 バケット内にあるファームウェアのイメージファイルにアクセスすることを許可できます。[**Next**] を選択します。

      新しいロールを作成するには、ロール名を入力するか、空白のままにするとランダムな名前が自動的に生成されます。S3 バケットへのアクセスを許可するポリシーのアクセス許可を表示するには、**[View policy permissions]** (ポリシーのアクセス許可を表示する) を選択します。

   S3 バケットを使用してイメージを保存し、AWS IoT Core for LoRaWAN にアクセスを許可する方法の詳細については、「[S3 バケットにファームウェアファイルをアップロードし、IAM ロールを追加する](lorawan-upload-firmware-s3bucket.md)」を参照してください。

1. 

**確認と作成**

   FUOTA タスクを作成するには、指定した FUOTA タスクと設定の詳細を確認し、**[Create task]** (タスクの作成) を選択します。

## API を使用して FUOTA タスクを作成しファームウェアイメージをアップロードする
<a name="lorawan-fuota-task-api"></a>

API を使用して FUOTA タスクを作成し、ファームウェアのイメージファイルを指定するには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-fuota-task.html) CLI コマンドを使用します。`create-fuota-task` コマンドへの入力として `input.json` ファイルを指定できます。API または CLI を使用する際、入力として指定するファームウェアのイメージファイルは、既に S3 バケットにアップロードされている必要があります。また、AWS IoT Core for LoRaWAN が S3 バケット内のファームウェアイメージにアクセスできるようにする IAM ロールを指定します。

```
aws iotwireless create-fuota-task \
    --cli-input-json file://input.json
```

各パラメータの意味は次のとおりです。

**input.json の内容**

```
{   
   "Description": "FUOTA task to update firmware of devices in multicast group.",
   "FirmwareUpdateImage": "S3:/firmware_bucket/firmware_image
   "FirmwareUpdateRole": "arn:aws:iam::123456789012:role/service-role/ACF1zBEI"
   "LoRaWAN": { 
      "RfRegion": "US915"
   },
   "Name": "FUOTA_Task_MC"  
}
```

FUOTA タスクを作成したら、次の API オペレーションまたは CLI コマンドを使用して、FUOTA タスクに関する情報を更新、削除、取得できます。
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateFuotaTask) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-fuota-task.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetFuotaTask) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListFuotaTasks](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListFuotaTasks) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-fuota-tasks.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-fuota-tasks.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteFuotaTask) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-fuota-task.html) 

## 次のステップ
<a name="lorawan-fuota-next-steps"></a>

FUOTA タスクを作成し、ファームウェアイメージを指定したので、ファームウェアの更新のためタスクにデバイスを追加できます。個々のデバイスまたはマルチキャストグループをタスクに追加できます。詳細については、「[は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする](lorawan-fuota-add-devices.md)」を参照してください。

# は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする
<a name="lorawan-fuota-add-devices"></a>

FUOTA タスクを作成したら、ファームウェアを更新するデバイスをタスクに追加できます。デバイスが FUOTA タスクに正常に追加されたら、FUOTA セッションをスケジュールしてデバイスのファームウェアを更新できます。
+ デバイスの数が少ない場合、それらのデバイスを FUOTA タスクに直接追加できます。
+ ファームウェアを更新するデバイスの数が多い場合、これらのデバイスをマルチキャストグループに追加して、マルチキャストグループを FUOTA タスクに追加できます。マルチキャストグループの作成と使用の詳細については、「[マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)」を参照してください。

**注記**  
FUOTA タスクには、個々のデバイスまたはマルチキャストグループを追加できます。デバイスとマルチキャストグループの両方をタスクに追加することはできません。

デバイスまたはマルチキャストグループを追加したら、ファームウェアの更新セッションを開始できます。AWS IoT Core for LoRaWAN ではファームウェアイメージが収集され、イメージがフラグメント化されます。その後、暗号化された形式でフラグメントが保存されます。エンドデバイスによりフラグメントが収集され、新しいファームウェアイメージが適用されます。ファームウェアの更新にかかる時間は、イメージのサイズとフラグメントの方法によって異なります。ファームウェアの更新が完了すると、AWS IoT Core for LoRaWAN で保存したファームウェアイメージの暗号化されたフラグメントは削除されます。削除後も S3 バケット内でファームウェアイメージを見つけることができます。

## 前提条件
<a name="lorawan-fuota-devices-prereq"></a>

FUOTA タスクにデバイスまたはマルチキャストグループを追加する前に、次の操作を実行してください。
+ FUOTA タスクを作成し、ファームウェアイメージを指定しておく必要があります。詳細については、「[FUOTA タスクを作成およびファームウェアイメージの指定](lorawan-fuota-create-task.md)」を参照してください。
+ デバイスのファームウェアを更新するワイヤレスデバイスをプロビジョニングします。デバイスのオンボーディングの詳細については、「[デバイスを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-end-devices.md)」を参照してください。
+ 複数のデバイスのファームウェアを更新するには、それらをマルチキャストグループに追加します。詳細については、「[マルチキャストグループを作成してダウンリンクのペイロードを複数のデバイスに送信する](lorawan-multicast-groups.md)」を参照してください。
+ デバイスを AWS IoT Core for LoRaWAN にオンボードする際、FUOTA の設定パラメータ `FPorts` を指定します。LoRaWAN v1.0.x デバイスを使用している場合は、`GenAppKey` も指定する必要があります。FUOTA の設定パラメータの詳細については、「[マルチキャストおよび FUOTA 設定用のデバイスを準備する](lorawan-prepare-devices-multicast.md)」を参照してください。

## コンソールを使用して FUOTA タスクにデバイスを追加し FUOTA セッションをスケジュールする
<a name="lorawan-fuota-devices-console"></a>

コンソールを使用してデバイスまたはマルチキャストグループを追加し、FUOTA セッションをスケジュールするには、コンソールの [[FUOTA tasks]](https://console.aws.amazon.com/iot/home#/wireless/fuotaTasks) (Fuota タスク) タブに移動します。次に、デバイスを追加する FUOTA タスクを選択し、ファームウェアの更新を実行します。

**デバイスおよびマルチキャストグループの追加**

1. FUOTA タスクには、個々のデバイスまたはマルチキャストグループを追加できます。ただし、個々のデバイスとマルチキャストグループの両方を同じ FUOTA タスクに追加することはできません。コンソールを使用してデバイスを追加するには、次の操作を実行します。

   1. **[FUOTA task details]** (FUOTA タスクの詳細) で、**[Add device]** (デバイスの追加) を選択します。

   1. タスクに追加するデバイスの **RFRegion** または周波数帯域を選択します。この値は、FUOTA タスク用に選択した **RFRegion** と一致する必要があります。

   1. 個々のデバイスとマルチキャストグループのどちらにタスクに追加するかを選択します。
      + 個々のデバイスを追加するには、**[Add individual devices]** (個々のデバイスを追加する) をクリックし、FUOTA タスクに追加する各デバイスのデバイス ID を入力します。
      + マルチキャストグループを追加するには、**[Add multicast groups]** (マルチキャストグループを追加する) をクリックし、タスクにマルチキャストグループを追加します。デバイスのプロファイルまたはタグを使用して、タスクに追加するマルチキャストグループをフィルタリングできます。デバイスプロファイルでフィルタリングする場合、**[Supports Class B]** (クラス B をサポート) または **[Supports Class C]** (クラス C をサポート) が有効なプロファイルを持つデバイスのマルチキャストグループを選択できます。

1. 

**FUOTA セッションのスケジュール**

   デバイスまたはマルチキャストグループが正常に追加されたら、FUOTA セッションをスケジュールできます。セッションをスケジュールするには、次の操作を実行します。

   1. デバイスのファームウェアを更新する FUOTA タスクを選択し、**[Schedule FUOTA session]** (FUOTA セッションのスケジュール) を選択します。

   1. FUOTA セッションの**[Start date]** (開始日) および**[Start time]** (開始時刻) を指定します。開始時刻が現在の時刻から 30 分以上後であることを確認してください。

## API を使用して FUOTA タスクにデバイスを追加し FUOTA セッションをスケジュールする
<a name="lorawan-fuota-devices-api"></a>

AWS IoT Wireless API または CLI を使用して、ワイヤレスデバイスまたはマルチキャストグループを FUOTA タスクに追加できます。その後、FUOTA セッションをスケジュールできます。

1. 

**デバイスおよびマルチキャストグループの追加**

   ワイヤレスデバイスまたはマルチキャストグループを FUOTA タスクに関連付けることができます。
   + FUOTA タスクに個々のデバイスを関連付けるには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-wireless-device-with-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-wireless-device-with-fuota-task.html) CLI コマンドを使用し、入力として `WirelessDeviceID` を指定します。

     ```
     aws iotwireless associate-wireless-device-with-fuota-task \
         --id "01a23cde-5678-4a5b-ab1d-33456808ecb2"
         --wireless-device-id "ab0c23d3-b001-45ef-6a01-2bc3de4f5333"
     ```
   + マルチキャストグループを FUOTA タスクに関連付けるには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateMulticastGroupWithFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateMulticastGroupWithFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-multicast-group-with-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/associate-multicast-group-with-fuota-task.html) CLI コマンドを使用し、入力として `MulticastGroupID` を指定します。

     ```
     aws iotwireless associate-multicast-group-with-FUOTA-task \
         --id 01a23cde-5678-4a5b-ab1d-33456808ecb2"
         --multicast-group-id
     ```

   ワイヤレスデバイスまたはマルチキャストグループを FUOTA タスクに関連付けた後、次の API オペレーションまたは CLI コマンドを使用して、デバイスまたはマルチキャストグループを一覧表示したり、タスクから関連付けを解除できます。
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateWirelessDeviceFromFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateWirelessDeviceFromFuotaTask.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-wireless-device-from-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-wireless-device-from-fuota-task.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateMulticastGroupFromFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DisassociateMulticastGroupFromFuotaTask.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-multicast-group-from-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/disassociate-multicast-group-from-fuota-task.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-multicast-group.html) 
   + [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListMulticastGroups.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListMulticastGroups.html) 、、または [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-multicast-groups.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-multicast-groups.html) 
**注記**  
API:  
`MulticastGroupID` では、`ListWirelessDevices` がフィルタとして使用される際に、一般的なワイヤレスデバイスおよびマルチキャストグループに関連付けられたデバイスを一覧表示できます。この API では、`FuotaTaskID` がフィルタとして使用される際に、FUOTA タスクに関連付けられているワイヤレスデバイスが一覧表示されます。
`ListMulticastGroups` では、`FuotaTaskID` がフィルタとして使用される際に、一般的なマルチキャストグループおよび FUOTA タスクに関連付けられたマルチキャストグループを一覧表示できます。

1. 

**FUOTA セッションのスケジュール**

   デバイスまたはマルチキャストグループが FUOTA タスクに正常に追加されたら、FUOTA セッションを開始してデバイスのファームウェアを更新できます。開始時刻は、現在の時刻から 30 分以上後である必要があります。API または CLI を使用して FUOTA セッションをスケジュールするには、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_StartFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/start-fuota-task.html) CLI コマンドを使用します。

   FUOTA セッションの開始後は、タスクにデバイスまたはマルチキャストグループを追加できなくなります。[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GettFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GettFuotaTask.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html) CLI コマンドを使用すると、FUOTA セッションのステータスに関する情報を得ることができます。

# FUOTA タスクとタスクに追加されたデバイスのステータスを監視およびトラブルシューティングします。
<a name="lorawan-fuota-status"></a>

ワイヤレスデバイスをプロビジョニングし、使用する可能性のあるマルチキャストグループを作成したら、次の手順を実行して FUOTA セッションを開始できます。

## FUOTA タスクのステータス
<a name="lorawan-fuota-task-status"></a>

FUOTA タスクには、AWS マネジメントコンソール で次のステータスメッセージのいずれかが表示されます。
+ 

**保留中**  
このステータスは、FUOTA タスクを作成したが、まだファームウェアの更新セッションがないことを示します。タスクが作成されると、このステータスメッセージが表示されます。この間は、FUOTA タスクを更新できます。また、デバイスまたはマルチキャストグループをタスクと関連付けたり、関連付けを解除できます。ステータスが **[Pending]** (保留中) から変更された後は、タスクに他のデバイスを追加することはできません。
+ 

**FUOTA セッションの待機中**  
デバイスが FUOTA タスクに正常に追加されると、タスクにファームウェアの更新セッションがスケジュールされている場合、このステータスメッセージが表示されます。この間、デバイスを更新したり FUOTA セッションに追加することはできません。FUOTA セッションをキャンセルすると、グループのステータスは **[Pending]** (保留中) に変わります。
+ 

**FUOTA セッション中**  
FUOTA セッションが開始されると、このステータスメッセージが表示されます。フラグメンテーションセッションが開始され、エンドデバイスによりフラグメントが収集され、ファームウェアイメージが再構築されます。また、新しいファームウェアバージョンが元のバージョンと比較され、新しいイメージが適用されます。
+ 

**FUOTA の完了**  
新しいファームウェアイメージが適用されたことがエンドデバイスにより AWS IoT Core for LoRaWAN に報告された後、またはセッションのタイムアウト時に FUOTA セッションは完了としてマークされ、このステータスが表示されます。

  また、次のいずれかの場合もこのステータスが表示されるので、ファームウェアの更新がデバイスに正しく適用されたかどうかを確認してください。
  + FUOTA タスクのステータスが **[FUOTA session waiting]** (FUOTA セッションの待機中) で、S3 バケット内のイメージファイルへのリンクが間違っている、AWS IoT Core for LoRaWAN にバケット内のファイルにアクセスするための十分なアクセス許可がないなどの S3 バケットのエラーがある場合。
  + FUOTA タスクのステータスが **[FUOTA session waiting]** (FUOTA セッションの待機中) で、FUOTA セッションを開始するリクエストがあるが、FUOTA タスクのデバイスまたはマルチキャストグループからのレスポンスが受信されない場合。
  + FUOTA タスクのステータスが **[In FUOTA session]** (FUOTA セッション中) で、デバイスまたはマルチキャストグループが一定期間フラグメントを送信していないため、セッションがタイムアウトになっている場合。
+ 

**削除の待機中**  
他の状態にある FUOTA タスクを削除すると、このステータスが表示されます。削除は永続的で、元に戻すことができません。この操作には時間がかかる場合があり、FUOTA タスクが削除されるまでタスクのステータスは **[Delete waiting]** (削除の待機中) です。FUOTA タスクがこの状態に入った後は、他のステータスに移行することはできません。

## FUOTA タスクでのデバイスのステータス
<a name="lorawan-fuota-device-status"></a>

FUOTA タスクのデバイスには、AWS マネジメントコンソール で次のステータスメッセージのいずれかが表示されます。各ステータスメッセージにカーソルを合わせると、そのメッセージが示す内容の詳細を確認できます。
+ 

**初期**  
FUOTA セッションの開始時、AWS IoT Core for LoRaWAN によりデバイスにファームウェアの更新でサポートされているパッケージがあるかどうかがが確認されます。デバイスにサポートされているパッケージがある場合、デバイスの FUOTA セッションが開始します。ファームウェアイメージがフラグメント化され、フラグメントがデバイスに送信されます。このステータスが表示された場合、デバイスの FUOTA セッションはまだ開始していません。
+ 

**パッケージはサポートされていません**  
デバイスにサポートされている FUOTA パッケージがない場合は、このステータスが表示されます。ファームウェアの更新パッケージがサポートされていない場合、デバイスの FUOTA セッションを開始できません。このエラーを解決するには、FUOTA を使用してデバイスのファームウェアがファームウェアの更新を受信できるかどうかを確認します。
+ 

**フラグメンテーションアルゴリズムはサポートされていません**  
FUOTA セッションの開始時に、AWS IoT Core for LoRaWAN によりデバイスのフラグメンテーションのセッションが設定されます。このステータスが表示された場合、使用するフラグメンテーションアルゴリズムの種類をデバイスのファームウェアの更新に適用できないことを意味します。このエラーは、使用するデバイスにサポートされている FUOTA パッケージがないために発生します。このエラーを解決するには、FUOTA を使用してデバイスのファームウェアがファームウェアの更新を受信できるかどうかを確認します。
+ 

**メモリが足りない**  
AWS IoT Core for LoRaWAN によりイメージのフラグメントが送信された後、エンドデバイスによりそれらが収集されます。その後これらのフラグメントからバイナリイメージが再構築されます。このステータスは、デバイスにファームウェアイメージの受信フラグメントを組み合わせるのに十分なメモリがない場合に表示されます。そのために、ファームウェアの更新セッションが途中で終了する可能性があります。このエラーを解決するには、デバイスのハードウェアがこの更新を受信できるかどうかを確認します。使用しているデバイスでこの更新を受信できない場合は、デルタイメージを使用してファームウェアを更新します。
+ 

**フラグメンテーションのインデックスはサポートされていません**  
フラグメンテーションのインデックスは、同時に実行できる 4 つのフラグメンテーションのセッションのうち 1 つを識別します。デバイスが指定されたフラグメンテーションのインデックス値をサポートしていない場合、このステータスが表示されます。この問題を解決するには、次のいずれかの操作を実行します。
  + デバイス用に新しい FUOTA タスクを開始します。
  + エラーが解決しない場合は、ユニキャストモードからマルチキャストモードに切り替えます。
  + それでもエラーが解決しない場合は、デバイスのファームウェアを確認してください。
+ 

**メモリエラー**  
このステータスは、AWS IoT Core for LoRaWAN から受信フラグメントを受信した際に、デバイスにメモリエラーが発生したことを示します。このエラーが発生した場合、デバイスはこの更新プログラムを受信できない可能性があります。このエラーを解決するには、デバイスのハードウェアがこの更新を受信できるかどうかを確認します。必要に応じて、デルタイメージを使用してデバイスのファームウェアを更新します。
+ 

**不適切な記述子**  
デバイスが、指定された記述子をサポートしていません。記述子は、フラグメンテーションのセッション中に転送されるファイルを記述するフィールドです。このエラーが表示された場合は、[AWS サポート Center](https://console.aws.amazon.com/support/home#/) ( センター) にお問い合わせください。
+ 

**セッションカウントのリプレイ**  
このステータスは、デバイスがこのセッションカウントを以前に使用したことを示します。このエラーを解決するには、デバイス用に新しい FUOTA タスクを開始します。
+ 

**フラグメントが見つかりません**  
デバイスにより AWS IoT Core for LoRaWAN からイメージのフラグメントが収集される際、コード化され独立したフラグメントから新しいファームウェアイメージが再構築されます。デバイスがすべてのフラグメントを受信していない場合、新しいイメージを再構築できず、このステータスが表示されます。このエラーを解決するには、デバイス用に新しい FUOTA タスクを開始します。
+ 

**MIC エラー**  
収集されたフラグメントから新しいファームウェアイメージがデバイスにより再構築されると、MIC (Message Integrity Check) が実行され、イメージの信頼性と、それが正しいソースから取得されているかどうかが確認されます。フラグメントの再構成後、デバイスにより MIC の不一致が検出されると、このステータスが表示されます。このエラーを解決するには、デバイス用に新しい FUOTA タスクを開始します。
+ 

**Successful**  
デバイスの FUOTA セッションが成功しました。
**注記**  
このステータスメッセージは、デバイスによりフラグメントからイメージが再構築され、それが確認できたことを示します。しかし、デバイスにより AWS IoT Core for LoRaWAN にステータスが報告されたときに、デバイスファームウェアが更新されていない可能性があります。デバイスのファームウェアが更新されているかどうかを確認してください。

## 次のステップ
<a name="lorawan-fuota-device-next"></a>

FUOTA タスクとそのデバイスのさまざまなステータス、および問題のトラブルシューティングの方法について学習しました。これらの各ステータスの詳細については、「[LoRaWAN Fragmented Data Block Transportation Specification, TS004-1.0.0](https://lora-alliance.org/wp-content/uploads/2020/11/fragmented_data_block_transport_v1.0.0.pdf)」を参照してください。

# ネットワークアナライザを使用したワイヤレスリソースフリートのリアルタイムでのモニタリング
<a name="network-analyzer-overview"></a>

ネットワークアナライザは、デフォルトの WebSocket 接続を使用して、ワイヤレス接続リソースのリアルタイムトレースメッセージログを受信します。ネットワークアナライザを使用すると、モニタリングするリソースを追加し、トレースメッセージングセッションをアクティブ化し、リアルタイムでトレースメッセージの受信を開始できます。

リソースをモニタリングするには、Amazon CloudWatch を使用することもできます。CloudWatch を使用するには、IAM ロールをセットップしてログ記録を設定し、ログエントリがコンソールに表示されるのを待ちます。ネットワークアナライザを使用すると、接続のセットアップとトレースメッセージの受信開始にかかる時間が大幅に短縮され、リソースのフリートに関するジャストインタイムのログ情報を取得できます。CloudWatch を使用したモニタリングについては、「[Amazon CloudWatch Logs を使用した AWS IoT Wireless リソースのモニタリング](monitoring-cloudwatch.md)」を参照してください。

セットアップ時間を短縮し、トレースメッセージの情報を使用することで、リソースをより効果的にモニタリングし、有意義な洞察を得て、エラーのトラブルシューティングを行うことができます。LoRaWAN デバイスと LoRaWAN ゲートウェイの両方をモニタリングできます。例えば、LoRaWAN デバイスの 1 つのオンボーディング時に、参加エラーをすばやく特定できます。エラーをデバッグするには、提供されたトレースメッセージログの情報を使用します。

**ネットワークアナライザの使用方法**  
リソースフリートをモニタリングし、トレースメッセージの受信を開始するには、次の手順を実行します。

1. 

**ネットワークアナライザの設定を作成し、リソースを追加する**  
トレースメッセージングをアクティブ化する前に、ネットワークアナライザ設定を作成し、設定にリソースを追加します。まず、ログレベルとワイヤレスデバイスのフレーム情報を含む設定を指定します。次に、ワイヤレスゲートウェイとワイヤレスデバイス ID を使用して、モニタリングするワイヤレスリソースを追加します。

1. 

**WebSockets を使用してトレースメッセージをストリーミングする**  
IAM ロールの認証情報を使用して署名済みのリクエスト URL を生成し、WebSocket プロトコルを使用してネットワークアナライザートレースメッセージをストリーミングできます。

1. 

**トレースメッセージングセッションをアクティブ化し、トレースメッセージをモニタリングする**  
トレースメッセージの受信を開始するには、トレースメッセージングセッションをアクティブにします。追加コストが発生しないようにするには、ネットワークアナライザのトレースメッセージングセッションを非アクティブ化するか、閉じます。

 次の動画では、AWS IoT Core for LoRaWAN ネットワークアナライザの仕組みについて説明し、ネットワークアナライザを使用してリソースを追加し、結合アクティビティをトレースするプロセスについて説明します。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/Qk9pkhL8xjc/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/Qk9pkhL8xjc)


次のトピックでは、設定を作成し、リソースを追加し、トレースメッセージングセッションをアクティブ化する方法を示します。

**Topics**
+ [ネットワークアナライザに必要な IAM ロールを追加する](network-analyzer-iam.md)
+ [ネットワークアナライザの設定を作成し、リソースを追加する](network-analyzer-create-resources.md)
+ [WebSockets を使用してネットワークアナライザのトレースメッセージをストリーミングする](network-analyzer-api.md)
+ [ネットワークアナライザのトレースメッセージログをリアルタイムで表示およびモニタリングする](network-analyzer-logs.md)
+ [ネットワークアナライザを使用してマルチキャストグループと FUOTA タスクのデバッグとトラブルシューティングを行う](lorawan-network-analyzer-fuota.md)

# ネットワークアナライザに必要な IAM ロールを追加する
<a name="network-analyzer-iam"></a>

ネットワークアナライザを使用する場合は、API オペレーションを使用する権限をユーザーに付与する必要があります。[UpdateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) そして [GetNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetNetworkAnalyzerConfiguration.html) をクリックして、ネットワークアナライザリソースにアクセスします。以下に、権限を付与するために使用する IAM ポリシーを示します。

## ネットワークアナライザの IAM ポリシー
<a name="network-analyzer-policies"></a>

以下のいずれかを実行してみてください。
+ 

**フルアクセスワイヤレスポリシー**  
ロールにポリシー **AWSIoTWirelessFullAccess** をアタッチして、AWS IoT Core for LoRaWAN にフルアクセスポリシーを付与します。詳細については、「[`AWSIoTWirelessFullAccess` ポリシーの概要](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTWirelessFullAccess$serviceLevelSummary)」を参照してください。
+ 

**API を取得および更新するためのスコープ付き IAM ポリシー**  
IAM コンソールの [[Create policy]](https://console.aws.amazon.com/iam/home#/policies$new?step=edit) (ポリシーの作成) ページで、**[Visual editor]** (ビジュアルエディタ) タブを開き、以下の IAM ポリシーを作成します。

  1. **[Service]** (サービス) には **[IoTWireless]** を選択します。

  1. **[Access level]** (アクセスレベル) で **[Read]** (読み取り) を展開して **[GetNetworkAnalyzerConfiguration]** を選択し、**[Wrtite]** (書き込み) を展開して **[UpdateNetworkAnalyzerConfiguration]** を選択してください。

  1. **[Next:Tags]** (次へ: タグ) を選択し、**[IoTWirelsesNetworkAnalyzerPolicy]** など、ポリシーの **[Name]** (名前) を入力します。[**Create policy**] (ポリシーの作成) を選択します。

  以下は、ユーザーが作成したポリシー **[IoTWirelessNetworkAnalyzerPolicy]** を示しています。ポリシー作成の詳細については、「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create)」を参照してください。

  ```
  {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "VisualEditor0",
              "Effect": "Allow",
              "Action": [
                  "iotwireless:GetNetworkAnalyzerConfiguration",
                  "iotwireless:UpdateNetworkAnalyzerConfiguration"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

**特定のリソースにアクセスするためのスコープ付きポリシー**  
よりきめ細かなアクセスコントロールを設定するには、ワイヤレスゲートウェイとデバイスを **[Resource]** (リソース) フィールドに追加する必要があります。次のポリシーでは、ワイルドカード ARN を使用して、すべてのゲートウェイとデバイスへのアクセスを許可します。`WirelessGatewayId` および `WirelessDeviceId` を使用して、特定のゲートウェイおよびデバイスへのアクセスを制御できます。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iotwireless:GetNetworkAnalyzerConfiguration",
                "iotwireless:UpdateNetworkAnalyzerConfiguration"
            ],
            "Resource": [
                "arn:aws:iotwireless:*:{accountId}:WirelessDevice/*", 
                "arn:aws:iotwireless:*:{accountId}:WirelessGateway/*", 
                "arn:aws:iotwireless:*:{accountId}:NetworkAnalyzerConfiguration/*"
            ]
        }
    ]
}
```

ネットワークアナライザを使用するものの、ワイヤレスゲートウェイまたはデバイスを使用しない権限をユーザーに付与するには、次のポリシーを使用します。指定しない限り、リソースを使用する権限は暗黙的に拒否されます。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iotwireless:GetNetworkAnalyzerConfiguration",
                "iotwireless:UpdateNetworkAnalyzerConfiguration"
            ],
            "Resource": [                
                "arn:aws:iotwireless:*:{accountId}:NetworkAnalyzerConfiguration/*"
            ]
        }
    ]
}
```

## 次のステップ
<a name="network-analyzer-iam-next"></a>

ポリシーを作成したので、ネットワークアナライザの設定にリソースを追加し、それらのリソースのトレースメッセージング情報を受け取ることができるようになりました。詳細については、「[ネットワークアナライザの設定を作成し、リソースを追加する](network-analyzer-create-resources.md)」を参照してください。

# ネットワークアナライザの設定を作成し、リソースを追加する
<a name="network-analyzer-create-resources"></a>

トレースメッセージをストリーミングする前に、ネットワークアナライザ設定を作成し、モニタリングするリソースをこの設定に追加します。設定を作成すると、次のことができます。
+ 設定名とオプションの説明を指定します。
+ ログメッセージのフレーム情報や詳細レベルなどの設定をカスタマイズします。
+ モニタリングするリソースを追加します。リソースは、ワイヤレスデバイスまたはワイヤレスゲートウェイ、もしくはその両方にすることができます。

指定した構成設定によって、設定に追加するリソースについて受信するトレースメッセージング情報が決まります。モニタリングするユースケースに応じて、複数の設定を作成することもできます。

以下は、設定を作成してリソースを追加する方法を示しています。

**Topics**
+ [ネットワークアナライザの設定を作成する](network-analyzer-create.md)
+ [リソースを追加し、ネットワークアナライザの設定を更新する](network-analyzer-resources.md)

# ネットワークアナライザの設定を作成する
<a name="network-analyzer-create"></a>

ワイヤレスゲートウェイまたはワイヤレスデバイスをモニタリングする前に、ネットワークアナライザ設定を作成する必要があります。設定を作成するときは、設定名を指定するだけです。作成した後でも、設定をカスタマイズし、モニタリングするリソースを設定に追加できます。設定によって、それらのリソースについて受信するトレースメッセージング情報が決まります。

モニタリングするリソースとそれらに対して受信する情報のレベルに応じて、複数の設定を作成できます。例えば、AWS アカウント の一連のゲートウェイについてのエラー情報のみを表示する設定を作成できます。モニタリングするワイヤレスデバイスに関するすべての情報を表示する設定を作成することもできます。

次のセクションでは、さまざまな設定と、設定の作成方法について説明します。

## 構成設定
<a name="network-analyzer-config-settings"></a>

ネットワークアナライザ設定を作成または更新するときに、次のパラメータをカスタマイズしてログストリーム情報をフィルタリングすることもできます。
+ 

**フレーム情報**  
この設定は、トレースメッセージについてのワイヤレスデバイスリソースのフレーム情報です。フレーム情報は、ネットワークサーバーとエンドデバイス間の通信のデバッグに使用できます。このエージェントは、デフォルトでは有効になっています。
+ 

**ログレベル**  
情報ログまたはエラーログを表示したり、ログ記録をオフにしたりできます。
  + 

**情報**  
ログレベルが **[Info]** (情報) のログは冗長性が高く、エラーログストリームと情報ログストリームの両方を含みます。情報ログは、デバイスまたはゲートウェイの状態の変更を表示するために使用できます。
**注記**  
冗長性が高いログストリームを収集すると、追加コストが発生する可能性があります。料金の詳細については、「[AWS IoT Core の料金](https://aws.amazon.com/iot-core/pricing/)」を参照してください。
  + 

**エラー**  
ログレベルが **Error** のログは冗長性が低く、エラー情報のみを表示します。これらのログは、アプリケーションにデバイス接続エラーなどのエラーがあるときに使用できます。ログストリームの情報を使用して、フリート内のリソースのエラーを特定し、トラブルシューティングできます。

## コンソールを使用して設定を作成する
<a name="network-analyzer-create-configuration-console"></a>

AWS IoT コンソールまたは AWS IoT Wireless API を使用して、ネットワークアナライザ設定を作成し、オプションパラメータをカスタマイズできます。また、複数の設定を作成し、後で使用しなくなった設定を削除することもできます。

**ネットワークアナライザの設定を作成する**  


1. [AWS IoT コンソールのネットワークアナライザハブ](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)を開いて、[**Create configuration**] (設定の作成) を選択します。

1. 設定を指定します。
   + 

**名前、説明、タグ**  
英字、数字、ハイフン、またはアンダースコアのみを含む、一意の [**Configuration name**] (設定名) を指定します。オプションの **[Description]** (説明) フィールドを使用して設定に関する情報を指定し、**[Tags]** (タグ) フィールドを使用して設定に関するメタデータのキーバリューペアを追加します。リソースの命名と説明の詳細については、[AWS IoT Wireless リソースについて説明する](iotwireless-describe-resources.md) を参照してください。
   + 

**構成設定**  
フレーム情報を無効にするかどうかを選択し、**[Select log levels]** (ログレベルの選択) を使用して、トレースメッセージログに使用するログレベルを選択します。[**Next**] を選択します。

1. 設定にリソースを追加します。今すぐリソースを追加するか、**[Create]** (作成) を選択して、後でリソースを追加することもできます。後でリソースを追加するには、**[Create]** (作成) を選択します。

   **[Network Analyzer hub page]** (ネットワークアナライザハブページ) には、作成した設定とその構成が表示されます。新しい設定の詳細を表示するには、設定名を選択します。

**ネットワークアナライザの設定を削除する**  


モニタリングするリソースと、そのリソースに対して受け取るトレースメッセージング情報のレベルに応じて、複数のネットワークアナライザ設定を作成することができます。

**コンソールから設定を削除するには**

1. [AWS IoT コンソールのネットワークアナライザハブ](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)に移動し、削除する設定を選択します。

1. **[アクション]** を選択し、**[削除]** を選択します。

## API を使用して設定を作成する
<a name="network-analyzer-create-configuration-api"></a>

API を使用してネットワークアナライザーの設定を作成するには、[CreateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateNetworkAnalyzerConfiguration.html) API オペレーションまたは [create-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-network-analyzer-configuration.html) CLI コマンドを使用します。

設定を作成するときは、設定名を指定するだけです。この API オペレーションを使用して、構成設定を指定し、設定の作成時にリソースを追加することもできます。または、[UpdateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) API オペレーションまたは [update-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-network-analyzer-configuration.html) CLI を使用して、後で指定することもできます。
+ 

**設定を作成する**  
設定の作成時に、名前を指定する必要があります。例えば、次のコマンドでは、名前とオプションの説明のみを指定して、設定を作成します。デフォルトでは、フレーム情報がアクティブ化されており、ログレベルは `INFO` を使用する設定になっています。

  ```
  aws iotwireless create-network-analyzer-configuration \ 
      --configuration-name My_Network_Analyzer_Config \ 
      --description "My first network analyzer configuration"
  ```

  このコマンドを実行すると、ネットワークアナライザ設定の ARN と ID が表示されます。

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

**リソースを使用して設定を作成する**  
構成設定をカスタマイズするには、`trace-content` パラメータを使用します。リソースを追加するには、`WirelessDevices` および `WirelessGateways` パラメータを使用して、設定に追加するゲートウェイ、デバイス、またはその両方を指定します。例えば、次のコマンドは、構成設定をカスタマイズし、`WirelessGatewayID` と `WirelessDeviceID` で指定されたワイヤレスリソースを設定に追加します。

  ```
  aws iotwireless create-network-analyzer-configuration \ 
      --configuration-name My_NetworkAnalyzer_Config \ 
      --trace-content WirelessDeviceFrameInfo=DISABLED,LogLevel="ERROR" \ 
      --wireless-gateways "12345678-a1b2-3c45-67d8-e90fa1b2c34d" "90123456-de1f-2b3b-4c5c-bb1112223cd1"   
      --wireless-devices "1ffd32c8-8130-4194-96df-622f072a315f"
  ```

  次の例は、コマンドを実行したときの出力を示しています。

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

**ネットワークアナライザ設定を一覧表示する**  
モニタリングするリソースと、そのリソースに対して受け取るトレースメッセージング情報の詳細のレベルに応じて、複数のネットワークアナライザ設定を作成することができます。これらの設定を作成した後、[ListNetworkAnalyzerConfigurations](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListNetworkAnalyzerConfigurations.html) API オペレーションまたは [list-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-network-analyzer-configuration.html) CLI コマンドを使用して、これらの設定の一覧を取得できます。

```
aws iotwireless list-network-analyzer-configurations
```

このコマンドを実行すると、AWS アカウント のすべてのネットワークアナライザ設定が表示されます。また、`max-results` パラメータを使用して、表示する設定の数を指定することができます。以下は、このコマンドを実行したときの出力を示しています。

```
{
   "NetworkAnalyzerConfigurationList": [ 
      { 
         "Arn": "arn:aws:iotwireless:us-east-1:123456789012:NetworkAnalyzerConfiguration/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
         "Name": "My_Network_Analyzer_Config1"
      },
      { 
         "Arn": "arn:aws:iotwireless:us-east-1:123456789012:NetworkAnalyzerConfiguration/90123456-a1a2-9a87-65b4-c12bf3c2d09a",
         "Name": "My_Network_Analyzer_Config2"
      }
   ]
}
```

**ネットワークアナライザの設定を削除する**  
[DeleteNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteNetworkAnalyzerConfiguration.html) API オペレーションまたは [delete-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-network-analyzer-configuration.html) CLI コマンドを使用して、使用しなくなった設定を削除できます。

```
aws iotwireless delete-network-analyzer-configuration \ 
    --configuration-name My_NetworkAnalyzer_Config
```

このコマンドを実行しても、出力は生成されません。使用可能な設定を確認するには、`ListNetworkAnalyzerConfigurations` API オペレーションを使用できます。

## 次のステップ
<a name="network-analyzer-create-next"></a>

ネットワークアナライザ設定を作成したので、設定にリソースを追加したり、構成設定を更新したりできます。詳細については、「[リソースを追加し、ネットワークアナライザの設定を更新する](network-analyzer-resources.md)」を参照してください。

# リソースを追加し、ネットワークアナライザの設定を更新する
<a name="network-analyzer-resources"></a>

トレースメッセージングをアクティブ化する前に、設定にリソースを追加する必要があります。使用できるデフォルトのネットワークアナライザ設定は 1 つだけです。AWS IoT Core for LoRaWAN によって、**NetworkAnalyzerConfig\$1Default** という名前がこの設定に割り当てられます。このフィールドは編集できません。この設定は、コンソールからネットワークアナライザを使用する場合、自動的に AWS アカウント に追加されます。

このデフォルト設定に、モニタリングするリソースを追加できます。リソースは、LoRaWAN デバイスと LoRaWAN ゲートウェイのいずれかまたは両方にすることができます。設定に個々のリソースを追加するには、ワイヤレスゲートウェイとワイヤレスデバイス ID を使用します。

## 設定
<a name="resources-config-settings"></a>

設定をするには、まずデフォルト設定にリソースを追加し、トレースメッセージングをアクティブにします。トレースメッセージログを受信したら、次のパラメータをカスタマイズしてデフォルト設定を更新し、ログストリームをフィルタリングすることもできます。
+ 

**フレーム情報**  
この設定は、トレースメッセージのワイヤレスデバイスリソースのフレーム情報です。フレーム情報はデフォルトで有効になっており、ネットワークサーバーとエンドデバイス間の通信のデバッグに使用できます。
+ 

**ログレベル**  
情報ログまたはエラーログを表示したり、ログ記録をオフにしたりできます。
  + 

**情報**  
ログレベルが **Info** のログは冗長性が高く、情報を提供しエラーを含むログストリームを含んでいます。情報ログは、デバイスまたはゲートウェイの状態の変更を表示するために使用できます。
**注記**  
冗長性が高いログストリームを収集すると、追加コストが発生する可能性があります。料金の詳細については、「[AWS IoT Core の料金](https://aws.amazon.com/iot-core/pricing/)」を参照してください。
  + 

**エラー**  
ログレベルが **Error** のログは冗長性が低く、エラー情報のみを表示します。これらのログは、アプリケーションにデバイス接続エラーなどのエラーがあるときに使用できます。ログストリームの情報を使用して、フリート内のリソースのエラーを特定し、トラブルシューティングできます。

## 前提条件
<a name="resources-prereq"></a>

リソースを追加する前に、モニタリングするゲートウェイとデバイスを AWS IoT Core for LoRaWAN にオンボーディングしておく必要があります。詳細については、「[AWS IoT Core for LoRaWAN へのゲートウェイとデバイスの接続](lorawan-getting-started.md)」を参照してください。

## コンソールを使用して、リソースを追加し、ネットワークアナライザ設定を更新する
<a name="add-resources-console"></a>

リソースを追加し、オプションパラメータをカスタマイズするには、AWS IoT コンソールまたは AWS IoT Wireless API を使用します。リソースに加えて、設定を編集し、更新された設定を保存することもできます。

**設定にリソースを追加するには (コンソール)**  


1. [AWS IoT コンソールの [Network Analyzer] (ネットワークアナライザ) ハブ](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)を開き、ネットワークアナライザの設定 **NetworkAnalyzerConfig\$1Default** を選択します。

1. **[Add resources]** (リソースを追加) を選択します。

1. ワイヤレスゲートウェイとワイヤレスデバイス ID を使用して、モニタリングするリソースを追加します。最大 250 のワイヤレスゲートウェイまたはワイヤレスデバイスを追加できます。リソースを追加するには、次の手順に従います。

   1. **[View gateways]** (ゲートウェイを表示) または **[View devices]** (デバイスを表示) タブを使用して、AWS アカウント に追加したゲートウェイとデバイスのリストを表示します。

   1. モニタリングするデバイスまたはゲートウェイの `WirelessDeviceID` または `WirelessGatewayID` をコピーし、対応するリソースの識別子の値を入力します。

   1. リソースの追加を続行するには、**[Add gateway]** (ゲートウェイを追加) または **[Add device]** (デバイスを追加) を選択し、ワイヤレスゲートウェイまたはデバイスを追加します。追加していたリソースをモニタリングする必要がなくなった場合は、**[Remove resource]** (リソースを削除) を選択します。

1. すべてのリソースを追加したら、**[Add]** (追加) をクリックします。

   追加したゲートウェイとデバイスの数が**[Network Analyzer] (ネットワークアナライザ) ハブページ** に表示されます。トレースメッセージングセッションをアクティブにするまで、ゲートウェイとデバイスをさらに続けて追加できます。セッションをアクティブ化した後、リソースを追加するには、セッションを非アクティブ化する必要があります。

**ネットワークアナライザの設定を編集するには (コンソール)**  
ネットワークアナライザの設定を編集して、トレースメッセージログのフレーム情報を無効にするかどうかとそのログレベルを選択することもできます。

1. [AWS IoT コンソールの [Network Analyzer] (ネットワークアナライザ) ハブ](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)を開き、ネットワークアナライザの設定 **NetworkAnalyzerConfig\$1Default** を選択します。

1. [**編集**] を選択します。

1. フレーム情報を無効にするかどうかを選択し、**[Select log levels]**(ログレベルの選択) を使用して、トレースメッセージログに使用するログレベルを選択します。[**Save**] を選択します。

   ネットワークアナライザの設定の詳細ページで指定した設定が表示されます。

## API を使用してリソースを追加し、ネットワークアナライザの設定を更新する
<a name="network-analyzer-add-resources-api"></a>

[AWS IoT Wireless API オペレーション](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/)または[AWS IoT Wireless CLI コマンド](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html)を使用して、リソースを追加し、ネットワークアナライザの設定を更新します。
+ リソースを追加し、ネットワークアナライザの設定を更新するには、[UpdateNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) API または [update-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-network-analyzer-configuration.html) CLI を使用します。
  + 

**リソースを追加する**  
追加するワイヤレスデバイスについては、`WirelessDevicesToAdd` を使用してデバイスの `WirelessDeviceID` を文字列の配列として入力します。追加するワイヤレスゲートウェイについては、`WirelessGatewaysToAdd` を使用してゲートウェイの `WirelessGatewayID`　を文字列の配列として入力します。
  + 

**設定を編集する**  
ネットワークアナライザの設定を編集するには、`TraceContent` パラメータを使用して、`WirelessDeviceFrameInfo` を `ENABLED` にするか `DISABLED` にするか、および `LogLevel` パラメータを `INFO`、`ERROR`、`DISABLED` のいずれにするかを指定します。

  ```
  {
     "TraceContent": { 
        "LogLevel": "string",
        "WirelessDeviceFrameInfo": "string"
     },
     "WirelessDevicesToAdd": [ "string" ],
     "WirelessDevicesToRemove": [ "string" ],
     "WirelessGatewaysToAdd": [ "string" ],
     "WirelessGatewaysToRemove": [ "string" ]
  }
  ```
+ 追加した設定とリソースに関する情報を取得するには、[GetNetworkAnalyzerConfiguration](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateNetworkAnalyzerConfiguration.html) API オペレーション、または [get-network-analyzer-configuration](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-network-analyzer-configuration.html) コマンドを使用します。ネットワークアナライザ設定 `NetworkAnalyzerConfig_Default` の名前を入力として指定します。

## 次のステップ
<a name="network-analyzer-resources-next"></a>

リソースを追加し、オプションの設定を指定したので、WebSocket プロトコルを使用して、AWS IoT Core for LoRaWAN との接続を確立し、ネットワークアナライザを使用できるようになります。その後、トレースメッセージをアクティブにして、リソースのトレースメッセージの受信を開始できます。詳細については、「[WebSockets を使用してネットワークアナライザのトレースメッセージをストリーミングする](network-analyzer-api.md)」を参照してください。

# WebSockets を使用してネットワークアナライザのトレースメッセージをストリーミングする
<a name="network-analyzer-api"></a>

WebSocket プロトコルを使用すると、ネットワークアナライザトレースメッセージをリアルタイムでストリーミングできます。リクエストを送信すると、サービスは JSON ストラクチャで応答します。トレースメッセージングをアクティブ化したら、メッセージログを使用してリソースに関する情報を取得し、エラーのトラブルシューティングを行うことができます。詳細については、「[WebSocket protocol](https://tools.ietf.org/html/rfc6455)」を参照してください。

WebSockets を使用してネットワークアナライザのトレースメッセージをストリーミングする方法を次に示します。

**Topics**
+ [WebSocket ライブラリで署名済みリクエストを生成する](network-analyzer-generate-request.md)
+ [WebSocket メッセージとステータスコード](network-analyer-messages-status.md)

# WebSocket ライブラリで署名済みリクエストを生成する
<a name="network-analyzer-generate-request"></a>

WebSocket ライブラリを使用してサービスにリクエストを送信できるように、署名済みリクエストを生成する方法を次に示します。

## IAM ロールに WebSocket リクエストのポリシーを追加する
<a name="network-analyzer-iam"></a>

WebSocket プロトコルを使用してネットワークアナライザを呼び出すには、リクエストを行う AWS Identity and Access Management (IAM) ロールに以下のポリシーをアタッチする必要があります。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iotwireless:StartNetworkAnalyzerStream",
            "Resource": "*"
        }
    ]
}
```

## 署名付き URL を作成する
<a name="network-analyzer-presigned-url"></a>

アプリケーションとネットワークアナライザとの間の通信を設定するために必要な情報を含む、WebSocket リクエストの URL を作成します。リクエストのアイデンティティを確認するために、WebSocket ストリーミングでは、署名のリクエストに Amazon 署名バージョン 4 のプロセスが使用されます。署名バージョン 4 の詳細については、*Amazon Web Services 全般のリファレンス*の「[AWS API リクエストの署名](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)」を参照してください。

ネットワークアナライザを呼び出すには、`StartNetworkAnalyzerStream` リクエスト URL を使用します。リクエストは、前述の IAM ロールの認証情報を使用して署名されます。URL は以下の形式です。読みやすさのために改行が追加されています。

```
GET wss://api.iotwireless.<region>.amazonaws.com/start-network-analyzer-stream?X-Amz-Algorithm=AWS4-HMAC-SHA256
   &X-Amz-Credential=Signature Version 4 credential scope
   &X-Amz-Date=date
   &X-Amz-Expires=time in seconds until expiration
   &X-Amz-Security-Token=security-token
   &X-Amz-Signature=Signature Version 4 signature 
   &X-Amz-SignedHeaders=host
```

署名バージョン 4 パラメータには、次の値を使用します。
+ **X-Amz-Algorithm** – 署名プロセスに使用しているアルゴリズム。唯一の有効な値は `AWS4-HMAC-SHA256` です。
+ **X-Amz-Credential** – アクセスキー ID と認証情報スコープのコンポーネントを連結して形成され、スラッシュ (/) で区切られる文字列。認証情報スコープには、YYYYMMDD 形式の日付、AWS リージョン、サービス名、および終了文字列 (aws4\$1request) が含まれます。
+ **X-Amz-Date** – 署名が作成された日時。*Amazon Web Services 全般リファレンス*の「[署名バージョン 4 の日付の処理](https://docs.aws.amazon.com/general/latest/gr/sigv4-date-handling.html)」の手順に従って、日付と時刻を生成します。
+ **X-Amz-Expires** – 認証情報が有効期限切れになるまでの時間 (秒単位)。最大値は 300 秒 (5 分) です。
+ **X-Amz-Security-Token** – (オプション) 一時的な認証情報用の署名バージョン 4 のトークン。このパラメータを指定する場合は、正規リクエストに含めます。詳細については、*AWS Identity and Access Management ユーザーガイド*の「[一時的なセキュリティ認証情報のリクエスト](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)」を参照してください。
+ **X-Amz-Signature** – リクエストに対して生成した署名バージョン 4 の署名。
+ **X-Amz-SignedHeaders** – リクエストの署名を作成するときに署名されるヘッダー。唯一の有効な値は `host` です。

## リクエスト URL を構築し、署名バージョン 4 署名を作成する
<a name="connect-iot-network-analyzer-construct-url-sign"></a>

リクエストの URL を作成し、署名バージョン 4 の署名を作成するには、次のステップを実行します。例は擬似コードで示しています。

### タスク 1: 正規リクエストを作成する
<a name="canonical-request"></a>

リクエストからの情報を含む文字列を標準化された形式で作成します。これにより、AWS は、リクエストを受け取ると、[タスク 3: 署名を計算する](#calculate-signature) でお客様が計算したものと同じ署名を計算できるようになります。詳細については、*Amazon Web Services 全般のリファレンス*の「[署名バージョン 4 の正規リクエストを作成する](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html)」を参照してください。

1. アプリケーションでリクエストの変数を定義します。

   ```
   # HTTP verb
   method = "GET"
   # Service name
   service = "iotwireless"
   # AWS リージョン
   region = "AWS リージョン"
   # Service streaming endpoint
   endpoint = "wss://api.iotwireless.region.amazonaws.com"
   # Host
   host = "api.iotwireless.<region>.amazonaws.com"
   # Date and time of request
   amz-date = YYYYMMDD'T'HHMMSS'Z'
   # Date without time for credential scope
   datestamp = YYYYMMDD
   ```

1. 正規 URI (ユニフォームリソース識別子) を作成します。正規 URI はドメインとクエリ文字列との間の URI の一部です。

   ```
   canonical_uri = "/start-network-analyzer-stream"
   ```

1. 正規ヘッダーと署名付きヘッダーを作成します。正規ヘッダーの末尾の `\n` に注意してください。
   + 小文字のヘッダー名とそれに続くコロンを追加します。
   + このヘッダーの値のカンマ区切りリストを追加します。複数の値を持つヘッダーの値はソートしないようにします。
   + 改行 (`\n`) を追加します。

   ```
   canonical_headers = "host:" + host + "\n"
   signed_headers = "host"
   ```

1. アルゴリズムをハッシュアルゴリズムに一致させます。SHA-256 を使用する必要があります｡

   ```
   algorithm = "AWS4-HMAC-SHA256"
   ```

1. 派生キーの範囲をリクエストが実行された日付、 リージョン、サービスに絞るための認証情報スコープを作成します。

   ```
   credential_scope = datestamp + "/" + region + "/" + service + "/" + "aws4_request"
   ```

1. 正規クエリ文字列を作成します。クエリ文字列値は、URI エンコードされ、名前順にソートされている必要があります。
   + パラメータ名を文字コードポイントで昇順にソートします。名前が重複しているパラメータは、値でソートする必要があります。たとえば、大文字 F で始まるパラメータ名は、小文字 b で始まるパラメータ名より前に置きます。
   + [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) が定義する非予約文字である A-Z、a-z、0-9、ハイフン (-)、アンダースコア (\$1)、ピリオド (.)、およびチルド (\$1) を、URI でエンコードしないようにします。
   + 他のすべての文字についても、%XY によるパーセントエンコードが必要です。X および Y には 16 進数文字 (0～9 および大文字の A ～ F) が入ります。例えば、スペース文字は %20 として (一部のエンコードスキームのように '\$1' を使用せずに) エンコードする必要があり、拡張 UTF-8 文字は %XY%ZA%BC 形式でエンコードする必要があります。
   + パラメータ値の等号 (=) 文字を二重エンコードします。

   ```
   canonical_querystring  = "X-Amz-Algorithm=" + algorithm
   canonical_querystring += "&X-Amz-Credential="+ URI-encode(access key + "/" + credential_scope)
   canonical_querystring += "&X-Amz-Date=" + amz_date 
   canonical_querystring += "&X-Amz-Expires=300"
   canonical_querystring += "&X-Amz-Security-Token=" + token
   canonical_querystring += "&X-Amz-SignedHeaders=" + signed_headers
   canonical_querystring += "&language-code=en-US&media-encoding=pcm&sample-rate=16000"
   ```

1. ペイロードのハッシュを作成します。GET リクエストの場合、ペイロードは空の文字列です。

   ```
   payload_hash = HashSHA256(("").Encode("utf-8")).HexDigest()
   ```

1. すべての要素を組み合わせて正規リクエストを作成します。

   ```
   canonical_request = method + '\n' 
      + canonical_uri + '\n' 
      + canonical_querystring + '\n' 
      + canonical_headers + '\n' 
      + signed_headers + '\n' 
      + payload_hash
   ```

### タスク 2: 署名する文字列を作成します。
<a name="create-urlsign"></a>

署名する文字列には、リクエストについてのメタ情報が含まれています。次のステップでリクエストの署名を計算するときに、文字列を使用してサインインします。詳細については、*Amazon Web Services 全般のリファレンス*の「[署名バージョン 4 の署名文字列を作成する](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html)」を参照してください。

```
string_to_sign=algorithm + "\n"
   + amz_date + "\n"
   + credential_scope + "\n"
   + HashSHA256(canonical_request.Encode("utf-8")).HexDigest()
```

### タスク 3: 署名を計算する
<a name="calculate-signature"></a>

AWS シークレットアクセスキーから署名キーを取得します。保護レベルを高めるために、派生キーは日付、サービス、AWS リージョンに固有になっています。取得したキーを使用して、リクエストに署名します。詳細については、*Amazon Web Services 全般のリファレンス*の「[AWS 署名バージョン 4 の署名を計算する](https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html)」を参照してください。

コードでは、`GetSignatureKey` 関数を実装して署名キーを取得したものとします。詳細と関数の例については、「*Amazon Web Services 全般リファレンス*」の「[署名バージョン 4 の署名キーを取得する方法の例](https://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html)」を参照してください。

関数 `HMAC(key, data)` は、バイナリ形式で結果を返す HMAC-SHA 256 関数を表します。

```
#Create the signing key
signing_key = GetSignatureKey(secret_key, datestamp, region, service)
                
# Sign the string_to_sign using the signing key
signature = HMAC.new(signing_key, (string_to_sign).Encode("utf-8"), Sha256()).HexDigest
```

### タスク 4: 署名情報をリクエストに追加し、リクエスト URL を作成する
<a name="sign-request"></a>

署名を計算したら、クエリ文字列に追加します。詳細については、*Amazon Web Services 全般リファレンス*の「[HTTP リクエストに署名を追加する](https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html)」を参照してください。

```
#Add the authentication information to the query string
canonical_querystring += "&X-Amz-Signature=" + signature
                
# Sign the string_to_sign using the signing key
request_url = endpoint + canonical_uri + "?" + canonical_querystring
```

## 次のステップ
<a name="network-analyzer-request-next"></a>

WebSocket ライブラリでリクエスト URL を使用して、サービスへのリクエストを実行し、メッセージを確認できるようになりました。詳細については、「[WebSocket メッセージとステータスコード](network-analyer-messages-status.md)」を参照してください。

# WebSocket メッセージとステータスコード
<a name="network-analyer-messages-status"></a>

署名済みリクエストを作成したら、WebSocket ライブラリ、またはプログラミング言語に適したライブラリでリクエスト URL を使用して、サービスへのリクエストを行うことができます。この署名付きリクエストの生成方法の詳細については、「[WebSocket ライブラリで署名済みリクエストを生成する](network-analyzer-generate-request.md)」を参照してください。

## WebSocket メッセージ
<a name="network-analyer-messages"></a>

WebSocket プロトコルを使用して双方向接続を確立できます。メッセージは、クライアントからサーバーに、およびサーバーからクライアントに送信できます。ただし、ネットワークアナライザは、サーバーからクライアントに送信されるメッセージのみをサポートします。クライアントからのメッセージの受信は想定外であり、クライアントからメッセージを受信すると、サーバーは自動的に WebSocket 接続を閉じます。

リクエストが受信され、トレースメッセージングセッションが開始されると、サーバーはペイロードである JSON ストラクチャで応答します。ペイロードの詳細と、AWS マネジメントコンソール からトレースメッセージングをアクティブ化する方法については、「[ネットワークアナライザのトレースメッセージログをリアルタイムで表示およびモニタリングする](network-analyzer-logs.md)」を参照してください。

## WebSocket ステータスコード
<a name="network-analyer-status-codes"></a>

サーバーからクライアントへの通信の WebSocket ステータスコードを次に示します。WebSocket ステータスコードは、「[RFC Standard of Normal closure of connections](https://datatracker.ietf.org/doc/html/rfc6455#section-7.3)」に従っています。

サポートされているステータスコードを次に示します。
+ 

**1000**  
このステータスコードは通常のクロージャを示します。これは WebSocket 接続が確立され、リクエストへの対応が実行されたことを意味します。このステータスは、セッションがアイドル状態になり、接続がタイムアウトになったときに確認できます。
+ 

**1002**  
このステータスコードは、プロトコルエラーが原因でエンドポイントが接続を終了していることを示します。
+ 

**1003**  
このステータスコードは、受信できない形式のデータを受信したため、エンドポイントが接続を終了したエラーステータスを示します。エンドポイントはテキストデータのみをサポートしており、サポートされていない形式を使用しているクライアントからバイナリメッセージまたはメッセージを受信すると、このステータスコードが表示されることがあります。
+ 

**1008**  
このステータスコードは、ポリシーに違反するメッセージを受信したため、エンドポイントが接続を終了したエラーステータスを示します。このステータスは汎用であり、1003 や 1009 などの他のステータスコードが適用されない場合に表示されます。このステータスは、ポリシーを非表示にする必要がある場合や、有効期限が切れた署名などの認証に失敗した場合にも表示されます。
+ 

**1011**  
このステータスコードは、予期しない状態または内部エラーが発生して、リクエストへの対応を実行できなかったため、サーバーが接続を終了しているエラーステータスを示します。

## 次のステップ
<a name="network-analyzer-websockets-next"></a>

署名済みリクエストを生成する方法と、WebSocket 接続を使用してサーバーからのメッセージを確認する方法を学んだので、トレースメッセージングをアクティブにして、ワイヤレスゲートウェイとワイヤレスデバイスリソースのメッセージログの受信を開始できます。詳細については、「[ネットワークアナライザのトレースメッセージログをリアルタイムで表示およびモニタリングする](network-analyzer-logs.md)」を参照してください。

# ネットワークアナライザのトレースメッセージログをリアルタイムで表示およびモニタリングする
<a name="network-analyzer-logs"></a>

ネットワークアナライザの設定にリソースを追加した場合は、トレースメッセージングをアクティブにして、リソースのトレースメッセージの受信を開始できます。AWS マネジメントコンソール、AWS IoT Wireless API、AWS CLI のいずれかを使用できます。

## 前提条件
<a name="network-analyzer-logs-prereq"></a>

ネットワークアナライザを使用してトレースメッセージングをアクティブ化する前に、次の準備が必要です。
+ デフォルトのネットワークアナライザ設定に、モニタリングするリソースが追加されている。詳細については、「[リソースを追加し、ネットワークアナライザの設定を更新する](network-analyzer-resources.md)」を参照してください。
+ `StartNetworkAnalyzerStream` リクエスト URL を使用して、署名済みリクエストが生成されている。リクエストは、このリクエストを行う AWS Identity and Access Management ロールの認証情報を使用して署名されます。詳細については、「[署名付き URL を作成する](network-analyzer-generate-request.md#network-analyzer-presigned-url)」を参照してください。

## コンソールを使用してトレースメッセージングをアクティブ化する
<a name="network-analyzer-activate-console"></a>

トレースメッセージングをアクティブにするには

1. [AWS IoT コンソールの [Network Analyzer] (ネットワークアナライザ) ハブ](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer)を開き、ネットワークアナライザの設定 **NetworkAnalyzerConfig\$1Default** を選択します。

1. ネットワークアナライザの設定の詳細ページで、**[Activate trace messaging]** (トレースメッセージングをアクティブ化) を選択し、**[Activate]** (アクティブ化) を選択します。

   トレースメッセージの受信が開始され、最新のトレースメッセージからコンソールに表示されます。
**注記**  
メッセージングセッションの開始後、トレースメッセージの受信には、セッションを非アクティブ化するか、トレースセッションを終了するまで、追加コストが発生する可能性があります。料金の詳細については、「[AWS IoT Core の料金](https://aws.amazon.com/iot-core/pricing/)」を参照してください。

## トレースメッセージの表示とモニタリング
<a name="network-analyzer-view-trace"></a>

トレースメッセージングをアクティブにすると、WebSocket 接続が確立され、トレースメッセージが最新のものからリアルタイムで表示されます。プリファレンスをカスタマイズして、各ページに表示するトレースメッセージの数を指定し、各メッセージの関連するフィールドのみを表示させることができます。例えば、トレースメッセージログをカスタマイズして、**ログレベル**が `ERROR` に設定されているワイヤレスゲートウェイリソースのログのみを表示することができます。そうすると、ゲートウェイでエラーをすばやく特定してデバッグできます。トレースメッセージには、次に示す情報が含まれます。
+ **メッセージ番号**: 最後に受信したメッセージが最初になるように付番された一意の番号。
+ **リソース ID**: リソースのワイヤレスゲートウェイまたはワイヤレスデバイス ID。
+ **タイムスタンプ**: メッセージが受信された時刻。
+ **メッセージ ID**: AWS IoT Core for LoRaWAN が受信した各メッセージに割り当てた識別子。
+ **FPort**: WebSocket 接続を使用してデバイスと通信するための周波数ポート。
+ **DevEui**: ワイヤレスデバイスの拡張一意識別子 (EUI)。
+ **リソース**: モニタリング対象リソースがワイヤレスデバイスかワイヤレスゲートウェイか。
+ **イベント**: ワイヤレスデバイスのログメッセージのイベント。**Join**、**Rejoin**、**Uplink\$1Data**、**Downlink\$1Data**、または **Registration**。
+ **ログレベル**: デバイスの `INFO` または `ERROR` ログストリームに関する情報。

## ネットワークアナライザ JSON ログメッセージ
<a name="connect-iot-network-analyzer-trace-logs"></a>

一度に 1 つのトレースメッセージを選択して、そのメッセージの JSON ペイロードを表示することもできます。トレースメッセージログで選択したメッセージに応じて、2 つの部分 (**CustomerLog** と **LoRaFrame**) が含まれていることを示す情報が JSON ペイロードに表示されます。

**CustomerLog**  
JSON の **CustomerLog** 部分には、メッセージを受信したリソースのタイプと識別子、ログレベル、およびメッセージの内容が表示されます。次の例は、**CustomerLog** ログメッセージの例を示しています。JSON の `message` フィールドを使用して、エラーとその解決方法に関する詳細情報を取得できます。

**LoRaFrame**  
JSON の **LoRaFrame** 部分には、**メッセージ ID** があり、デバイスの物理ペイロードとワイヤレスメタデータに関する情報が含まれています。

次の例に、トレースメッセージの構造を示します。

```
export type TraceMessage = {
  ResourceId: string;
  Timestamp: string;
  LoRaFrame: 
  {
    MessageId: string;
    PhysicalPayload: any;
    WirelessMetadata: 
    {
      fPort: number;
      dataRate: number;
      devEui: string;
      frequency: number,
      timestamp: string;
    },
  }
  CustomerLog: 
  {
    resource: string;
    wirelessDeviceId: string;
    wirelessDeviceType: string;
    event: string;
    logLevel: string;
    messageId: string;
    message: string;
  },
};
```

## レビューと以降のステップ
<a name="network-analyzer-review"></a>

このセクションでは、トレースメッセージを表示し、この情報を使用してエラーをデバッグする方法を学習しました。すべてのメッセージを表示したら、次の操作を実行できます。
+ 

**トレースメッセージングを無効化する**  
追加コストが発生しないようにするには、トレースメッセージングセッションを非アクティブにします。セッションを非アクティブにすると、WebSocket 接続が切断され、追加のトレースメッセージが受信されなくなります。コンソールで既存のメッセージを引き続き表示することができます。
+ 

**設定のフレーム情報を編集する**  
ネットワークアナライザの設定を編集して、フレーム情報を非アクティブ化するかどうかを選択し、メッセージのログレベルを選択できます。設定を更新する前に、トレースメッセージングセッションを非アクティブ化することを検討してください。これらの編集を行うには、[AWS IoTコンソールの [Network Analyzer details] (ネットワークアナライザの詳細) ページ](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer/details/NetworkAnalyzerConfig_Default)を選択し、**[Edit]** (編集) を選択します。その後、新しい設定で設定を更新し、トレースメッセージングをアクティブにして、更新されたメッセージを表示できます。
+ 

**設定にリソースを追加する**  
また、ネットワークアナライザの設定にリソースを追加し、リアルタイムでモニタリングすることもできます。のワイヤレスゲートウェイとワイヤレスデバイスリソースを、合わせて最大 250 個追加できます。リソースを追加するには、[AWS IoT コンソールの [Network Analyzer details] (ネットワークアナライザの詳細) ページ](https://console.aws.amazon.com/iot/home#/wireless/networkAnalyzer/details/NetworkAnalyzerConfig_Default)で、**[Resources]** (リソース) タブを選択し、**[Add resources]** (リソースを追加) を選択します。その後、新しいリソースで設定を更新し、トレースメッセージングをアクティブにして、追加のリソースの更新されたメッセージを表示できます。

設定の編集とリソースの追加によるネットワークアナライザ設定の更新の詳細については、「[リソースを追加し、ネットワークアナライザの設定を更新する](network-analyzer-resources.md)」を参照してください。

# ネットワークアナライザを使用してマルチキャストグループと FUOTA タスクのデバッグとトラブルシューティングを行う
<a name="lorawan-network-analyzer-fuota"></a>

モニタリングできるワイヤレスリソースには、LoRaWAN デバイス、LoRaWAN ゲートウェイ、マルチキャストグループが含まれます。ネットワークアナライザーを使用して、FUOTA タスクの問題のデバッグとトラブルシューティングを行うこともできます。FUOTA タスクが進行中の場合、セットアップ、データ送信、ステータスクエリに関連するメッセージをモニタリングおよび追跡することもできます。

FUOTA タスクを監視するには、タスクにマルチキャストグループが含まれている場合は、マルチキャストグループとグループ内のデバイスの両方をネットワークアナライザ設定に追加する必要があります。また、フレーム情報とマルチキャストフレーム情報を有効にして、FUOTA タスクの進行中にマルチキャストグループやデバイスと交換されるユニキャスト/マルチキャストアップリンク/ダウンリンクメッセージを追跡する必要があります。

マルチキャストグループをモニタリングするには、それらをネットワークアナライザの設定に追加し、マルチキャストフレーム情報を使用して、これらのグループに送信されるマルチキャストダウンリンクメッセージのトラブルシューティングを行います。ユニキャスト通信が使用されているグループに参加しようとしているデバイスをトラブルシューティングするには、これらのデバイスもネットワークアナライザの設定に含める必要があります。グループ内のデバイスとのユニキャスト通信のみをモニタリングするには、ワイヤレスデバイスのフレーム情報を有効にします。このアプローチにより、マルチキャストグループとそのグループに参加するデバイスの両方を包括的にモニタリングおよび診断できます。

次のセクションには、ネットワークアナライザを使用してマルチキャストグループと FUOTA タスクのデバッグとトラブルシューティングを行う方法が説明されています。

**Topics**
+ [デバイスのみを含む FUOTA タスクのデバッグ](#lorawan-network-analyzer-fuota-devices)
+ [マルチキャストグループによる FUOTA タスクのデバッグ](#lorawan-network-analyzer-fuota-multicast)
+ [マルチキャストグループに参加しようとしているデバイスをデバッグする](#lorawan-network-analyzer-fuota-multicast)
+ [マルチキャストグループセッションをデバッグする](#lorawan-network-analyzer-fuota-multicastsession)

## デバイスのみを含む FUOTA タスクのデバッグ
<a name="lorawan-network-analyzer-fuota-devices"></a>

ネットワークアナライザーを使用して、タスクに LoRaWAN デバイスのみが追加された FUOTA タスクをデバッグできます。FUOTA タスクにデバイスを追加する方法については、「[は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする](lorawan-fuota-add-devices.md)」を参照してください。FUOTA タスクをデバッグするには、次のステップを実行します。

1. ワイヤレスデバイスのフレーム情報を有効にしてネットワークアナライザ設定を作成します。これにより、タスクの進行中にデバイスと交換される FUOTA アップリンクおよびダウンリンクメッセージをモニタリングできます。

1. ワイヤレスデバイス識別子を使用して、FUOTA タスク内のデバイスをネットワークアナライザー設定に追加します。

1. トレースメッセージングをアクティブにして、ネットワークアナライザーの設定のデバイスによるトレースメッセージの受信を開始できます。

トレースメッセージ情報の `applicationCommandType` 列では、データ転送と断片化設定に関連するユニキャストダウンリンクメッセージの受信を開始します。

**注記**  
トレースメッセージテーブルに `applicationCommandType` 列が表示されない場合は、この列を表に表示するように設定を調整できます。

**ワイヤレスメタデータ** > アプリケーション情報の JSON ログメッセージで、`applicationCommandType` およびその他の詳細なメッセージを確認することもできます。

## マルチキャストグループによる FUOTA タスクのデバッグ
<a name="lorawan-network-analyzer-fuota-multicast"></a>

ネットワークアナライザーを使用して、グループにマルチキャストグループと LoRaWAN デバイスが追加された FUOTA タスクをデバッグできます。FUOTA タスクにデバイスを追加する方法については、「[は デバイスおよびマルチキャストグループを FUOTA タスクに追加して FUOTA セッションをスケジュールする](lorawan-fuota-add-devices.md)」を参照してください。FUOTA タスクをデバッグするには、次のステップを実行します。

1. ワイヤレスデバイスとマルチキャストグループのフレーム情報とマルチキャストフレーム情報の設定をアクティブにして、ネットワークアナライザー設定を作成します。

1. FUOTA タスク内のマルチキャストグループを、マルチキャストグループ識別子を使用してネットワークアナライザー設定に追加します。マルチキャストフレーム情報を有効にすると、FUOTA タスクの進行中にグループに送信されるファームウェアデータメッセージと FUOTA ステータスクエリメッセージをデバッグできます。

1. ワイヤレスデバイス識別子を使用して、マルチキャストグループ内のデバイスをネットワークアナライザー設定に追加します。フレーム情報を有効にすると、FUOTA タスクの進行中にデバイスと直接交換されるアップリンクメッセージとダウンリンクメッセージをモニタリングできます。

1. トレースメッセージングをアクティブにして、ネットワークアナライザーの設定のデバイスとマルチキャストグループによるトレースメッセージの受信を開始できます。

その後、トレースメッセージテーブルの `applicationCommandType` 列と JSON ログメッセージの詳細を使用して、トレースメッセージを表示して、それをデバッグできます (「[デバイスのみを含む FUOTA タスクのデバッグ](#lorawan-network-analyzer-fuota-devices)」を参照)。

## マルチキャストグループに参加しようとしているデバイスをデバッグする
<a name="lorawan-network-analyzer-fuota-multicast"></a>

ネットワークアナライザーを使って、マルチキャストグループに参加しようとしているデバイスをデバッグできます。マルチキャストグループにデバイスを追加する方法については、「[マルチキャストグループを作成しグループにデバイスを追加する](lorawan-create-multicast-groups.md)」を参照してください。マルチキャストグループをデバッグするには、次のステップを実行します。

1. ワイヤレスデバイスのフレーム情報をアクティブにして、ネットワークアナライザー設定を作成します。

1. ワイヤレスデバイス識別子を使用して、モニタリングするデバイスをネットワークアナライザー設定に追加します。

1. トレースメッセージングをアクティブにして、ネットワークアナライザーの設定のデバイスによるトレースメッセージの受信を開始できます。

1. グループ内のデバイスに対してトレースメッセージが有効になったら、マルチキャストグループへのデバイスの関連付けを開始します。

## マルチキャストグループセッションをデバッグする
<a name="lorawan-network-analyzer-fuota-multicastsession"></a>

ネットワークアナライザーを使用してマルチキャストグループセッションをデバッグできます。詳細については、「[マルチキャストグループ内のデバイスに送信するダウンリンクメッセージをスケジュールする](lorawan-multicast-schedule-downlink.md)」を参照してください。マルチキャストグループセッションをデバッグするには、次のステップを実行します。

1. マルチキャストグループのマルチキャストフレーム情報をアクティブにして、ネットワークアナライザー設定を作成します。

1. マルチキャストグループ識別子を使用することにより、モニタリングするマルチキャストグループをネットワークアナライザー設定に追加します。

1. マルチキャストセッションを開始する前に、トレースメッセージングをアクティブにして、マルチキャストグループセッションのトレースメッセージの受信を開始できます。

1. マルチキャストグループセッションを開始し、トレースメッセージテーブルと JSON ログメッセージに表示されるメッセージを確認してステータスをモニタリングします。

トレースメッセージテーブルでは、`MulticastAddr` が `DevAddr` 列に表示されます。JSON ログメッセージでは、**WirelessMetadata > ApplicationInfo** と移動することで、`MulticastGroupId` およびその他の詳細なメッセージを確認することができます。

# AWS IoT Core for LoRaWAN とインターフェース VPC エンドポイント (AWS PrivateLink)
<a name="vpc-interface-endpoints"></a>

AWS IoT Core for LoRaWAN への接続には、パブリックインターネット経由で接続するのではなく、Virtual Private Cloud (VPC) 内の[インターフェイス VPC エンドポイント (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html) 経由で直接接続することができます。VPC インターフェイスエンドポイントを使用すると、AWS ネットワーク内で VPC と AWS IoT Core for LoRaWAN 間の通信が完全かつ安全に実施されます。

AWS IoT Core for LoRaWAN は、AWS PrivateLink を活用する Amazon Virtual Private Cloud インターフェイスエンドポイントをサポートします。各 VPC エンドポイントは、VPC サブネット内の 1 つ以上の [Elastic Network Interface](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) とプライベート IP アドレスで表されます。詳細については、「Amazon VPC ユーザーガイド」の「[インターフェイス VPC エンドポイント (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)」を参照してください。

VPC とエンドポイントの詳細については、「[Amazon VPC とは何か](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#what-is-privatelink)」を参照してください。

AWS PrivateLink の詳細については、「[AWS PrivateLink および VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/endpoint-services-overview.html)」を参照してください。

## AWS IoT Wireless VPC エンドポイントに関する考慮事項
<a name="vpc-endpoint-considerations"></a>

AWS IoT Wireless 用のインターフェイス VPC エンドポイントを設定する前に、*Amazon VPC ユーザーガイド*の「[インターフェイスエンドポイントのプロパティと制限](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations)」を確認してください。

AWS IoT Wireless は、VPC からのすべての API アクションの呼び出しをサポートしています。AWS IoT Wireless では、VPC エンドポイントポリシーがサポートされません。デフォルトで、エンドポイント経由での AWS IoT Wireless への完全なアクセスが許可されます。詳細については、「*Amazon VPC ユーザーガイド*」の「[VPC エンドポイントでサービスへのアクセスを制御する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)」を参照してください。

## AWS IoT Core for LoRaWAN privatelink アーキテクチャ
<a name="vpc-endpoint-architecture"></a>

以下の図は、AWS IoT Core for LoRaWAN の privatelink アーキテクチャを示しています。このアーキテクチャは、自身の VPC、AWS IoT Core for LoRaWAN VPC、およびオンプレミス環境の間で AWS PrivateLink インターフェイスエンドポイントを共有するために Transit Gateway と Route 53 リゾルバーを使用します。より詳しいアーキテクチャ図は、VPC インターフェイスエンドポイントへの接続をセットアップするときに提供されます。

![\[AWS PrivateLink を使用して AWS IoT Core for LoRaWAN エンドポイントに接続する方法を示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/iot-lorawan-privatelink-architecture.png)


## AWS IoT Core for LoRaWAN のエンドポイント
<a name="vpc-lorawan-endpoints"></a>

AWS IoT Core for LoRaWAN には、3 つのパブリックエンドポイントがあります。各パブリックエンドポイントには、対応する VPC インターフェイスエンドポイントがあります。パブリックエンドポイントは、コントロールプレーンとデータプレーンエンドポイントに分類できます。これらのエンドポイントについては、「[AWS IoT Core for LoRaWAN API エンドポイント](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-wireless_region)」を参照してください。
+ 

**Control Plane API エンドポイント**  
 コントロールプレーン API エンドポイントを使用して AWS IoT Wireless API とやり取りすることができます。これらのエンドポイントは、AWS PrivateLink を使用することによって、Amazon VPC 内でホストされているクライアントからアクセスできます。
+ 

**Data Plane API エンドポイント**  
データプレーン API エンドポイントは、AWS IoT Core for LoRaWAN の LoRaWAN Network Server (LNS) エンドポイントおよび Configuration and Update Server (CUPS) エンドポイントとやり取りするために使用できる LNS エンドポイント と CUPS エンドポイントです。これらのエンドポイントは、Site-to-Site VPN または AWS Direct Connect を使用することによって、オンプレミスの LoRa ゲートウェイからアクセスできます。これらのエンドポイントは、ゲートウェイを AWS IoT Core for LoRaWAN にオンボードしているときに取得できます。詳細については、「[ゲートウェイを AWS IoT Core for LoRaWAN に追加する](lorawan-onboard-gateway-add.md)」を参照してください。

**Topics**
+ [AWS IoT Wireless VPC エンドポイントに関する考慮事項](#vpc-endpoint-considerations)
+ [AWS IoT Core for LoRaWAN privatelink アーキテクチャ](#vpc-endpoint-architecture)
+ [AWS IoT Core for LoRaWAN のエンドポイント](#vpc-lorawan-endpoints)
+ [AWS IoT Core for LoRaWAN コントロールプレーン API エンドポイントをオンボードする](lorawan-onboard-control-endpoint.md)
+ [AWS IoT Core for LoRaWAN データプレーン API エンドポイントをオンボードする](onboard-lns-cups-endpoints.md)

# AWS IoT Core for LoRaWAN コントロールプレーン API エンドポイントをオンボードする
<a name="lorawan-onboard-control-endpoint"></a>

AWS IoT Core for LoRaWAN コントロールプレーン API エンドポイントを使用して AWS IoT Wireless API とやり取りすることができます。例えば、このエンドポイントを使用して [SendDataToWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html) API を実行し、AWS IoT から LoRaWAN デバイスにデータを送信できます。詳細については、「[AWS IoT Core for LoRaWAN の Control Plane API エンドポイント](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core.html#iot-wireless-control-plane-endpoints)」を参照してください。

AWS PrivateLink を活用するコントロールプレーンエンドポイントにアクセスするには、Amazon VPC 内でホストされているクライアントが使用できます。これらのエンドポイントを使用して、パブリックインターネット経由で接続するのではなく、Virtual Private Cloud (VPC) 内のインターフェイスエンドポイント経由で AWS IoT Wireless API に接続します。

**Topics**
+ [Amazon VPC とサブネットを作成する](#create-vpc)
+ [サブネット内でAmazon EC2 インスタンスを起動します。](#launch-ec2-instance)
+ [Amazon VPC インターフェイスエンドポイントを作成します](#create-vpc-endpoint)
+ [SMTP インターフェイスエンドポイントへの接続をテストします](#connect-vpc-endpoint)

## Amazon VPC とサブネットを作成する
<a name="create-vpc"></a>

インターフェイスエンドポイントに接続する前に、VPC とサブネットを作成する必要があります。次に、サブネットで EC2 インスタンスを起動します。これは、インターフェイスエンドポイントに接続するために使用できます。

VPC を作成するには：

1. Amazon VPC コンソールの [[VPC](https://console.aws.amazon.com/vpc/home#/vpcs)] ページに移動して、[**Create VPC**] (VPC を作成) をクリックします。

1. [**Create VPC**] (VPC を作成) ページで以下を実行します。
   + [**VPC Name tag - optional**] (名前タグ – オプション) に名前を入力します (例、**VPC-A** ）。
   + [IPv4 CIDR block] (IPv4 CIDR ブロック) に VPC の IPv4 アドレス範囲を入力します (例、**10.100.0.0/16** )。

1. 他のフィールドはデフォルト値のままにしておき、[**Create VPC**] (VPC を作成) を選びます。

サブネットを作成するには：

1. Amazon VPC コンソールの [[Subnets](https://console.aws.amazon.com/vpc/home#/subnets)] (サブネット) ページに移動し、[**Create subnet**] (サブネットを作成) をクリックします。

1. [**Create subnet group**] (サブネットグループを作成) ページで：
   + [**VPC ID**] には、先ほど作成した VPC を選択します (例、`VPC-A` )。
   + [**Subnet name**] (サブネット名) に名前を入力します (例、**Private subnet** )。
   + サブネットの [**Availability Zone**] (アベイラビリティーゾーン) を選択します。
   + [**IPv4 CIDR block**] (IPv4 CIDR ブロック) にサブネットの IP アドレスブロックを CIDR 形式で入力します (例、**10.100.0.0/24** )。

1. [**Create subnet**] (サブネットを作成) をクリックしてサブネットを作成し、VPC に追加します。

詳細については、[[Work with VPC and subnets](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html)](VPC とサブネットの使用)を参照してください。

## サブネット内でAmazon EC2 インスタンスを起動します。
<a name="launch-ec2-instance"></a>

EC2 インスタンスを起動するには：

1. [Amazon EC2](https://console.aws.amazon.com/ec2/home#/) コンソールに移動して、[**Launch Instance**] (インスタンスを起動) をクリックします。

1. AMI には [**Amazon Linux 2 AMI (HVM), SSD Volume Type**] を選択して、次に [**t2 micro**] インスタンスタイプを選択します。インスタンスの詳細を設定するために、[**Next**] (次のステップ) を選択します。

1. [**Configure Instance Details**] (インスタンスの詳細の設定) ページで：
   + [**Network**] (ネットワーク) には、先ほど作成した VPC を選択します (例、`VPC-A` )。
   + **Subnet**] (サブネット) には、先ほど作成したサブネットを選択します (例、**Private subnet**)。
   + **[IAM role]** (IAM ロール) にはロール **AWSIoTWirelessFullAccess** を選択して、AWS IoT Core for LoRaWAN に完全なアクセスポリシーを付与します。詳細については、「[`AWSIoTWirelessFullAccess` ポリシーの概要](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTWirelessFullAccess$serviceLevelSummary)」を参照してください。
   + [**Assume Private IP**] (プライベート IP の継承) には、**10.100.0.42** などの IP アドレスを使用します。

1. [**Next: Add Storage**] (次のステップ: ストレージの追加)] を選んでから、[**Next: Add Tags**] (次のステップ: タグの追加）を選びます。オプションで、EC2 インスタンスに関連付ける任意のタグを追加できます。[**Next: Configure Security Group**] (次に：セキュリティグループを設定) を選択します。

1. [**Configure Security Group**] (セキュリティグループの設定) ページで、以下を許可するセキュリティグループを設定します。
   + `10.200.0.0/16` に設定した [Source] (ソース) に対して [**All TCP**] (すべての TCP) を開放します
   + `10.200.0.0/16` に設定した [Source] (ソース) に対して [**All ICMP - IPV4**] (すべての ICMP-IPV4) を開放します

1. [**Review and Launch**] (確認と作成) をクリックしてインスタンスの詳細を確認し、EC2 インスタンスを起動します。

詳細については、「[Amazon EC2 Linux インスタンスの開始方法](https://docs.aws.amazon.com/AWSEC2/latest/userguide/EC2_GetStarted.html)」を参照してください。

## Amazon VPC インターフェイスエンドポイントを作成します
<a name="create-vpc-endpoint"></a>

VPC 用の VPC エンドポイントが作成できます。作成後は、EC2 API がこのエンドポイントにアクセスすることができます。エンドポイントを作成するには：

1. [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) の [**Endopoints**] (エンドポイント) コンソールに移動して、[**Create Endpoint**] (エンドポイントの作成) をクリックします。

1. [**Create Endpoint**] (エンドポイントの作成) ページで、以下の情報を指定します。
   + **[Service category]** (サービスカテゴリ) には **[AWS のサービスs]** を選択します。
   + [**Service Name**] (サービス名) については、キーワード **iotwireless** を入力して検索します。表示された `iotwireless` サービスのリストで、お使いのリージョンのコントロールプレーン API エンドポイントを選択します。エンドポイントは `com.amazonaws.region.iotwireless.api` の形式です。
   + [**VPC**] と [**Subnets**] (サブネット) には、エンドポイントを作成する VPC と、エンドポイントネットワークを作成するアベイラビリティーゾーン (AZ) を選択します。
**注記**  
`iotwireless` サービスは、一部のアベイラビリティーゾーンをサポートしていない場合があります。
   + [**Enable DNS name**] (DNS 名を有効にする) には、[**Enable for this endpoint**] (このエンドポイントで有効にする) を選択します。

     このオプションを選択すると、後で接続をテストするために使用する API がプライベートリンクのエンドポイントを通過するように、DNS が自動的に解決され、Amazon Route 53 Public Data Planeにルートが設定されます。
   + [**Security group**] (セキュリティグループ) には、エンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。
   + オプションで、タグを追加または削除できます。タグとは名前と値のペアで、エンドポイントに関連付けるために使用します。

1. **[Create Endpoint]** (エンドポイントの作成) をクリックして、VPC エンドポイントを作成します。

## SMTP インターフェイスエンドポイントへの接続をテストします
<a name="connect-vpc-endpoint"></a>

SSH を使用して Amazon EC2 インスタンスにアクセスしたから、AWS CLIを使用してプライベートリンクインターフェイスエンドポイントに接続する事ができます。

インターフェイスエンドポイントに接続する前に、「[Linux での AWS CLI バージョン 2 のインストール、更新、アンインストール](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html)」で説明されている手順に従って、最新の AWS CLI バージョンをダウンロードしてください。

以下の例は、CLI を使用してインターフェイスエンドポイントへの接続をテストする方法を示しています。

```
aws iotwireless create-service-profile \ 
    --endpoint-url https://api.iotwireless.region.amazonaws.com  \ 
    --name='test-privatelink'
```

以下の例は、コマンドを実行する例を示しています。

```
Response:
{
 "Arn": "arn:aws:iotwireless:region:acct_number:ServiceProfile/1a2345ba-4c5d-67b0-ab67-e0c8342f2857",
 "Id": "1a2345ba-4c5d-67b0-ab67-e0c8342f2857"
}
```

同様に、次のコマンドを実行して、サービスプロファイル情報を取得したり、すべてのサービスプロファイルを一覧表示したりできます。

```
aws iotwireless get-service-profile \ 
    --endpoint-url https://api.iotwireless.region.amazonaws.com  
    --id="1a2345ba-4c5d-67b0-ab67-e0c8342f2857"
```

以下は、list-device-profiles コマンドの例です。

```
aws iotwireless list-device-profiles \ 
    --endpoint-url https://api.iotwireless.region.amazonaws.com
```

# AWS IoT Core for LoRaWAN データプレーン API エンドポイントをオンボードする
<a name="onboard-lns-cups-endpoints"></a>

AWS IoT Core for LoRaWAN データプレーンのエンドポイントは、次のエンドポイントで構成されます。これらのエンドポイントは、ゲートウェイを AWS IoT Core for LoRaWAN に追加するときに取得します。詳細については、「[ゲートウェイを AWS IoT Core for LoRaWAN に追加する](lorawan-onboard-gateway-add.md)」を参照してください。
+ 

**LoRaWAN Network Server (LNS)エンドポイント**  
LNS エンドポイントは`account-specific-prefix.lns.lorawan.region.amazonaws.com`形式です。このエンドポイントを使用して、LoRaアップリンクおよびダウンリンクメッセージを交換するための接続を確立できます。
+ 

**設定および更新サーバー(CUPS)エンドポイント**  
CUPS エンドポイントは`account-specific-prefix.cups.lorawan.region.amazonaws.com`形式です。このエンドポイントは、認証情報管理、リモート設定、ゲートウェイのファームウェア更新に使用できます。

詳細については、「[CUPS および LNS プロトコルの使用](lorawan-manage-gateways.md#lorawan-cups-lns-protocols)」を参照してください。

AWS アカウント とリージョンの Data Plane API エンドポイントを検索するには、ここに記載されている [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-service-endpoint.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotwireless/get-service-endpoint.html) CLI コマンド、または [https://docs.aws.amazon.com/iotwireless/latest/apireference/API_GetServiceEndpoint.html](https://docs.aws.amazon.com/iotwireless/latest/apireference/API_GetServiceEndpoint.html) REST API を使用します。詳細については、「[AWS IoT Core for LoRaWAN の Data Plane API エンドポイント](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#iot-core.html#iot-wireless-data-plane-endpoints)」を参照してください。

オンプレミスの LoRaWAN ゲートウェイを接続して、AWS IoT Core for LoRaWAN エンドポイントと通信できます。この接続を確立するには、まず VPN 接続を使用して、オンプレミスのゲートウェイを VPC 内の AWS アカウントに接続します。その後、AWS IoT Core for LoRaWAN VPC 内で、privatelink を活用するデータプレーンインターフェイスエンドポイントと通信できるようになります。

**Topics**
+ [VPC インターフェイスエンドポイントとプライベートホストゾーンを作成します](create-vpc-lns-cups.md)
+ [VPNを使用して、LoRaゲートウェイをAWS アカウントに接続します](lorawan-vpc-vpn-connection.md)

# VPC インターフェイスエンドポイントとプライベートホストゾーンを作成します
<a name="create-vpc-lns-cups"></a>

AWS IoT Core for LoRaWAN には、Configuration and Update Server (CUPS) エンドポイントと LoRaWAN Network Server (LNS) エンドポイントという 2 つのデータプレーンエンドポイントがあります。両方のエンドポイントへのプライベートリンク接続を確立するセットアッププロセスは同じであるため、例として、LNS エンドポイントを使用できます。

データプレーンエンドポイントの場合、LoRa ゲートウェイはまず Amazon VPC 内の AWS アカウント に接続し、次に AWS IoT Core for LoRaWAN VPC 内の VPC エンドポイントに接続します。

エンドポイントに接続する場合、DNS 名は 1 つの VPC 内で解決できますが、複数の VPC 間で解決することはできません。エンドポイントの作成時にプライベート DNS を無効にするには、[**Enable DNS name**] (DNS 名を有効にする) 設定を無効にします。Route 53 が VPC の DNS クエリに応答する方法に関する情報を提供するには、プライベートホストゾーンを使用できます。VPC をオンプレミス環境と共有するには、Route 53 リゾルバーを使用してハイブリッド DNS を円滑に稼働させることができます。

**Topics**
+ [Amazon VPC とサブネットを作成します](#lns-create-vpc)
+ [Amazon VPC インターフェイスエンドポイントを作成します](#lns-create-vpc-endpoint)
+ [プライベートホストゾーンを設定します](#create-phz-lns)
+ [Route 53 インバウンドリゾルバを設定します](#configure-route53-resolver)
+ [次のステップ](#lns-cups-next-steps)

## Amazon VPC とサブネットを作成します
<a name="lns-create-vpc"></a>

コントロールプレーンエンドポイントのオンボーディング時に作成した Amazon VPC とサブネットを再利用できます。詳細については、[Amazon VPC とサブネットを作成する](lorawan-onboard-control-endpoint.md#create-vpc) を参照してください。

## Amazon VPC インターフェイスエンドポイントを作成します
<a name="lns-create-vpc-endpoint"></a>

VPC 用に VPC エンドポイントを作成できます。これは、コントロールプレーンエンドポイント用にエンドポイントを作成する方法と似ています。

1. [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) の [**Endopoints**] (エンドポイント) コンソールに移動して、[**Create Endpoint**] (エンドポイントの作成) をクリックします。

1. [**Create Endpoint**] (エンドポイントの作成) ページで、以下の情報を指定します。
   + **[Service category]** (サービスカテゴリ) には **[AWS のサービスs]** を選択します。
   + **Service Name**] (サービス名) については、キーワード **lns**. を入力して検索します。表示された `lns` サービスのリストで、お使いのリージョンの LNS データプレーン API エンドポイントを選択します。エンドポイントは `com.amazonaws.region.lorawan.lns` の形式です。
**注記**  
CUPS エンドポイントでこの手順を実行している場合は、`cups`を検索します。エンドポイントは `com.amazonaws.region.lorawan.cups` の形式です。
   + [**VPC**] と [**Subnets**] (サブネット) には、エンドポイントを作成する VPC と、エンドポイントネットワークを作成するアベイラビリティーゾーン (AZ) を選択します。
**注記**  
`iotwireless`サービスは、一部のアベイラビリティーゾーンをサポートしていない場合があります。
   + [**Enable DNS name**] (DNS 名を有効にする) で、[**Enable for this endpoint**] (このエンドポイントで有効にする) が選択されていないことを確認してください。

     このオプションを選択しない事で、VPC エンドポイントのプライベート DNS を無効にして、代わりにプライベートホストゾーンを使用する事ができます。
   + [**Security group**] (セキュリティグループ) には、エンドポイントネットワークインターフェイスに関連付けるセキュリティグループを選択します。
   + オプションで、タグを追加または削除できます。タグとは名前と値のペアで、エンドポイントに関連付けるために使用します。

1. **[Create Endpoint]** (エンドポイントの作成) をクリックして、VPC エンドポイントを作成します。

## プライベートホストゾーンを設定します
<a name="create-phz-lns"></a>

プライベートリンクエンドポイントを作成した後、**詳細**タブに、DNS 名のリストが表示されます。これらの DNS 名のいずれかを使用して、プライベートホストゾーンを設定できます。DNS名は `vpce-xxxx.lns.lorawan.region.vpce.amazonaws.com` 形式になります。

**プライベートホストゾーンを作成します**  
プライベートホストゾーンを作成するには

1. [Route 53](https://console.aws.amazon.com/route53/v2/hostedzones#/) の [**Hosted zones**] (ホストゾーン) コンソールに移動して、[**Create hosted zone**] (ホストゾーンの作成) をクリックします。

1. [**Create hosted zone**] (ホストゾーンの作成) ページで、以下の情報を指定します。
   + [**Domain name**] (ドメイン名) には、LNS エンドポイントの完全なサービス名である **lns.lorawan.region.amazonaws.com** を入力します。
**注記**  
CUPS エンドポイントでこの手順を実行している場合は、**cups.lorawan.region.amazonaws.com**を入力します。
   + [**Type**] (タイプ) には、[**Private Hosted Zone**] (プライベートホストゾーン) を選択します。
   + 必要に応じて、タグを追加または削除してホストゾーンに関連付けることができます。

1. プライベートホストゾーンを作成するには、**ホストゾーンの作成**を選んでください。

詳細については、「[プライベートホストゾーンの作成](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html)」を参照してください。

プライベートホストゾーンを作成したら、そのドメインにトラフィックをルーティングする方法を DNS に指示するレコードを作成できます。

**レコードを作成する**  
プライベートホストゾーンを作成したら、そのドメインにトラフィックをルーティングする方法を DNS に指示するレコードを作成できます。レコードを作成するには：

1. 表示されるホストゾーンのリストで、前に作成したプライベートホストゾーンを選び、**レコードを作成する**を選びます。

1. ウィザードを使用してレコードを作成します。コンソールに [**Quick create**] (クイック作成) 方式が表示された場合は、[**Switch to wizard**] (ウィザードに切り替える) をクリックします。

1. [**Routing policy**] (ルーティングポリシー) に [**Simple Routing**] (シンプルルーティング) を選択し、[**Next**] (次へ) を選びます。

1. [**Configure records**] (レコードを設定)ページで、[**Define simple record**] (シンプルなレコードを定義) を選択します。

1. [**Define simple record**] (シンプルなレコードを定義) ページで
   + [**Record name**] (レコード名) には AWS アカウント番号のエイリアスを入力します。この値は、ゲートウェイのオンボーディング時に取得、または [https://docs.aws.amazon.com/iotwireless/latest/apireference/API_GetServiceEndpoint.html](https://docs.aws.amazon.com/iotwireless/latest/apireference/API_GetServiceEndpoint.html) REST API を使用して取得します。
   + [**Record type**] (レコードタイプ) では、値を `A - Routes traffic to an IPv4 address and some AWS resources` のままにしておきます。
   + [**Value/Route traffic to (値/トラフィックのルーティング先)**] には、[**Alias to VPC endpoint ( VPCエンドポイントへのエイリアス)**] を選択します。次に、お使いの [**Region**] (地域）を選択し、表示されたエンドポイントのリストから、「[Amazon VPC インターフェイスエンドポイントを作成します](#lns-create-vpc-endpoint)」の説明に従って先ほど作成したエンドポイントを選択します。

1. [**Define simple record**] (シンプルなレコードを定義) をクリックしてレコードを作成します。

## Route 53 インバウンドリゾルバを設定します
<a name="configure-route53-resolver"></a>

VPC エンドポイントをオンプレミス環境と共有するには、Route 53 リゾルバーを使用してハイブリッド DNS を円滑に稼働させる事ができます。インバウンドリゾルバーは、オンプレミスネットワークからデータプレーンエンドポイントへのトラフィックを、パブリックインターネットを経由せずにルーティングすることを可能にします。サービスのプライベート IP アドレスの値を返すには、VPC エンドポイントと同じ VPC 内に Route 53 リゾルバーを作成します。

インバウンドリゾルバーを作成する場合、VPC と以前にアベイラビリティーゾーン (AZ) で作成したサブネットのみを指定する必要があります。Route 53 リゾルバはこの情報を使用して、各サブネットにトラフィックをルーティングするための IP アドレスを自動的に割り当てます。

インバウンドリゾルバーを作成するには：

1. [Route 53](https://console.aws.amazon.com/route53/v2/inbound-endpoints#/) の [**Inbound endpoints**] (インバウンドエンドポイント) コンソールに移動して、[**Create inbound endpoint**] (インバウンドエンドポイントの作成) をクリックします。
**注記**  
エンドポイントとプライベートホストゾーンの作成時に使用したものと同じ AWS リージョンを使用していることを確認してください。

1. [**Create inbound endpoint**] (インバウンドエンドポイントの作成) ページで、以下の情報を指定します。
   + [**Endpoint name**] (エンドポイント名) に名前を入力します (例、**VPC\$1A\$1Test** )。
   + [**VPC in the region**] (該当リージョンの VPC) には、VPC エンドポイントの作成時に使用したものと同じ VPC を選択します。
   + [**Security group for this endpoint**] (このエンドポイントのセキュリティグループ) を設定して、オンプレミスネットワークからの受信トラフィックを許可します。
   + IP アドレスのために、[**Use an IP address that is selected automatically.**] (自動的に選択された IP アドレスを使用します。)を選びます。

1. [**Submit**] (送信) をクリックして、インバウンドリゾルバーを作成します。

この例では、トラフィックをルーティングするためのインバウンド Route 53 リゾルバーに IP アドレス `10.100.0.145` と `10.100.192.10` が割り当てられたとしましょう。

## 次のステップ
<a name="lns-cups-next-steps"></a>

DNS エントリのトラフィックをルーティングするプライベートホストゾーンとインバウンドリゾルバーを作成しました。Site-to-Site VPN エンドポイントまたはClient VPN エンドポイントのいずれかが使用できるようになりました。詳細については、「[VPNを使用して、LoRaゲートウェイをAWS アカウントに接続します](lorawan-vpc-vpn-connection.md)」を参照してください。

# VPNを使用して、LoRaゲートウェイをAWS アカウントに接続します
<a name="lorawan-vpc-vpn-connection"></a>

オンプレミスのゲートウェイを AWS アカウントに接続するには、Site-to-Site VPN 接続またはクライアント VPN エンドポイントのどちらかを使用できます。

オンプレミスゲートウェイに接続する前に、VPC エンドポイントを作成し、ゲートウェイからのトラフィックがパブリックインターネットを経由しないように、プライベートホストゾーンとインバウンドリゾルバーを設定しておく必要があります。詳細については、「[VPC インターフェイスエンドポイントとプライベートホストゾーンを作成します](create-vpc-lns-cups.md)」を参照してください。

## Site-to-Site VPN エンドポイント
<a name="vpc-site-vpn"></a>

ゲートウェイハードウェアがない、または別の AWS アカウントを使用して VPN 接続をテストしたい場合は、Site-to-Site VPN 接続を使用できます。Site-to-Site VPN を使用して、同じ AWS アカウントから、または異なる AWS リージョンで使用している別の AWS アカウントから VPC エンドポイントに接続できます。

**注記**  
ゲートウェイハードウェアがあり、VPN 接続を設定したい場合は、代わりにClient VPN を使用することをお勧めします。手順については、[クライアント VPN エンドポイント](#vpc-client-vpn) を参照してください。

Site-to-Site VPN を設定するには

1. サイト内で、接続のセットアップ元になる別の VPC を作成します。`VPC-A`には、先程作成した VPC を再利用できます。別の VPC を作成するには (例、`VPC-B`)、以前に作成した VPC の CIDR ブロックと重複しない CIDR ブロックを使用します。

   VPC のセットアップについては、[AWS setup Site-to-Site VPN connection](samples/Setup_Site_to_Site_VPN.zip) で説明されている手順に従ってください。
**注記**  
このドキュメントで説明されているSite-to-Site VPN VPN 方式では、VPN 接続に OpenSwan を使用しており、これは１つのVPNトンネルしかサポートしません。VPN 用に別の商用ソフトウェアを使用している場合は、サイト間の 2 つのトンネルを設定できる場合があります。

1. VPN 接続をセットアップしたら、AWS アカウントからのインバウンドリゾルバーの IP アドレスを追加して、`/etc/resolv.conf` ファイルを更新します。この IP アドレスは、ネームサーバーに使用します。この情報の入手方法については、「[Route 53 インバウンドリゾルバを設定します](create-vpc-lns-cups.md#configure-route53-resolver)」を参照してください。この例には、Route 53 リゾルバーを作成したときに割り当てられた IP アドレス `10.100.0.145` を使用できます。

   ```
   options timeout:2 attempts:5
   ; generated by /usr/sbin/dhclient-script
   search region.compute.internal
   nameserver 10.100.0.145
   ```

1. `nslookup` コマンドを使用して、VPN 接続がパブリックインターネットを経由する代わりに AWS PrivateLink エンドポイントを使用しているかどうかをテストできるようになりました。以下の例は、コマンドを実行する例を示しています。

   ```
   nslookup account-specific-prefix.lns.lorawan.region.amazonaws.com
   ```

   以下は、コマンド実行後の出力例です。これには、AWS PrivateLink LNS エンドポイントに対して接続が確立されたことを示すプライベート IP アドレスが表示されています。

   ```
   Server: 10.100.0.145
   Address: 10.100.0.145
   
   Non-authoritative answer:
   Name: https://xxxxx.lns.lorawan.region.amazonaws.com
   Address: 10.100.0.204
   ```

Site-to-Site VPN 接続の使用については、「[Site-to-Site VPN の仕組み](https://docs.aws.amazon.com/vpn/latest/s2svpn/how_it_works.html)」を参照してください。

## クライアント VPN エンドポイント
<a name="vpc-client-vpn"></a>

AWS Client VPN は、AWS リソースとオンプレミスネットワーク内のリソースに安全にアクセスするための、クライアントベースのマネージド VPN サービスです。次に、クライアント VPN サービスのアーキテクチャを示します。

![\[AWS Client VPN を使用してオンプレミスの LoRa ゲートウェイに接続する方法を示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot-wireless/latest/developerguide/images/lorawan-privatelink-client-vpn.png)


Client VPN エンドポイントへの VPN 接続を確立するには

1. 「[AWS Client VPN の開始方法](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html)」で説明されている手順に従って、クライアント VPN エンドポイントを作成します。

1. オンプレミスネットワーク (例、Wi-Fi ルーター) に、そのルーターのアクセス URL (例、`192.168.1.1`) を使用してログインし、そしてルート名とパスワードを見つけます。

1. ゲートウェイのドキュメントにある指示に従って LoRaWAN ゲートウェイをセットアップしてから、ゲートウェイを AWS IoT Core for LoRaWAN に追加します。ゲートウェイを追加する方法については、「[ゲートウェイを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-gateways.md)」を参照してください。

1. ゲートウェイのファームウェアが、最新の物であるかどうかを確認します。ファームウェアが古くなっている場合は、オンプレミスネットワークで提供されている指示に従って、ゲートウェイのファームウェアを更新できます。詳細については、「[AWS IoT Core for LoRaWAN で CUPS サービスを使用してゲートウェイファームウェアを更新する](lorawan-update-firmware.md)」を参照してください。

1. OpenVPN が有効になったかどうかを確認します。有効になっている場合は、次の手順に進み、オンプレミスネットワーク内で OpenVPN クライアントを設定します。有効になっていない場合は、「[Guide to install OpenVPN for OpenWrt](https://www.ovpn.com/en/guides/openwrt)」 (OpenWrt 用に OpenVPN をインストールするガイド) の手順に従ってください。
**注記**  
この例では、OpenVPN を使用します。クライアント VPN 接続のセットアップには、Site-to-Site VPN または AWS Direct Connect などの他の VPN クライアントを使用できます。

1. クライアント設定からの情報と、[Luci を使用した OpenVPN クライアント](https://openwrt.org/docs/guide-user/services/vpn/openvpn/client-luci)の使用方法に基づいて、OpenVPN クライアントを設定します。

1. オンプレミスネットワークに SSH 接続し、AWS アカウント内のインバウンドリゾルバーの IP アドレス (`10.100.0.145`) を追加して `/etc/resolv.conf` ファイルを更新します。

1. ゲートウェイトラフィックがAWS PrivateLinkを使用してエンドポイントに接続する場合は、ゲートウェイの最初の DNS エントリをインバウンドリゾルバーの IP アドレスに置き換えます。

Site-to-Site VPN 接続の使用については、「[クライアント VPN の開始方法](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/user-getting-started.html)」を参照してください。

## LNS および CUPS VPC エンドポイントに接続する
<a name="vpc-vpn-connect"></a>

以下に、LNS および CUPS VPC エンドポイントへの接続をテストする方法を示します。

**CUPS エンドポイントのテスト**  
LoRa ゲートウェイから CUPS エンドポイントへの AWS PrivateLink 接続をテストするには、以下のコマンドを実行します。

```
curl -k -v -X POST https://xxxx.cups.region.iotwireless.iot:443/update-info 
     --cacert cups.trust --cert cups.crt --key cups.key --header "Content-Type: application/json" 
     --data '{ 
              "router": "xxxxxxxxxxxxx", 
              "cupsUri": "https://xxxx.cups.lorawan.region.amazonaws.com:443",
              "cupsCredCrc":1234, "tcCredCrc":552384314
             }' 
      —output cups.out
```

**LNS エンドポイントのテスト**  
LNSエンドポイントをテストするには、まずワイヤレスゲートウェイで動作するLoRaWANデバイスをプロビジョニングします。その後、デバイスを追加し、*join*プロシージャーを使用して、アップリンクメッセージの送信を開始できます。