

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