

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menyelesaikan lokasi perangkat menggunakan AWS IoT Core Lokasi Perangkat topik MQTT
<a name="device-location-reserved-topics"></a>

Anda dapat menggunakan topik MQTT yang dipesan untuk mendapatkan informasi lokasi terbaru untuk perangkat Anda dengan fitur Lokasi AWS IoT Core Perangkat.

## Format topik MQTT lokasi perangkat
<a name="device-location-topics-format"></a>

Topik cadangan untuk Lokasi AWS IoT Core Perangkat menggunakan awalan berikut:

`$aws/device_location/{{{customer_device_id}}}/`

Untuk membuat topik lengkap, pertama-tama ganti `{{customer_device_id}}` dengan ID unik yang Anda gunakan untuk mengidentifikasi perangkat Anda. Kami menyarankan Anda menentukan`WirelessDeviceId`, seperti untuk perangkat LoRa WAN dan Trotoar, dan`{{thingName}}`, jika perangkat Anda terdaftar sebagai AWS IoT sesuatu. Anda kemudian menambahkan topik dengan rintisan topik, seperti `get_position_estimate` atau `get_position_estimate/accepted` seperti yang ditunjukkan di bagian berikut.

**catatan**  
Hanya `{{{customer_device_id}}}` dapat berisi huruf, angka, dan tanda hubung. Saat berlangganan topik lokasi perangkat, Anda hanya dapat menggunakan tanda plus (\+) sebagai karakter wildcard. Misalnya, Anda dapat menggunakan `+` wildcard `{{{customer_device_id}}}` untuk mendapatkan informasi lokasi untuk perangkat Anda. Saat Anda berlangganan topik`$aws/device_location/{{+}}/get_position_estimate/accepted`, pesan akan dipublikasikan dengan informasi lokasi untuk perangkat yang cocok dengan ID perangkat apa pun jika berhasil diselesaikan.

Berikut ini adalah topik cadangan yang digunakan untuk berinteraksi dengan Lokasi AWS IoT Core Perangkat.


**Lokasi perangkat topik MQTT**  

| Topik | Operasi yang diizinkan | Deskripsi | 
| --- | --- | --- | 
| $aws/device\_location/{{customer\_device\_id}}/get\_position\_estimasi | Publikasikan | Perangkat memublikasikan topik ini agar data pengukuran mentah yang dipindai diselesaikan oleh Lokasi AWS IoT Core Perangkat. | 
| $aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate/accepted | Langganan | AWS IoT Core Lokasi Perangkat memublikasikan informasi lokasi ke topik ini saat berhasil menyelesaikan lokasi perangkat. | 
| $aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate/rejected | Langganan | AWS IoT Core Lokasi Perangkat memublikasikan informasi kesalahan ke topik ini jika gagal menyelesaikan lokasi perangkat. | 

## Kebijakan untuk topik MQTT lokasi perangkat
<a name="device-location-topics-policy"></a>

Untuk menerima pesan dari topik lokasi perangkat, perangkat Anda harus menggunakan kebijakan yang memungkinkannya terhubung ke gateway AWS IoT perangkat dan berlangganan topik MQTT.

Berikut ini adalah contoh kebijakan yang diperlukan untuk menerima pesan untuk berbagai topik.

****  

```
{
    "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"
            ]
        }
    ]
}
```

## Topik dan muatan lokasi perangkat
<a name="device-location-topics-payload"></a>

Berikut ini menampilkan topik Lokasi AWS IoT Core Perangkat, format payload pesannya, dan kebijakan contoh untuk setiap topik.

