

# Sidewalk デバイスのオンボーディングの概要
<a name="sidewalk-gs-workflow"></a>

このセクションでは、Sidewalk エンドデバイスを AWS IoT Core for Amazon Sidewalk にオンボードする方法について説明します。デバイスをオンボードするには、まず Sidewalk デバイスを追加し、次にデバイスをプロビジョニングして登録し、ハードウェアをクラウドアプリケーションに接続します。このチュートリアルを実行する前に、[Python および AWS CLI のインストール](setting-up-iotwireless.md#wireless-onboard-prereq) を確認して完了してください。

以下の手順は、Sidewalk のエンドデバイスを AWS IoT Core for Amazon Sidewalk にオンボードして接続する方法を示しています。AWS CLI を使用してデバイスをオンボードする場合は、このセクションに記載されているサンプルコマンドを参照してください。AWS IoT コンソールを使用してデバイスをオンボードする方法については、「[AWS IoT Core for Amazon Sidewalk への接続](iot-sidewalk-onboard.md)」を参照してください。

**重要**  
オンボーディングワークフロー全体を実行するには、エンドデバイスをプロビジョニングして登録し、Hardware Development Kit (HDK) を接続します。詳細については、「Amazon Sidewalk ドキュメント」の「[エンドデバイスのプロビジョニングと登録](https://docs.sidewalk.amazon/provisioning/)」を参照してください。

**Topics**
+ [ステップ 1: AWS IoT Core for Amazon Sidewalk に Sidewalk デバイスを追加する](#iot-sidewalk-qsg-step1)
+ [ステップ 2: Sidewalk エンドデバイスの送信先の作成](#iot-sidewalk-qsg-step2)
+ [ステップ 3: エンドデバイスのプロビジョニングと登録](#iot-sidewalk-qsg-step2)
+ [ステップ 4: Sidewalk デバイスへの接続とメッセージの交換](#iot-sidewalk-qsg-step4)

## ステップ 1: AWS IoT Core for Amazon Sidewalk に Sidewalk デバイスを追加する
<a name="iot-sidewalk-qsg-step1"></a>

Sidewalk エンドデバイスを AWS IoT Core for Amazon Sidewalk に追加するために実行する手順の概要を次に示します。デバイスプロファイルと作成したワイヤレスデバイスについて取得した情報を保存します。この情報を使用して、エンドデバイスのプロビジョニングと登録を行います。これらのステップの詳細については、[AWS IoT Core for Amazon Sidewalk にデバイスを追加する](iot-sidewalk-create-device.md)を参照してください。

1. 

**デバイスプロファイルの作成**

   Sidewalk デバイスの共有設定を含むデバイスプロファイルを作成します。プロファイルを作成するときは、プロファイルの `name` を英数字の文字列で指定します。プロファイルを作成するには、AWS IoT コンソールの [[プロファイル] ハブの Sidewalk] タブ](https://console.aws.amazon.com/iot/home#/wireless/profiles?tab=sidewalk)に移動して **[プロファイルを作成]** を選択するか、この例に示すように [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDeviceProfile.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDeviceProfile.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/create-device-profile.html](https://docs.aws.amazon.com/cli/latest/reference/create-device-profile.html) CLI コマンドを使用します。

   ```
   // Add your device profile using a name and the sidewalk object.
   aws iotwireless create-device-profile --name sidewalk_profile --sidewalk {}
   ```

1. 

**Sidewalk のエンドデバイスの作成**

   AWS IoT Core for Amazon Sidewalk で Sidewalk のエンドデバイスを作成します。送信先名と、前の手順で取得したデバイスプロファイルの ID を指定します。デバイスを追加するには、AWS IoT コンソールの [[デバイス] ハブの Sidewalk タブ](https://console.aws.amazon.com/iot/home#/wireless/devices?tab=sidewalk)に移動して **[デバイスをプロビジョニング]** を選択するか、この例に示すように [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/create-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/create-wireless-device.html) CLI コマンドを使用します。
**注記**  
送信先には、AWS アカウント と AWS リージョン に固有の名前を指定してください。AWS IoT Core for Amazon Sidewalk に送信先を追加するときには、同じ送信先名を使用します。

   ```
   // Add your Sidewalk device by using the device profile ID. 
   aws iotwireless create-wireless-device --type "Sidewalk" --name sidewalk_device \ 
       --destination-name SidewalkDestination \
       --sidewalk DeviceProfileId="12345678-234a-45bc-67de-e8901234f0a1"
   ```

1. 

**デバイスプロファイルとワイヤレスデバイス情報を取得する**

   デバイスプロファイルとワイヤレスデバイス情報を JSON として取得します。JSON には、デバイスの詳細、デバイス証明書、プライベートキー、`DeviceTypeId`、および Sidewalk 製造シリアル番号 (SMSN) に関する情報が含まれます。
   + AWS IoT コンソールを使用している場合は、[[デバイス] ハブの [Sidewalk] タブ](https://console.aws.amazon.com/iot/home#/wireless/devices?tab=sidewalk)を使用して、Sidewalk エンドデバイス用の結合された JSON ファイルをダウンロードできます。
   + API オペレーションを使用している場合は、API オペレーション [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html) や [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) から取得したレスポンスを、*`device_profile.json`* や `wireless_device.json` などの個別の JSON ファイルとして保存します。

     ```
     // Store device profile information as a JSON file.
     aws iotwireless get-device-profile \ 
         --id "12345678-a1b2-3c45-67d8-e90fa1b2c34d" > device_profile.json
     
     // Store wireless device information as a JSON file.
     aws iotwireless get-wireless-device --identifier-type WirelessDeviceId \ 
         --identifier "23456789-abcd-0123-bcde-fabc012345678" > wireless_device.json
     ```

## ステップ 2: Sidewalk エンドデバイスの送信先の作成
<a name="iot-sidewalk-qsg-step2"></a>

AWS IoT Core for Amazon Sidewalk に送信先を追加するために実行する手順の概要は次のとおりです。AWS マネジメントコンソール、または AWS IoT Wireless API オペレーション、もしくは AWS CLI を使用して、次の手順を実行して AWS IoT ルールと送信先を作成します。その後、ハードウェアプラットフォームに接続し、メッセージを表示および交換できます。このセクションの AWS CLI の例で使用されている IAM ロールと AWS IoT ルールのサンプルについては、「[送信先の IAM ロールと IoT ルールを作成する](sidewalk-destination-rule-role.md)」を参照してください。

1. 

**IAM ロールの作成**

   データを AWS IoT ルールに送信するための AWS IoT Core for Amazon Sidewalk アクセス許可を付与する IAM ロールを作成します。このロールを作成するには、[https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html) API オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role) CLI コマンドを使用します。ロールには *`SidewalkRole`* という名前を付けることができます。

   ```
   aws iam create-role --role-name lambda-ex \ 
       --assume-role-policy-document file://lambda-trust-policy.json
   ```

1. 

**送信先のルールを作成する**

   デバイスのデータを処理し、メッセージを公開するトピックを指定する AWS IoT ルールを作成します。ハードウェアプラットフォームに接続すると、このトピックに関するメッセージが表示されます。AWS IoT Core API オペレーション [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html)、または AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html) を使用して、送信先のルールを作成します。

   ```
   aws iot create-topic-rule --rule-name Sidewalkrule \ 
       --topic-rule-payload file://myrule.json
   ```

1. 

**送信先を作成する**

   Sidewalk デバイスを、他の AWS のサービス で使用できるように処理する IoT ルールに関連付ける送信先を作成します。AWS IoT コンソールの [[送信先] ハブ](https://console.aws.amazon.com/iot/home#/wireless/destinations)、[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html) API オペレーション、または [https://docs.aws.amazon.com/cli/latest/reference/create-destination.html](https://docs.aws.amazon.com/cli/latest/reference/create-destination.html) CLI コマンドを使用して送信先を追加できます。

   ```
   aws iotwireless create-destination --name SidewalkDestination \
       --expression-type RuleName --expression SidewalkRule \
       --role-arn arn:aws:iam::123456789012:role/SidewalkRole
   ```

## ステップ 3: エンドデバイスのプロビジョニングと登録
<a name="iot-sidewalk-qsg-step2"></a>

Python コマンドを使用して、エンドデバイスをプロビジョニングして登録できます。プロビジョニングスクリプトは、取得したデバイスの JSON データを使用して製造用バイナリイメージを生成し、ハードウェアボードにフラッシュします。次に、ハードウェアプラットフォームに接続するためのエンドデバイスを登録します。詳細については、「Amazon Sidewalk ドキュメント」の「[エンドデバイスのプロビジョニングと登録](https://docs.sidewalk.amazon/provisioning/)」を参照してください。

**注記**  
Sidewalk エンドデバイスを登録する際には、ゲートウェイが Amazon Sidewalk にオプトインしていて、ゲートウェイとデバイスがお互いの通信範囲内にある必要があります。

## ステップ 4: Sidewalk デバイスへの接続とメッセージの交換
<a name="iot-sidewalk-qsg-step4"></a>

エンドデバイスを登録したら、エンドデバイスを接続してメッセージやデバイスデータの交換を開始できます。

1. 

**Sidewalk エンドデバイスの接続**

   HDK をコンピュータに接続し、ベンダーのマニュアルに記載されている指示に従って HDK に接続します。詳細については、「Amazon Sidewalk ドキュメント」の「[エンドデバイスのプロビジョニングと登録](https://docs.sidewalk.amazon/provisioning/)」を参照してください。

1. 

**メッセージの表示と交換**

   MQTT クライアントを使用して、ルールで指定されたトピックをサブスクライブし、受信したメッセージを表示します。[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 オペレーションまたは [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-wireless-device.html) CLI コマンドを使用して、デバイスにダウンリンクメッセージを送信し、接続ステータスを確認することもできます。

   (オプション) メッセージ配信ステータスイベントを有効にして、ダウンリンクメッセージが正常に受信されたかどうかを確認できます。

   ```
   aws iotwireless send-data-to-wireless-device \
       --id "<Wireless_Device_ID>" \
       --payload-data "SGVsbG8gVG8gRGV2c2lt" \
       --wireless-metadata Sidewalk={Seq=1,AckModeRetryDurationSecs=10}
   ```