

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Risoluzione della posizione del dispositivo utilizzando gli argomenti MQTT di AWS IoT Core Device Location
<a name="device-location-reserved-topics"></a>

È possibile utilizzare argomenti MQTT riservati per ottenere le informazioni più recenti sulla posizione dei dispositivi con la funzione AWS IoT Core Device Location.

## Formato degli argomenti relativi alla posizione del dispositivo
<a name="device-location-topics-format"></a>

Gli argomenti riservati per AWS IoT Core Device Location utilizzano il seguente prefisso:

`$aws/device_location/{customer_device_id}/`

Per creare un argomento completo, sostituisci prima `customer_device_id` con l’ID univoco che usi per identificare il tuo dispositivo. Ti consigliamo di specificare`WirelessDeviceId`, ad esempio per i dispositivi LoRa WAN e Sidewalk, e`thingName`, se il dispositivo è registrato come oggetto AWS IoT . Poi aggiungi l'argomento insieme allo stub dell'argomento, ad esempio `get_position_estimate` o `get_position_estimate/accepted`, come mostrato nella sezione seguente.

**Nota**  
`{customer_device_id}` può contenere solo lettere, numeri e trattini. Quando ti iscrivi agli argomenti relativi alla posizione del dispositivo, puoi utilizzare solo il segno più (\$1) come jolly. Ad esempio, puoi usare il jolly `+` per consentire a `{customer_device_id}` di ottenere le informazioni sulla posizione dei tuoi dispositivi. Quando ti iscrivi all'argomento `$aws/device_location/+/get_position_estimate/accepted`, verrà pubblicato un messaggio con le informazioni sulla posizione dei dispositivi che corrispondono a qualsiasi ID dispositivo se il problema è stato risolto con successo.

Di seguito sono riportati gli argomenti riservati utilizzati per interagire con AWS IoT Core Device Location.


**Argomenti relativi alla posizione del dispositivo**  

| Topic | Operazioni consentite | Description | 
| --- | --- | --- | 
|  \$1aws/device\$1location/ /get\$1position\$1estimate *customer\$1device\$1id*  | Pubblica |  Un dispositivo pubblica su questo argomento per ottenere i dati di misurazione grezzi scansionati da risolvere tramite Device Location. AWS IoT Core   | 
|  \$1aws/device\$1location/ /get\$1position\$1estimate/accepted *customer\$1device\$1id*  | Subscribe |  AWS IoT Core Device Location pubblica le informazioni sulla posizione in questo argomento quando risolve correttamente la posizione del dispositivo.  | 
|  *customer\$1device\$1id*\$1aws/device\$1location/ /get\$1position\$1estimate/rejected  | Subscribe |  AWS IoT Core Device Location pubblica le informazioni sull'errore in questo argomento quando non riesce a risolvere la posizione del dispositivo.  | 

## Policy per gli argomenti MQTT relativi alla posizione dei dispositivi
<a name="device-location-topics-policy"></a>

Per ricevere messaggi dagli argomenti relativi alla localizzazione del dispositivo, il dispositivo deve utilizzare una politica che gli consenta di connettersi al gateway del AWS IoT dispositivo e sottoscrivere gli argomenti MQTT.

Di seguito viene mostrato un esempio della policy necessaria per la ricezione di messaggi per i vari argomenti.

****  

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

## Argomenti relativi alla posizione del dispositivo e payload
<a name="device-location-topics-payload"></a>

Di seguito vengono illustrati gli argomenti relativi alla localizzazione del AWS IoT Core dispositivo, il formato del relativo payload dei messaggi e un esempio di policy per ogni argomento.

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

Pubblicate un messaggio su questo argomento per far sì che i dati di misurazione grezzi del dispositivo vengano risolti da AWS IoT Core Device Location.

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

AWS IoT Core Device Location risponde pubblicando su uno [/get\$1position\$1estimate/accepted](#get-position-estimate-accepted) o[/get\$1position\$1estimate/rejected](#get-position-estimate-rejected).

**Nota**  
Il messaggio pubblicato su questo argomento deve essere un payload JSON valido. Se il messaggio di input non è in formato JSON valido, non riceverai alcuna risposta. Per ulteriori informazioni, consulta [Payload del messaggio](#get-position-estimate-payload).

#### Payload del messaggio
<a name="get-position-estimate-payload"></a>

Il formato del payload del messaggio segue una struttura simile a quella del corpo della richiesta di operazione dell'API AWS IoT Wireless,. [https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html) Contiene:
+ Una stringa opzionale `Timestamp`, che corrisponde alla data e all’ora in cui la posizione è stata risolta. La stringa `Timestamp` può avere una lunghezza minima di 1 e una lunghezza massima di 10.
+ Una stringa opzionale `MessageId`, che può essere utilizzata per mappare la richiesta alla risposta. Se specifichi questa stringa, il messaggio pubblicato negli argomenti `get_position_estimate/accepted` o`get_position_estimate/rejected` conterrà questo `MessageId`. La stringa `MessageID` può avere una lunghezza minima di 1 e una lunghezza massima di 256.
+ I dati di misurazione del dispositivo che contengono uno o più dei seguenti tipi di misurazione:
  + [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)

Quello che segue è un playload del messaggio di esempio.

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

#### Policy di esempio
<a name="get-position-estimate-policy"></a>

Di seguito è illustrato un esempio della policy necessaria:

****  

```
{
    "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 pubblica una risposta a questo argomento quando restituisce le informazioni sulla posizione risolte per il dispositivo. Le informazioni sulla posizione vengono restituite in formato [GeoJSON](https://geojson.org/).

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

Di seguito viene illustrato il payload del messaggio e un esempio di policy.

#### Payload del messaggio
<a name="get-position-estimate-accepted-payload"></a>

Di seguito è riportato un esempio di payload del messaggi in formato GeoJSON. Se hai specificato a `MessageId` nei dati di misurazione grezzi e AWS IoT Core Device Location ha risolto correttamente le informazioni sulla posizione, il payload del messaggio restituisce le stesse `MessageId` informazioni.

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

#### Policy di esempio
<a name="get-position-estimate-accepted-policy"></a>

Di seguito è illustrato un esempio della policy necessaria:

****  

```
{
    "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 pubblica una risposta di errore a questo argomento quando non riesce a risolvere la posizione del dispositivo.

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

Di seguito viene illustrato il payload del messaggio e una policy di esempio. Per informazioni sugli errori, vedi [Risoluzione dei problemi relativi alla risoluzione della posizione](device-location-resolve-solvers.md#location-resolve-troubleshoot).

#### Payload del messaggio
<a name="get-position-estimate-rejected-payload"></a>

Di seguito è riportato un esempio del payload del messaggio che fornisce il codice e il messaggio di errore, che indicano perché AWS IoT Core Device Location non è riuscito a risolvere le informazioni sulla posizione. Se hai specificato a `MessageId` quando hai fornito i dati di misurazione non elaborati e AWS IoT Core Device Location non è riuscito a risolvere le informazioni sulla posizione, le stesse `MessageId` informazioni verranno restituite nel payload del messaggio.

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

#### Policy di esempio
<a name="get-position-estimate-rejected-policy"></a>

Di seguito è illustrato un esempio della policy necessaria:

****  

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