**Topics**
+ [/get\_position\_estimasi](#get-position-estimate)
+ [/get\_position\_estimate/accepted](#get-position-estimate-accepted)
+ [/get\_position\_estimate/rejected](#get-position-estimate-rejected)

### /get\_position\_estimasi
<a name="get-position-estimate"></a>

Publikasikan pesan ke topik ini untuk mendapatkan data pengukuran mentah dari perangkat yang akan diselesaikan oleh Lokasi AWS IoT Core Perangkat.

```
$aws/device_location/{{customer_device_id}}/get_position_estimate
```

AWS IoT Core Lokasi Perangkat merespons dengan menerbitkan salah satu [/get\_position\_estimate/accepted](#get-position-estimate-accepted) atau[/get\_position\_estimate/rejected](#get-position-estimate-rejected).

**catatan**  
Pesan yang dipublikasikan untuk topik ini harus berupa payload JSON yang valid. Jika pesan input tidak dalam format JSON yang valid, Anda tidak akan mendapatkan respons apa pun. Untuk informasi selengkapnya, lihat [Payload pesan](#get-position-estimate-payload).

#### Muatan pesan
<a name="get-position-estimate-payload"></a>

Format payload pesan mengikuti struktur yang mirip dengan badan permintaan operasi 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). Ini berisi:
+ `Timestamp`String opsional, yang sesuai dengan tanggal dan waktu lokasi diselesaikan. `Timestamp`String dapat memiliki panjang minimum 1 dan panjang maksimum 10.
+ `MessageId`String opsional, yang dapat digunakan untuk memetakan permintaan ke respons. Jika Anda menentukan string ini, pesan yang dipublikasikan ke `get_position_estimate/rejected` topik `get_position_estimate/accepted` atau akan berisi ini`MessageId`. `MessageID`String dapat memiliki panjang minimum 1 dan panjang maksimum 256.
+ Data pengukuran dari perangkat yang berisi satu atau lebih jenis pengukuran berikut:
  + [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)

Berikut ini menunjukkan payload pesan sampel.

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

#### Contoh kebijakan
<a name="get-position-estimate-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "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\_position\_estimate/accepted
<a name="get-position-estimate-accepted"></a>

AWS IoT Core Lokasi Perangkat menerbitkan respons terhadap topik ini saat mengembalikan informasi lokasi yang telah diselesaikan untuk perangkat Anda. Informasi lokasi dikembalikan dalam format [GeoJSON](https://geojson.org/).

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

Berikut ini menunjukkan payload pesan dan kebijakan contoh.

#### Muatan pesan
<a name="get-position-estimate-accepted-payload"></a>

Berikut ini adalah contoh payload pesan dalam format GeoJSON. Jika Anda menetapkan data pengukuran mentah dan Lokasi AWS IoT Core Perangkat berhasil menyelesaikan informasi lokasi, maka payload pesan akan menampilkan `MessageId` informasi yang sama. `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"
    }
}
```

#### Contoh kebijakan
<a name="get-position-estimate-accepted-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "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\_position\_estimate/rejected
<a name="get-position-estimate-rejected"></a>

AWS IoT Core Lokasi Perangkat memublikasikan respons kesalahan terhadap topik ini jika gagal menyelesaikan lokasi perangkat.

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

Berikut ini menunjukkan payload pesan dan contoh kebijakan. Untuk informasi tentang kesalahan, lihat[Memecahkan masalah kesalahan saat menyelesaikan lokasi](device-location-resolve-solvers.md#location-resolve-troubleshoot).

#### Muatan pesan
<a name="get-position-estimate-rejected-payload"></a>

Berikut ini adalah contoh payload pesan yang menyediakan kode kesalahan dan pesan, yang menunjukkan mengapa Lokasi AWS IoT Core Perangkat gagal menyelesaikan informasi lokasi. Jika Anda menentukan `MessageId` saat memberikan data pengukuran mentah dan Lokasi AWS IoT Core Perangkat gagal menyelesaikan informasi lokasi, maka `MessageId` informasi yang sama akan dikembalikan dalam muatan pesan.

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

#### Contoh kebijakan
<a name="get-position-estimate-rejected-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
  "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"
      ]
    }
  ]
}
```