

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 디바이스 위치 MQTT 주제를 사용하여 AWS IoT Core 디바이스 위치 확인
<a name="device-location-reserved-topics"></a>

예약된 MQTT 주제를 사용하여 디바이스 위치 기능을 통해 AWS IoT Core 디바이스의 최신 위치 정보를 가져올 수 있습니다.

## 디바이스 위치 MQTT 주제의 형식
<a name="device-location-topics-format"></a>

 AWS IoT Core 디바이스 위치에 대한 예약 주제는 다음 접두사를 사용합니다.

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

전체 주제를 만들려면 먼저 디바이스를 식별하는 데 사용하는 고유 ID로 `{{customer_device_id}}`를 바꾸세요. 디바이스가 AWS IoT 사물로 등록된 `{{thingName}}`경우 for LoRaWAN 및 Sidewalk 디바이스와 `WirelessDeviceId`같은와를 지정하는 것이 좋습니다. 그런 다음, 다음 섹션에 표시된 것과 같이 주제에 `get_position_estimate` 및 `get_position_estimate/accepted` 등의 주제 스텁을 추가합니다.

**참고**  
`{{{customer_device_id}}}`에는 문자, 숫자 및 대시만 포함할 수 있습니다. 디바이스 위치 주제를 구독할 때는 더하기 기호(\+)만 와일드카드 문자로 사용할 수 있습니다. 예를 들어, `{{{customer_device_id}}}`에 `+` 와일드카드를 사용하여 디바이스의 위치 정보를 얻을 수 있습니다. `$aws/device_location/{{+}}/get_position_estimate/accepted` 주제를 구독하는 경우 성공적으로 해석되면 임의의 디바이스 ID와 일치하는 디바이스의 위치 정보가 포함된 메시지가 게시됩니다.

다음은 AWS IoT Core 디바이스 위치와 상호 작용하는 데 사용되는 예약된 주제입니다.


**디바이스 위치 MQTT 주제**  

| Topic | 허용된 작업 | 설명 | 
| --- | --- | --- | 
|  \$aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate  | 게시 |  디바이스는이 주제에 게시하여 디바이스 AWS IoT Core 위치에서 스캔한 원시 측정 데이터를 확인할 수 있습니다.  | 
|  \$aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate/accepted  | Subscribe |  AWS IoT Core Device Location은 디바이스 위치를 성공적으로 확인하면이 주제에 위치 정보를 게시합니다.  | 
|  \$aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate/rejected  | Subscribe |  AWS IoT Core 디바이스 위치가 디바이스 위치를 확인하지 못하면이 주제에 오류 정보를 게시합니다.  | 

## 디바이스 위치 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>

다음은 AWS IoT Core 디바이스 위치 주제, 메시지 페이로드의 형식 및 각 주제에 대한 예제 정책을 보여줍니다.

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

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

이 주제에 메시지를 게시하여 디바이스 위치에서 확인할 AWS IoT Core 디바이스의 원시 측정 데이터를 가져옵니다.

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

AWS IoT Core Device Location은 [/get\_position\_estimate/accepted](#get-position-estimate-accepted) 또는에 게시하여 응답합니다[/get\_position\_estimate/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). OTA 업데이트는 다음을 포함합니다.
+ 위치가 해석된 날짜와 시간에 해당하는 선택적 `Timestamp` 문자열. `Timestamp` 문자열의 최소 길이는 1자이고 최대 길이는 10자입니다.
+ 요청을 응답에 매핑하는 데 사용할 수 있는 선택적 `MessageId` 문자열. 이 문자열을 지정하면 `get_position_estimate/accepted` 또는 `get_position_estimate/rejected` 주제에 게시된 메시지에 이 `MessageId`가 포함됩니다. `MessageID` 문자열의 최소 길이는 1자이고 최대 길이는 256자입니다.
+ 다음 측정 유형 중 하나 이상을 포함하는 디바이스의 측정 데이터:
  + [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\_position\_estimate/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 형식의 메시지 페이로드 예시입니다. 원시 측정 데이터에 `MessageId`를 지정하고 AWS IoT Core 디바이스 위치가 위치 정보를 성공적으로 해결한 경우 메시지 페이로드는 동일한 `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\_position\_estimate/rejected
<a name="get-position-estimate-rejected"></a>

AWS IoT Core 디바이스 위치가 디바이스 위치를 확인하지 못하면이 주제에 대한 오류 응답을 게시합니다.

```
$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 디바이스 위치가 위치 정보를 확인하지 못한 이유를 나타내는 오류 코드와 메시지를 제공하는 메시지 페이로드의 예입니다. 원시 측정 데이터를 제공할 `MessageId` 때를 지정했고 AWS IoT Core 디바이스 위치가 위치 정보를 확인하지 못한 경우 메시지 페이로드에 동일한 `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"
      ]
    }
  ]
}
```