

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Resolvendo a localização do dispositivo usando a localização do AWS IoT Core dispositivo (tópicos do MQTT)
<a name="device-location-reserved-topics"></a>

Você pode usar tópicos reservados do MQTT para obter as informações de localização mais recentes para seus dispositivos com o recurso Localização do AWS IoT Core dispositivo.

## Formato dos tópicos MQTT de local do dispositivo
<a name="device-location-topics-format"></a>

Os tópicos reservados para a localização do AWS IoT Core dispositivo usam o seguinte prefixo:

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

Para criar um tópico completo, primeiro substitua `{{customer_device_id}}` pelo ID exclusivo que você usa para identificar o dispositivo. Recomendamos que você especifique o.`WirelessDeviceId`, como para dispositivos LoRa WAN e Sidewalk, e`{{thingName}}`, se o seu dispositivo está registrado como AWS IoT algo. Em seguida, você acrescenta o tópico ao esboço do tópico, como `get_position_estimate` ou `get_position_estimate/accepted`, conforme mostrado na seção a seguir.

**nota**  
O `{{{customer_device_id}}}` contém somente letras minúsculas, números e traços. Ao assinar tópicos de local do dispositivo, você só pode usar o sinal de adição (\+) como um caractere curinga. Por exemplo, você pode usar o curinga `+` para o `{{{customer_device_id}}}` para obter as informações de localização dos dispositivos. Quando você assina o tópico `$aws/device_location/{{+}}/get_position_estimate/accepted`, uma mensagem é publicada com as informações de localização dos dispositivos que correspondem a qualquer ID do dispositivo, caso tenha sido resolvida com sucesso.

A seguir estão os tópicos reservados usados para interagir com a localização AWS IoT Core do dispositivo.


**Tópicos MQTT de local do dispositivo**  

| Tópico | Operações permitidas | Description | 
| --- | --- | --- | 
| $ aws/device\_location/ /get\_position\_estimate {{customer\_device\_id}} | Publicar | Um dispositivo publica este tópico para que os dados brutos de medição digitalizados sejam resolvidos pela localização AWS IoT Core do dispositivo. | 
| $ aws/device\_location/ /get\_position\_estimate/accepted {{customer\_device\_id}} | Assinar | AWS IoT Core A localização do dispositivo publica as informações de localização neste tópico quando resolve com êxito a localização do dispositivo. | 
| $ aws/device\_location/ /get\_position\_estimate/rejeitado {{customer\_device\_id}} | Assinar | AWS IoT Core A localização do dispositivo publica as informações de erro neste tópico quando não consegue resolver a localização do dispositivo. | 

## Política para tópicos MQTT de local do dispositivo
<a name="device-location-topics-policy"></a>

Para receber mensagens de tópicos de localização do dispositivo, seu dispositivo deve usar uma política que permita que ele se conecte ao gateway do AWS IoT dispositivo e assine os tópicos do MQTT.

Veja a seguir um exemplo da política necessária para receber mensagens para os vários tópicos.

****  

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

## Tópicos de local do dispositivo e carga
<a name="device-location-topics-payload"></a>

Veja a seguir os tópicos de localização do AWS IoT Core dispositivo, o formato da carga útil da mensagem e um exemplo de política para cada tópico.

**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>

Publique uma mensagem neste tópico para que os dados brutos de medição do dispositivo sejam resolvidos pela localização AWS IoT Core do dispositivo.

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

AWS IoT Core A localização do dispositivo responde publicando em um [/get\_position\_estimate/accepted](#get-position-estimate-accepted) ou[/get\_position\_estimate/rejected](#get-position-estimate-rejected).

**nota**  
A mensagem publicada neste tópico deve ser uma carga JSON válida. Se a mensagem de entrada não estiver no formato JSON válido, você não receberá nenhuma resposta. Para obter mais informações, consulte [Carga da mensagem](#get-position-estimate-payload).

#### Carga útil da mensagem
<a name="get-position-estimate-payload"></a>

O formato da carga útil da mensagem segue uma estrutura semelhante ao corpo da solicitação de operação da API AWS IoT sem fio, [https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html). Ela contém:
+ Uma string `Timestamp` opcional, que corresponde à data e hora em que a localização foi resolvida. A string `Timestamp` pode ter um comprimento mínimo de 1 e um máximo de 10.
+ Uma string `MessageId` opcional, que pode ser usada para mapear a solicitação para a resposta. Se você especificar essa string, a mensagem publicada nos tópicos `get_position_estimate/accepted` ou `get_position_estimate/rejected` conterá esse `MessageId`. A string `MessageID` pode ter um comprimento mínimo de 1 e um máximo de 256.
+ Os dados de medição do dispositivo que contém um ou mais dos seguintes tipos de medição:
  + [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)

Veja a seguir um exemplo de carga de mensagem.

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

#### Exemplo de política
<a name="get-position-estimate-policy"></a>

Veja a seguir um exemplo da política necessária:

****  

```
{
    "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 A localização do dispositivo publica uma resposta a esse tópico ao retornar as informações de localização resolvidas do seu dispositivo. As informações de localização são retornadas no [formato GeoJSON](https://geojson.org/).

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

Veja a seguir a carga da mensagem e um exemplo de política.

#### Carga útil da mensagem
<a name="get-position-estimate-accepted-payload"></a>

O exemplo a seguir é da carga da mensagem no formato GeoJSON. Se você especificou a `MessageId` em seus dados brutos de medição e a localização do AWS IoT Core dispositivo resolveu as informações de localização com êxito, a carga da mensagem retornará as mesmas `MessageId` informações.

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

#### Exemplo de política
<a name="get-position-estimate-accepted-policy"></a>

Veja a seguir um exemplo da política necessária:

****  

```
{
    "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 A localização do dispositivo publica uma resposta de erro para esse tópico quando não consegue resolver a localização do dispositivo.

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

Veja a seguir a carga da mensagem e um exemplo de política. Para obter mais informações sobre os erros, consulte [Como solucionar problemas com erros ao resolver a localização](device-location-resolve-solvers.md#location-resolve-troubleshoot).

#### Carga útil da mensagem
<a name="get-position-estimate-rejected-payload"></a>

Veja a seguir um exemplo da carga útil da mensagem que fornece o código de erro e a mensagem, indicando por que a localização do AWS IoT Core dispositivo falhou ao resolver as informações de localização. Se você especificou um `MessageId` ao fornecer seus dados de medição brutos e a localização do AWS IoT Core dispositivo falhar em resolver as informações de localização, as mesmas `MessageId` informações serão retornadas na carga útil da mensagem.

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

#### Exemplo de política
<a name="get-position-estimate-rejected-policy"></a>

Veja a seguir um exemplo da política necessária:

****  

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