

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

# 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 が位置を解決しようとしたときに、内部サーバー例外が発生したことを示しています。このエラーを修正するには、セッションを更新して、解決する測定データを送信し直してください。