

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS IoT Core デバイスの場所
<a name="device-location"></a>


|  | 
| --- |
|  AWS IoT Core Device Location 機能を使用する前に、この機能の利用規約を確認してください。 AWS は、検索の実行に使用される位置データなどの位置情報検索リクエストパラメータや、 AWS リージョン 現在使用している の外部にある、選択したサードパーティーのデータプロバイダーにその他の情報を送信する場合があることに注意してください。サードパーティープロバイダーと使用するソルバーは、受信した入力ペイロードに基づいて選択されます。詳細については、「[AWS サービス条件](https://aws.amazon.com/service-terms)」を参照してください。 | 

 AWS IoT Core Device Location を使用して、サードパーティーのソルバーを使用して IoT デバイスの場所をテストします。*ソルバー*は、測定データを解決してデバイスの位置を推定するサードパーティーベンダーが提供するアルゴリズムです。デバイスの位置を特定することで、現場でデバイスを追跡してデバッグし、問題をトラブルシューティングできます。

さまざまなソースから収集された測定データが解決され、位置情報が [GeoJSON](https://geojson.org/) ペイロードとして報告されます。GeoJSON 形式は、地理データ構造をエンコードするために使用される形式です。ペイロードには、[世界測地系 (座標系) (WGS84)](https://gisgeography.com/wgs84-world-geodetic-system/) に基づくデバイス位置の緯度と経度の座標が含まれています。

**Topics**
+ [測定タイプとソルバー](#location-measurement-types)
+ [AWS IoT Core Device Location の仕組み](#location-how-works)
+ [AWS IoT Core Device Location の使用方法](#location-how-use)
+ [IoT デバイスの位置を解決する](device-location-resolve-solvers.md)
+ [Device Location MQTT トピックを使用した AWS IoT Core デバイスロケーションの解決](device-location-reserved-topics.md)
+ [位置ソルバーとデバイスペイロード](device-location-solvers-payload.md)

## 測定タイプとソルバー
<a name="location-measurement-types"></a>

AWS IoT Core Device Location はサードパーティーベンダーと提携して、測定データを解決し、推定されるデバイスの場所を提供します。次の表は、測定タイプとサードパーティー製のロケーションソルバー、およびサポートされているデバイスに関する情報を示しています。LoRaWAN デバイスとそのデバイスロケーションの設定については、「[LoRaWAN リソースの位置を設定する](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/lorawan-configure-location.html)」を参照してください。

**注記**  
一般的な IoT デバイスと Sidewalk デバイスは、デバイスロケーション MQTT トピックを使用して位置情報を取得できます。Wi-Fi、セルラー、および IP アドレスの測定タイプで、デバイスが定義された GeoJSON 形式で[予約済みトピック](device-location-reserved-topics.md)に測定データを発行する場合、 AWS IoT Core デバイスの場所はデバイスの場所を解決できます。GNSS 測定タイプの場合、デバイスは LR11xx チップを使用して測定データをスキャンし、GNSS ソルバーを使用して解決された位置情報を取得する必要があります。LoRaWAN デバイスの位置情報を取得する方法については、 *AWS IoT Wireless ドキュメント*の[LoRaWAN リソースの位置の設定](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/lorawan-configure-location.html)」を参照してください。


**測定タイプとソルバー**  

| 計測タイプ | サードパーティーのソルバー | サポートされるデバイス | 
| --- | --- | --- | 
| Wi-Fi アクセスポイント | Wi-Fi ベースのソルバー  | 一般的な IoT デバイス、LoRaWAN、Amazon Sidewalk デバイス | 
| セルラー無線タワー: GSM、LTE、CDMA、SCDMA、WCMDA、および TD-SCDMA データ | セルラーベースのソルバー  | 一般的な IoT デバイス、LoRaWAN、Amazon Sidewalk デバイス | 
| IP アドレス | IP リバースルックアップソルバー | TCP/IP 経由で接続する IoT デバイス | 
| GNSS スキャンデータ (NAV メッセージ) | GNSS ソルバー | 一般的な IoT デバイス、LoRaWAN、Amazon Sidewalk デバイス | 
| Bluetooth Low Energy (BLE) | BLE ベースのソルバー | Amazon Sidewalk デバイス | 

ロケーションソルバーの詳細と、さまざまな測定タイプのデバイスペイロードを示す例については、「[位置ソルバーとデバイスペイロード](device-location-solvers-payload.md)」を参照してください。

## AWS IoT Core Device Location の仕組み
<a name="location-how-works"></a>

次の図は、 AWS IoT Core Device Location が測定データを収集し、デバイスの位置情報を解決する方法を示しています。

![\[AWS IoT Core Device Location が raw 測定データを使用し、デバイスの位置を解決する方法を示す画像。\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/iot-device-location.png)


次の手順は、 AWS IoT Core Device Location の仕組みを示しています。

1. 

**測定データを受信する**

   デバイスの位置に関連する未加工の測定データは、まずデバイスから送信されます。測定データは JSON ペイロードとして指定されます。

1. 

**測定データを処理する**

   測定データが処理され、 AWS IoT Core デバイスロケーションは使用する測定データを選択します。これは、Wi-Fi、セルラー、GNSS スキャン、または IP アドレス情報です。

1. 

**ソルバーを選択する**

   サードパーティーのソルバーは、測定データに基づいて選択されます。例えば、測定データに Wi-Fi と IP アドレスの情報が含まれている場合は、Wi-Fi ソルバーと IP リバースルックアップソルバーが選択されます。

1. 

**解決済みロケーションを取得する**

   API リクエストがソルバープロバイダーに送信され、ロケーションの解決がリクエストされます。 AWS IoT Core デバイスロケーションはソルバーから推定位置情報を取得します。

1. 

**解決済みの位置を選択する**

   解決された位置情報とその精度が比較され、 AWS IoT Core Device Location は最高の精度で位置情報結果を選択します。

1. 

**位置情報を出力する**

   位置情報が GeoJSON ペイロードとして送信されます。ペイロードには、WGS84 の地理座標、精度情報、信頼度レベル、および解決済みの位置が取得されたタイムスタンプが含まれています。

## AWS IoT Core Device Location の使用方法
<a name="location-how-use"></a>

次の手順は、 AWS IoT Core Device Location の使用方法を示しています。

1. 

**測定データを提供する**

   デバイスの位置に関連する未加工の測定データを JSON ペイロードとして指定します。ペイロード測定データを取得するには、デバイスログに移動するか、CloudWatch Logs を使用してペイロードデータ情報をコピーします。JSON ペイロードには 1 つ以上のタイプのデータ測定が含まれている必要があります。さまざまなソルバーのペイロード形式を示す例については、「[位置ソルバーとデバイスペイロード](device-location-solvers-payload.md)」を参照してください。

1. 

**位置情報を解決する**

    AWS IoT コンソールの [Device Location](https://console.aws.amazon.com/iot/home#/device-location-test) ページまたは [GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html) API オペレーションを使用して、ペイロード測定データを渡してデバイスの位置を解決します。 AWS IoT Core Device Location は、最も高い精度でソルバーを選択し、デバイスの位置を報告します。詳細については、「[IoT デバイスの位置を解決する](device-location-resolve-solvers.md)」を参照してください。

1. 

**位置情報をコピーする**

    AWS IoT Core Device Location によって解決され、GeoJSON ペイロードとして報告された位置情報を確認します。ペイロードをコピーして、アプリケーションやその他の AWS のサービスで使用できます。たとえば、 [ロケーション](location-rule-action.md) AWS IoT ルールアクションを使用して、地理的位置データを Amazon Location Service に送信できます。

以下のトピックでは、 AWS IoT Core デバイスロケーションの使用方法とデバイスロケーションペイロードの例を示します。
+ [IoT デバイスの位置を解決する](device-location-resolve-solvers.md)
+ [位置ソルバーとデバイスペイロード](device-location-solvers-payload.md)

# IoT デバイスの位置を解決する
<a name="device-location-resolve-solvers"></a>

 AWS IoT Core Device Location を使用してデバイスからの測定データをデコードし、サードパーティーのソルバーを使用してデバイスの位置を解決します。解決された位置は、地理座標と精度情報を含む GeoJSON ペイロードとして生成されます。デバイスの場所は、 AWS IoT コンソール、 AWS IoT ワイヤレス API、または から解決できます AWS CLI。

**Topics**
+ [デバイスの位置を解決する (コンソール)](#location-resolve-console)
+ [デバイス位置の解決 (API)](#location-resolve-api)
+ [位置の解決時のトラブルシューティング](#location-resolve-troubleshoot)

## デバイスの位置を解決する (コンソール)
<a name="location-resolve-console"></a>

デバイスの位置を解決するには (コンソール)

1.  AWS IoT コンソールの [Device Location](https://console.aws.amazon.com/iot/home#/device-location-test) ページに移動します。

1. デバイスログまたは CloudWatch Logs からペイロード測定データを取得し、**[ペイロードを介して位置を解決する]** セクションに入力します。

   以下のコードは、JSON ペイロードのサンプルを示しています。ペイロードには、セルラーと Wi-Fi の測定データが含まれています。ペイロードに他の種類の測定データが含まれている場合は、最も精度の高いソルバーが使用されます。詳細な説明とペイロードの例については、「[位置ソルバーとデバイスペイロード](device-location-solvers-payload.md)」を参照してください。
**注記**  
JSON ペイロードには、少なくとも 1 つのタイプの測定データが含まれている必要があります。

   ```
   {
       "Timestamp": 1664313161,
       "Ip":{
           "IpAddress": "54.240.198.35"        
       },
       "WiFiAccessPoints": [{
           "MacAddress": "A0:EC:F9:1E:32:C1",
           "Rss": -77
       }],
       "CellTowers": {
           "Gsm": [{
               "Mcc": 262,
               "Mnc": 1,
               "Lac": 5126,
               "GeranCid": 16504,
               "GsmLocalId": {
                   "Bsic": 6,
                   "Bcch": 82
               },
               "GsmTimingAdvance": 1,
               "RxLevel": -110,
               "GsmNmr": [{
                   "Bsic": 7,
                   "Bcch": 85,
                   "RxLevel": -100,
                   "GlobalIdentity": {
                       "Lac": 1,
                       "GeranCid": 1
                   }
               }]
           }],
           "Wcdma": [{
               "Mcc": 262,
               "Mnc": 7,
               "Lac": 65535,
               "UtranCid": 14674663,
               "WcdmaNmr": [{
                       "Uarfcndl": 10786,
                       "UtranCid": 14674663,
                       "Psc": 149
                   },
                   {
                       "Uarfcndl": 10762,
                       "UtranCid": 14674663,
                       "Psc": 211
                   }
               ]
           }],
           "Lte": [{
               "Mcc": 262,
               "Mnc": 2,
               "EutranCid": 2898945,
               "Rsrp": -50,
               "Rsrq": -5,
               "LteNmr": [{
                       "Earfcn": 6300,
                       "Pci": 237,
                       "Rsrp": -60,
                       "Rsrq": -6,
                       "EutranCid": 2898945
                   },
                   {
                       "Earfcn": 6300,
                       "Pci": 442,
                       "Rsrp": -70,
                       "Rsrq": -7,
                       "EutranCid": 2898945
                   }
               ]
           }]
       }
   }
   ```

1. 位置情報を解決するには、**[Resolve]** (解決) を選択します。

   位置情報は、タイプブロブのものであり、地理的データ構造のエンコードに使用される形式である GeoJSON 形式を使用するペイロードとして返されます。ペイロードには以下が含まれます。
   + 緯度と経度の情報を含む WGS84 の地理座標。高度情報も含まれる場合があります。
   + レポートされる位置情報のタイプ (**ポイントなど**)。ポイント位置タイプは、位置を [GeoJSON ポイント](https://geojson.org/geojson-spec.html#point)としてエンコードされた WGS84 の緯度と経度として表します。
   + ソルバーによって推定された位置情報と実際のデバイスの位置との差を示す、水平および垂直の精度情報 (メートル単位)。
   + 位置推定レスポンスの不確実性を示す信頼度レベル。デフォルト値は 0.68 です。これは、実際のデバイス位置が推定位置の不確実性半径内にある確率が 68% であることを示しています。
   + デバイスが位置している都市、州、国、および郵便番号。この情報は、IP リバースルックアップソルバーが使用されている場合にのみ報告されます。
   + 位置が解決された日時に対応するタイムスタンプ情報。Unix タイムスタンプ形式を使用します。

   以下のコードは、位置の解決によって返される GeoJSON ペイロードのサンプルを示しています。
**注記**  
ロケーションを解決しようとしたときに AWS IoT Core Device Location がエラーを報告した場合は、エラーをトラブルシューティングしてロケーションを解決できます。詳細については、「[位置の解決時のトラブルシューティング](#location-resolve-troubleshoot)」を参照してください。

   ```
   {
       "coordinates": [
           13.376076698303223,
           52.51823043823242
       ],
       "type": "Point",
       "properties": {
           "verticalAccuracy": 45,
           "verticalConfidenceLevel": 0.68,
           "horizontalAccuracy": 303,
           "horizontalConfidenceLevel": 0.68,
           "country": "USA",
           "state": "CA",
           "city": "Sunnyvalue",
           "postalCode": "91234",
           "timestamp": "2022-11-18T12:23:58.189Z"
       }
   }
   ```

1. **リソースの場所**セクションに移動し、 AWS IoT Core デバイスの場所 によって報告された位置情報を確認します。ペイロードをコピーして、他のアプリケーションや AWS のサービスで使用できます。例えば、[ロケーション](location-rule-action.md) を使用して位置データを Amazon Location Service に送信できます。

## デバイス位置の解決 (API)
<a name="location-resolve-api"></a>

 AWS IoT Wireless API を使用してデバイスの位置を解決するには、[GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html) API オペレーションまたは [get-position-estimate](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-position-estimate.html) CLI コマンドを使用します。ペイロード測定データを入力として指定し、API オペレーションを実行してデバイスの位置を解決します。

**注記**  
`GetPositionEstimate` API オペレーションにはデバイスや状態の情報は保存されず、過去の位置データを取得することもできません。1 回限りのオペレーションを実行して測定データを解決し、推定位置を生成します。位置情報を取得するには、この API オペレーションを実行するたびにペイロード情報を指定する必要があります。

次のコマンドは、この API オペレーションを使用して位置を解決する方法の例を説明しています。

**注記**  
`get-position-estimate` CLI コマンドを実行する場合、出力 JSON ファイルを最初の入力として指定する必要があります。この JSON ファイルには、CLI からの応答として取得した推定位置情報が GeoJSON 形式で格納されます。例えば、次のコマンドは位置情報を *locationout.json* ファイルに保存します。

```
aws iotwireless get-position-estimate locationout.json \
    --ip IpAddress=""54.240.198.35"" \ 
    --wi-fi-access-points \ 
        MacAddress="A0:EC:F9:1E:32:C1",Rss=-75 \
        MacAddress="A0:EC:F9:15:72:5E",Rss=-67
```

この例では、測定タイプとして Wi-Fi アクセスポイントと IP アドレスの両方が含まれています。 AWS IoT Core デバイスロケーションは Wi-Fi ソルバーと IP リバースルックアップソルバーから選択し、精度の高いソルバーを選択します。

解決された位置は、地理的データ構造のエンコードに使用される形式である GeoJSON 形式を使用するペイロードとして返されます。その後、*locationout.json* ファイルに保存されます。ペイロードには、WGS84 の緯度と経度の座標、精度と信頼度レベルの情報、位置データタイプ、および位置が解決されたタイムスタンプが含まれています。

```
{
    "coordinates": [
        13.37704086303711,
        52.51865005493164
    ],
    "type": "Point",
    "properties": {
        "verticalAccuracy": 707,
        "verticalConfidenceLevel": 0.68,
        "horizontalAccuracy": 389,
        "horizontalConfidenceLevel": 0.68,
        "country": "USA",
        "state": "CA",
        "city": "Sunnyvalue",
        "postalCode": "91234",
        "timestamp": "2022-11-18T14:03:57.391Z"
    }
}
```

## 位置の解決時のトラブルシューティング
<a name="location-resolve-troubleshoot"></a>

ロケーションを解決しようとすると、次のいずれかのエラーコードが表示されることがあります。 AWS IoT Core デバイスロケーションは `GetPositionEstimate` API オペレーションの使用時にエラーを生成するか、 AWS IoT コンソールでエラーに対応する行番号を参照する場合があります。
+ 

**400 エラー**  
このエラーは、デバイスペイロード JSON の形式を AWS IoT Core Device Location で検証できないことを示します。このエラーは、次の理由で発生する可能性があります。
  + JSON 測定データの形式が正しくない。
  + ペイロードにタイムスタンプ情報のみが含まれている。
  + IP アドレスなどの測定データパラメータが無効である。

  このエラーを解決するには、JSON が正しくフォーマットされ、1 つ以上の測定タイプのデータが入力として含まれているかどうかを確認してください。IP アドレスが無効な場合、有効な IP アドレスを指定してエラーを解決する方法については、「[IP リバースルックアップソルバー](device-location-solvers-payload.md#location-solvers-ip)」を参照してください。
+ 

**403 エラー**  
このエラーは、API オペレーションを実行したり、 AWS IoT コンソールを使用してデバイスの場所を取得したりするアクセス許可がないことを示します。このエラーを解決するには、このアクションを実行するために必要なアクセス許可があることを確認してください。このエラーは、 AWS マネジメントコンソール セッションまたは AWS CLI セッショントークンの有効期限が切れている場合に発生する可能性があります。このエラーを解決するには、 を使用するようにセッショントークンを更新するか AWS CLI、 からログアウト AWS マネジメントコンソール してから、認証情報を使用してログインします。
+ 

**404 エラー**  
このエラーは、 AWS IoT Core Device Location によって位置情報が見つからないか、解決されなかったことを示します。このエラーは、測定データ入力のデータが十分ではないなどの場合に発生する可能性があります。例えば、次のようになります。
  + MAC アドレスまたはセルラータワーの情報が不十分です。
  + この IP アドレスでは、位置を検索したり取得したりすることはできません。
  + GNSS ペイロードが不十分です。

  このような場合のエラーを解決するには、測定データにデバイスの位置を特定するのに必要な情報が十分に含まれているかどうかを確認してください。
+ 

**500 エラー**  
このエラーは、 AWS IoT Core Device Location が位置を解決しようとしたときに、内部サーバー例外が発生したことを示しています。このエラーを修正するには、セッションを更新して、解決する測定データを送信し直してください。

# Device Location MQTT トピックを使用した AWS IoT Core デバイスロケーションの解決
<a name="device-location-reserved-topics"></a>

リザーブド MQTT トピックを使用して、 Device Location 機能を使用して AWS IoT Core デバイスの最新の位置情報を取得できます。

## デバイスの位置情報 MQTT トピックの形式
<a name="device-location-topics-format"></a>

 AWS IoT Core Device Location の予約済みトピックでは、次のプレフィックスを使用します。

`$aws/device_location/{customer_device_id}/`

完全なトピックを作成するには、まず `customer_device_id` を、デバイスを識別するために使用する固有の ID に置き換えてください。デバイスが AWS IoT モノとして登録されている場合は`WirelessDeviceId`、 for LoRaWAN や Sidewalk デバイスなどの を指定し`thingName`、 を指定することをお勧めします。次に、以下のセクションに示すように、`get_position_estimate` または `get_position_estimate/accepted` などのトピックスタブをトピックに追加します。

**注記**  
`{customer_device_id}` に含むことができるのは、英文字、数字、およびダッシュのみです。デバイス位置トピックに登録する場合、プラス記号 (\$1) をワイルドカードとして使用することのみが可能です。例えば、`{customer_device_id}` に対して `+` ワイルドカードを使用して、デバイスの位置情報を取得できます。トピック `$aws/device_location/+/get_position_estimate/accepted` にサブスクライブすると、正常に解決された場合、任意のデバイス ID と一致するデバイスの位置情報を含むメッセージが発行されます。

Device AWS IoT Core Location を操作するために使用される予約済みトピックを次に示します。


**デバイス位置 MQTT トピック**  

| Topic | 許可されている操作 | 説明 | 
| --- | --- | --- | 
|  \$1aws/device\$1location/*customer\$1device\$1id*/get\$1position\$1estimate  | 発行 |  デバイスは、このトピックに発行して、 AWS IoT Core デバイスロケーションによって解決されるスキャンされた未加工の測定データを取得します。  | 
|  \$1aws/device\$1location/*customer\$1device\$1id*/get\$1position\$1estimate/accepted  | Subscribe |  AWS IoT Core Device Location は、デバイスの位置が正常に解決されると、位置情報をこのトピックに発行します。  | 
|  \$1aws/device\$1location/*customer\$1device\$1id*/get\$1position\$1estimate/rejected  | Subscribe |  AWS IoT Core Device Location は、デバイスの場所の解決に失敗すると、エラー情報をこのトピックに発行します。  | 

## デバイスの位置情報 MQTT トピックのポリシー
<a name="device-location-topics-policy"></a>

デバイスの場所トピックからメッセージを受信するには、デバイスが AWS IoT デバイスゲートウェイに接続して MQTT トピックをサブスクライブできるようにするポリシーを使用する必要があります。

以下は、さまざまなトピックのメッセージを受信するために必要なポリシーの例です。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/device_location/device-123/get_position_estimate"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/device_location/device-123/get_position_estimate/accepted",
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/device_location/device-123/get_position_estimate/rejected"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/device_location/device-123/get_position_estimate/accepted",
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/device_location/device-123/get_position_estimate/rejected"
            ]
        }
    ]
}
```

## デバイスの位置情報トピックとペイロード
<a name="device-location-topics-payload"></a>

Device AWS IoT Core Location トピック、メッセージペイロードの形式、各トピックのポリシー例を次に示します。

**Topics**
+ [/get\$1position\$1estimate](#get-position-estimate)
+ [/get\$1position\$1estimate/accepted](#get-position-estimate-accepted)
+ [/get\$1position\$1estimate/rejected](#get-position-estimate-rejected)

### /get\$1position\$1estimate
<a name="get-position-estimate"></a>

このトピックにメッセージを発行して、デバイスロケーションによって解決される未加工の測定データを AWS IoT Core デバイスから取得します。

```
$aws/device_location/customer_device_id/get_position_estimate
```

AWS IoT Core Device Location は、 [/get\$1position\$1estimate/accepted](#get-position-estimate-accepted)または に発行することで応答します[/get\$1position\$1estimate/rejected](#get-position-estimate-rejected)。

**注記**  
このトピックに発行されるメッセージは、有効な JSON ペイロードでなければなりません。入力メッセージが有効な JSON 形式でない場合、レスポンスは返されません。詳細については、「[メッセージペイロード](#get-position-estimate-payload)」を参照してください。

#### メッセージペイロード
<a name="get-position-estimate-payload"></a>

メッセージペイロード形式は、 AWS IoT Wireless API オペレーションリクエスト本文 と同様の構造に従います[https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html)。以下を含みます。
+ 位置が解決された日時に対応するオプションの `Timestamp` 文字列。`Timestamp` 文字列の最小長は 1、最大長は 10 です。
+ リクエストをレスポンスにマッピングできる、オプションの `MessageId` 文字列。この文字列を指定すると、`get_position_estimate/accepted` または `get_position_estimate/rejected` トピックにパブリッシュされるメッセージにはこの `MessageId` が含まれます。`MessageID` 文字列の最小長は 1、最大長は 256 です。
+ 次の 1 つ以上の測定タイプを含む、デバイスからの測定データ。
  + [https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_WiFiAccessPoint.html](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_WiFiAccessPoint.html)
  + [https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CellTowers.html](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CellTowers.html)
  + [https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_Ip.html](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_Ip.html)
  + [https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_Gnss.html](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_Gnss.html)

以下は、メッセージペイロードのサンプルを示しています。

```
{
    "Timestamp": "1664313161",               
    "MessageId": "ABCD1",                
    "WiFiAccessPoints":  [                           
        {
            "MacAddress": "A0:EC:F9:1E:32:C1",                   
            "Rss": -66 
        }
    ],    
    "Ip":{
        "IpAddress": "54.192.168.0"                         
    },
    "Gnss":{
      "Payload":"8295A614A2029517F4F77C0A7823B161A6FC57E25183D96535E3689783F6CA48",
      "CaptureTime":1354393948
    }
}
```

#### ポリシーの例
<a name="get-position-estimate-policy"></a>

以下に示しているのは、必要なポリシーの例です。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/device_location/device-123/get_position_estimate"
            ]
        }
    ]
}
```

### /get\$1position\$1estimate/accepted
<a name="get-position-estimate-accepted"></a>

AWS IoT Core Device Location は、デバイスの解決された位置情報を返すときに、このトピックへのレスポンスを発行します。位置情報は [GeoJSON 形式](https://geojson.org/)で返されます。

```
$aws/device_location/customer_device_id/get_position_estimate/accepted
```

次は、メッセージペイロードとポリシーの例を示しています。

#### メッセージペイロード
<a name="get-position-estimate-accepted-payload"></a>

次は、GeoJSON 形式のメッセージペイロードの例を示しています。raw 測定データ`MessageId`で を指定し、 AWS IoT Core Device Location が位置情報を正常に解決した場合、メッセージペイロードは同じ`MessageId`情報を返します。

```
{
    "coordinates": [
        13.37704086303711,
        52.51865005493164
    ],
    "type": "Point",
    "properties": {
        "verticalAccuracy": 707,
        "verticalConfidenceLevel": 0.68,
        "horizontalAccuracy": 389,
        "horizontalConfidenceLevel": 0.68,
        "country": "USA",
        "state": "CA",
        "city": "Sunnyvalue",
        "postalCode": "91234",        
        "timestamp": "2022-11-18T14:03:57.391Z",
        "messageId": "ABCD1"
    }
}
```

#### ポリシーの例
<a name="get-position-estimate-accepted-policy"></a>

以下に示しているのは、必要なポリシーの例です。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/device_location/device-123/get_position_estimate/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/device_location/device-123/get_position_estimate/accepted"
            ]
        }
    ]
}
```

### /get\$1position\$1estimate/rejected
<a name="get-position-estimate-rejected"></a>

AWS IoT Core Device Location は、デバイスの場所の解決に失敗すると、このトピックにエラーレスポンスを発行します。

```
$aws/device_location/customer_device_id/get_position_estimate/rejected
```

次は、メッセージペイロードとポリシーの例を示しています。これらのエラーの詳細については、「[位置の解決時のトラブルシューティング](device-location-resolve-solvers.md#location-resolve-troubleshoot)」を参照してください。

#### メッセージペイロード
<a name="get-position-estimate-rejected-payload"></a>

以下は、エラーコードとメッセージを提供するメッセージペイロードの例です。これは、 AWS IoT Core Device Location が位置情報の解決に失敗した理由を示しています。raw 測定データを提供する`MessageId`ときに を指定し、 AWS IoT Core Device Location が位置情報を解決できなかった場合、メッセージペイロードに同じ`MessageId`情報が返されます。

```
{
    "errorCode": 500,
    "errorMessage":"Internal server error",
    "messageId": "ABCD1"
}
```

#### ポリシーの例
<a name="get-position-estimate-rejected-policy"></a>

以下に示しているのは、必要なポリシーの例です。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Subscribe"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/device_location/device-123/get_position_estimate/rejected"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Receive"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/device_location/device-123/get_position_estimate/rejected"
      ]
    }
  ]
}
```

# 位置ソルバーとデバイスペイロード
<a name="device-location-solvers-payload"></a>

ロケーションソルバーは、IoT デバイスの位置を解決するために使用できるアルゴリズムです。 AWS IoT Core デバイスロケーションは、次のロケーションソルバーをサポートしています。これらの測定タイプの JSON ペイロード形式の例、ソルバーがサポートするデバイス、および位置の解決方法が表示されます。

デバイスの位置を特定するには、これらの測定データタイプを 1 つ以上指定してください。すべての測定データを組み合わせた単一の解決済み位置が返されます。

**Topics**
+ [Wi-Fi ベースのソルバー](#location-solvers-wifi)
+ [セルラーベースのソルバー](#location-solvers-cellular)
+ [IP リバースルックアップソルバー](#location-solvers-ip)
+ [GNSS ソルバー](#location-solvers-gnss)
+ [Amazon Sidewalk 対応デバイスの BLE ソルバー](#location-solvers-ble)

## Wi-Fi ベースのソルバー
<a name="location-solvers-wifi"></a>

Wi-Fi ベースのソルバーを使用して、Wi-Fi アクセスポイントからのスキャン情報を使用して位置を解決します。ソルバーは DDoS テクノロジーをサポートしており、TCP/IP、LoRaWAN ワイヤレスデバイス、Amazon Sidewalk 対応デバイスを介して接続する一般的な IoT デバイスの位置を計算するために使用できます。

LoRaWAN デバイスには、受信した Wi-Fi スキャン情報をデコードする LoRa Edge チップセットが必要です。LoRa Edge は、位置情報アプリケーションを対象とした長距離 LoRa トランシーバー、マルチコンステレーション GNSS スキャナー、パッシブ Wi-Fi MAC スキャナーを統合した超低電力プラットフォームです。デバイスからアップリンクメッセージを受信すると、Wi-Fi スキャンデータが AWS IoT Core Device Location に送信され、その場所は Wi-Fi スキャン結果に基づいて推定されます。次に、デコードされた情報は Wi-Fi ベースのソルバーに渡され、位置情報が取得されます。

Amazon Sidewalk 対応デバイスの位置情報データの解決の詳細については、 デ[AWS IoT Core for Amazon Sidewalk ベロッパーガイド](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-sidewalk.html)を参照してください。

### Wi-Fi ベースのソルバーペイロードの例
<a name="location-solvers-wifi-payload"></a>

次のコードは、測定データを含むデバイスからの JSON ペイロードの例を示しています。 AWS IoT Core Device Location はこのデータを入力として受信すると、ソルバープロバイダーに HTTP リクエストを送信して位置情報を解決します。情報を取得するには、MAC アドレスと RSS (受信信号強度) の値を指定します。そのためには、この形式を使用して JSON ペイロードを指定するか、[GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html) API オペレーションの [WifiAccessPoints](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_WiFiAccessPoint.html) オブジェクトパラメータを使用してください。

```
{
    "Timestamp": 1664313161,    // optional
    "WiFiAccessPoints": [ 
        {
            "MacAddress": "A0:EC:F9:1E:32:C1",  // required
            "Rss": -75                          // required
        }
    ]
}
```

## セルラーベースのソルバー
<a name="location-solvers-cellular"></a>

 セルラーベースのソルバーを使用すると、セルラーラジオタワーから取得した測定データを使用して位置を解析できます。ソルバーは以下の技術をサポートしています。これらのテクノロジーのいずれかまたはすべてからの測定データを含めた場合でも、解決された単一の位置情報が取得されます。
+ GSM
+ CDMA
+ WCDMA
+ TD-SCDMA
+ LTE

### セルラーベースのソルバーペイロードの例
<a name="location-solvers-cellular-payload"></a>

次のコードは、セルラー測定データを含むデバイスからの JSON ペイロードの例を示しています。 AWS IoT Core Device Location はこのデータを入力として受信すると、ソルバープロバイダーに HTTP リクエストを送信して位置情報を解決します。情報を取得するには、コンソールでこの形式を使用して JSON ペイロードを指定するか、[GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html) API オペレーションの [CellTowers](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html#iotwireless-GetPositionEstimate-request-CellTowers) パラメータの値を指定します。これらのセルラーテクノロジーのいずれかまたはすべてを使用してパラメータの値を指定することにより、測定データを提供できます。

#### LTE (長期的進化)
<a name="location-solvers-cellular-lte"></a>

この測定データを使用するときは、モバイルネットワークのネットワークや国コードなどの情報、およびローカル ID に関する情報を含むオプションの追加パラメータを指定する必要があります。次のコードは、ペイロード形式の例を示しています。これらのパラメータの詳細については、「[LTE object](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_LteObj.html)」(LTE オブジェクト) を参照してください。

```
{
    "Timestamp": 1664313161,           // optional 
    "CellTowers": {
        "Lte": [
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required
          "EutranCid": int,             // required. Make sure that you use int for EutranCid.
          "Tac": int,                   // optional
          "LteLocalId": {               // optional
              "Pci": int,               // required 
              "Earfcn": int,            // required 
          },
          "LteTimingAdvance": int,      // optional 
          "Rsrp": int,                  // optional 
          "Rsrq": float,                // optional 
          "NrCapable": boolean,         // optional 
          "LteNmr": [                   // optional
                {
                    "Pci": int,         // required 
                    "Earfcn": int,      // required 
                    "EutranCid": int,   // required
                    "Rsrp": int,        // optional 
                    "Rsrq": float       // optional 
                }
            ]
         }
      ] 
   }
}
```

#### GSM (モバイル通信用グローバルシステム)
<a name="location-solvers-cellular-gsm"></a>

この測定データを使用するときは、モバイルネットワークのネットワークと国コード、基地局情報、オプションの追加パラメータなどの情報を指定する必要があります。次のコードは、ペイロード形式の例を示しています。これらのパラメータの詳細については、「[GSM object](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GsmObj.html)」(GSM オブジェクト) を参照してください。

```
{   
    "Timestamp": 1664313161,           // optional
    "CellTowers": {
        "Gsm": [ 
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required
          "Lac": int,                   // required
          "GeranCid": int,              // required
          "GsmLocalId": {               // optional
              "Bsic": int,              // required 
              "Bcch": int,              // required 
          },
          "GsmTimingAdvance": int,      // optional
          "RxLevel": int,               // optional
          "GsmNmr": [                   // optional
            {
                "Bsic": int,            // required
                "Bcch": int,            // required
                "RxLevel": int,         // optional
                "GlobalIdentity": {
                    "Lac": int,         // required
                    "GeranCid": int     // required
                }
             }
          ]
       }
    ]  
}
```

#### CDMA (符号分割多元接続)
<a name="location-solvers-cellular-cdma"></a>

この測定データを使用するときは、信号電力や識別情報、基地局情報、オプションの追加パラメータなどの情報を指定する必要があります。次のコードは、ペイロード形式の例を示しています。これらのパラメータの詳細については、「[CDMA object](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CdmaObj.html)」(CDMA オブジェクト) を参照してください。

```
{
    "Timestamp": 1664313161,               // optional
    "CellTowers": {
        "Cdma": [ 
        {
            "SystemId": int,                // required 
            "NetworkId": int,               // required 
            "BaseStationId": int,           // required 
            "RegistrationZone": int,        // optional 
            "CdmaLocalId": {                // optional
              "PnOffset": int,              // required 
              "CdmaChannel": int,           // required 
            },
            "PilotPower": int,              // optional 
            "BaseLat": float,               // optional 
            "BaseLng": float,               // optional 
            "CdmaNmr": [                    // optional 
                {
                    "PnOffset": int,        // required 
                    "CdmaChannel": int,     // required 
                    "PilotPower": int,      // optional 
                    "BaseStationId": int    // optional 
                }
             ]
          }
       ]
    }
}
```

#### WCDMA (広帯域符号分割多元接続)
<a name="location-solvers-cellular-wcdma"></a>

この測定データを使用するときは、ネットワークと国コード、信号電力と識別情報、基地局情報、オプションの追加パラメータなどの情報を指定する必要があります。次のコードは、ペイロード形式の例を示しています。これらのパラメータの詳細については、「[CDMA object](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CdmaObj.html)」(CDMA オブジェクト) を参照してください。

```
{
    "Timestamp": 1664313161,           // optional
    "CellTowers": {
        "Wcdma": [ 
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required 
          "UtranCid": int,              // required 
          "Lac": int,                   // optional 
          "WcdmaLocalId": {             // optional
              "Uarfcndl": int,          // required
              "Psc": int,               // required 
          },
          "Rscp": int,                  // optional
          "Pathloss": int,              // optional 
          "WcdmaNmr": [                 // optional 
                {
                  "Uarfcndl": int,      // required 
                  "Psc": int,           // required 
                  "UtranCid": int,      // required
                  "Rscp": int,          // optional 
                  "Pathloss": int,      // optional 
                }
             ]
          }
       ]
    }
}
```

#### TD-SCDMA (時分割同期符号分割多元接続)
<a name="location-solvers-cellular-tdscdma"></a>

この測定データを使用するときは、ネットワークと国コード、信号電力と識別情報、基地局情報、オプションの追加パラメータなどの情報を指定する必要があります。次のコードは、ペイロード形式の例を示しています。これらのパラメータの詳細については、「[CDMA object](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CdmaObj.html)」(CDMA オブジェクト) を参照してください。

```
{
    "Timestamp": 1664313161,           // optional
    "CellTowers": {
        "Tdscdma": [ 
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required
          "UtranCid": int,              // required
          "Lac": int,                   // optional
          "TdscdmaLocalId": {           // optional
              "Uarfcn": int,            // required 
              "CellParams": int,        // required 
          },
          "TdscdmaTimingAdvance": int,  // optional
          "Rscp": int,                  // optional
          "Pathloss": int,              // optional
          "TdscdmaNmr": [               // optional 
                {
                  "Uarfcn": int,        // required 
                  "CellParams": int,    // required 
                  "UtranCid": int,      // optional
                  "Rscp": int,          // optional
                  "Pathloss": int,      // optional 
                }
             ]
         }
      ]
   }
}
```

## IP リバースルックアップソルバー
<a name="location-solvers-ip"></a>

IP リバースルックアップソルバーを使用すると、IP アドレスを入力として使用して位置を特定できます。ソルバーは、プロビジョニングされたデバイスから位置情報を取得できます AWS IoT。IPv4 または IPv6 の標準パターン、または IPv6 の 16 進圧縮パターンのいずれかの形式を使用して、IP アドレス情報を指定します。次に、デバイスが置かれている都市や国などの追加情報を含む、解決済みの推定位置情報を取得します。

**注記**  
IP リバースルックアップを使用することで、特定の家庭や通りの住所を特定したり探し出したりする目的で利用しないことに同意するものとします。

### IP リバースルックアップソルバーペイロードの例
<a name="location-solvers-ip-payload"></a>

次のコードは、測定データを含むデバイスからの JSON ペイロードの例を示しています。 AWS IoT Core Device Location は、測定データ内の IP アドレス情報を受信すると、ソルバープロバイダーのデータベースでこの情報を検索し、位置情報の解決に使用されます。情報を取得するには、この形式を使用して JSON ペイロードを指定するか、[GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html) API オペレーションの [Ip](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html#iotwireless-GetPositionEstimate-request-Ip) パラメータの値を指定します。

**注記**  
このソルバーを使用すると、座標に加えてデバイスが配置されている都市、州、国、郵便番号も報告されます。例については、[デバイスの位置を解決する (コンソール)](device-location-resolve-solvers.md#location-resolve-console)を参照してください。

```
{
    "Timestamp": 1664313161,
    "Ip":{
        "IpAddress":"54.240.198.35"
      }
}
```

## GNSS ソルバー
<a name="location-solvers-gnss"></a>

GNSS (グローバルナビゲーションサテライトシステム) ソルバーを使用して、GNSS スキャン結果メッセージまたは NAV メッセージに含まれる情報を使用してデバイスの位置を取得します。オプションで追加の GNSS 支援情報を指定できます。これにより、ソルバーが信号を検索するために使用する必要のある変数の数が減ります。位置、高度、キャプチャ時間、精度情報を含むこの支援情報を提供することで、ソルバーは表示されている衛星を簡単に識別し、デバイスの位置を計算できます。

このソルバーは、LoRaWAN デバイスと Amazon Sidewalk 対応デバイス、およびプロビジョニングされた AWS IoT デバイスでプロビジョニングされた他のデバイスで使用できます AWS IoT。一般的な IoT デバイスでは、デバイスが GNSS による位置推定をサポートしている場合、デバイスから GNSS スキャン情報を受信すると、トランシーバーが位置情報を解決します。LoRaWAN デバイスの場合、デバイスには LoRa Edge チップセットが搭載されている必要があります。デバイスからアップリンクメッセージを受信すると、GNSS スキャンデータが AWS IoT for LoRaWAN または AWS IoT for Amazon Sidewalk に送信され、トランシーバーからのスキャン結果に基づいて場所が推定されます。

### GNSS ソルバーペイロードの例
<a name="location-solvers-gnss-payload"></a>

次のコードは、測定データを含むデバイスからの JSON ペイロードの例を示しています。 AWS IoT Core Device Location は、測定データ内のペイロードを含む GNSS スキャン情報を受信すると、トランシーバーと含まれる追加の支援情報を使用してシグナルを検索し、位置情報を解決します。情報を取得するには、この形式を使用して JSON ペイロードを指定するか、[GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html) API オペレーションの [Gnss](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html#iotwireless-GetPositionEstimate-request-Gnss) パラメータの値を指定します。

**注記**  
 AWS IoT Core Device Location がデバイスの位置を解決する前に、ペイロードから送信先バイトを削除する必要があります。

```
{   
    "Timestamp": 1664313161,                  // optional
    "Gnss": { 
        "AssistAltitude": number,             // optional
        "AssistPosition": [ number ],         // optional
        "CaptureTime": number,                // optional
        "CaptureTimeAccuracy": number,        // optional
        "Payload": "string",                  // required
        "Use2DSolver": boolean                // optional
   }
}
```

## Amazon Sidewalk 対応デバイスの BLE ソルバー
<a name="location-solvers-ble"></a>

**注記**  
Bluetooth Low Energy ベースのロケーションの場合、 は Amazon Sidewalk に接続され、コミュニティ検出機能が有効になっている近くの Sidewalk ゲートウェイのおおよその場所に基づいてロケーション座標 AWS IoT を返します。Gateway Location Data は AWS コンテンツであり、Amazon Sidewalk に接続されているデバイスの検索を支援する目的でのみ提供され、その目的でのみデータを使用する必要があります。位置情報データを使用およびアクセスできるのは、当社が通常提供するインターフェイスと機能のみです。また、当社が提供する Gateway 位置情報データの再識別、リバースエンジニアリング、再マッピングを試みてはなりません。

経由で接続する Amazon Sidewalk エンドデバイスは、Amazon Sidewalk エンドデバイスによって発行された BLE、Wi-Fi、または GNSS アップリンクメッセージを使用して位置データを解決 AWS IoT Core for Amazon Sidewalk できます。詳細については、 デ[AWS IoT Core for Amazon Sidewalk ベロッパーガイド](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/sidewalk-getting-started.html)を参照してください。