

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Résolution de la localisation de l'appareil en utilisant AWS IoT Core Rubriques MQTT relatives à la localisation des appareils
<a name="device-location-reserved-topics"></a>

Vous pouvez utiliser des sujets MQTT réservés pour obtenir les dernières informations de localisation de vos appareils grâce à la fonction de localisation des AWS IoT Core appareils.

## Format des rubriques MQTT relatives à la localisation des appareils
<a name="device-location-topics-format"></a>

Les rubriques réservées pour la localisation des AWS IoT Core appareils utilisent le préfixe suivant :

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

Pour créer une rubrique complète, remplacez `{{customer_device_id}}` par votre identifiant unique que vous utilisez pour identifier votre appareil. Nous vous recommandons de spécifier le`WirelessDeviceId`, par exemple pour les appareils LoRa WAN et Sidewalk`{{thingName}}`, et si votre appareil est enregistré en tant qu' AWS IoT objet. Vous ajoutez ensuite la rubrique avec le stub de rubrique, tel que `get_position_estimate` ou `get_position_estimate/accepted` comme indiqué dans la section suivante.

**Note**  
Le `{{{customer_device_id}}}` ne peut contenir que des lettres, des chiffres et des tirets. Lorsque vous vous abonnez à des rubriques relatives à la localisation des appareils, vous ne pouvez utiliser le signe plus (\+) que comme caractère générique. Par exemple, vous pouvez utiliser le caractère `+` générique pour `{{{customer_device_id}}}` pour obtenir les informations de localisation de vos appareils. Lorsque vous vous abonnez à la rubrique `$aws/device_location/{{+}}/get_position_estimate/accepted`, un message contenant les informations de localisation des appareils correspondant à n'importe quel identifiant d'appareil est publié si le problème a été résolu avec succès.

Les rubriques réservées utilisées pour interagir avec la localisation de l' AWS IoT Core appareil sont les suivantes.


**Format des rubriques MQTT de Device location**  

| Rubrique | Opérations autorisées | Description | 
| --- | --- | --- | 
| $aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate | Publication | Un appareil publie dans cette rubrique pour obtenir les données de mesure brutes numérisées à résoudre en fonction de l'emplacement de AWS IoT Core l'appareil. | 
| $aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate/accepted | S’abonner | AWS IoT Core La localisation de l'appareil publie les informations de localisation dans cette rubrique lorsqu'elle résout avec succès la localisation de l'appareil. | 
| $aws/device\_location/{{customer\_device\_id}}/get\_position\_estimate/rejected | S’abonner | AWS IoT Core L'emplacement du périphérique publie les informations d'erreur dans cette rubrique lorsqu'il ne parvient pas à résoudre l'emplacement du périphérique. | 

## Rubriques MQTT relatives à la politique de localisation des appareils
<a name="device-location-topics-policy"></a>

Pour recevoir des messages provenant de sujets relatifs à la localisation de l'appareil, celui-ci doit utiliser une politique lui permettant de se connecter à la passerelle de l' AWS IoT appareil et de s'abonner aux sujets MQTT.

Voici un exemple de la politique requise pour recevoir des messages pour les différentes rubriques.

****  

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

## Sujets relatifs à la localisation des appareils et charge utile
<a name="device-location-topics-payload"></a>

Vous trouverez ci-dessous les rubriques relatives à la localisation des AWS IoT Core appareils, le format de la charge utile des messages et un exemple de politique pour chaque rubrique.

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

Publiez un message dans cette rubrique pour obtenir les données de mesure brutes de l'appareil à résoudre en fonction de l'emplacement de AWS IoT Core l'appareil.

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

AWS IoT Core Device Location répond en publiant sur l'un [/get\_position\_estimate/accepted](#get-position-estimate-accepted) ou l'autre[/get\_position\_estimate/rejected](#get-position-estimate-rejected).

**Note**  
Le message publié dans cette rubrique doit être une charge utile JSON valide. Si le message d'entrée n'est pas au format JSON valide, vous n'obtiendrez aucune réponse. Pour plus d’informations, consultez [Message payload](#get-position-estimate-payload). (Charge utile du message)

#### Charge utile du message
<a name="get-position-estimate-payload"></a>

Le format de charge utile du message suit une structure similaire à celle du corps de la demande d'opération de l'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). Il contient :
+ Chaîne facultative `Timestamp`, qui correspond à la date et à l'heure de résolution de l'emplacement. La chaîne `Timestamp` peut avoir une longueur minimale de 1 et une longueur maximale de 10.
+ Chaîne facultative `MessageId`, qui peut être utilisée pour mapper la demande à la réponse. Si vous spécifiez cette chaîne, le message publié dans les rubriques `get_position_estimate/accepted` ou `get_position_estimate/rejected` contiendra ce `MessageId`. La chaîne `MessageID` peut avoir une longueur minimale de 1 et une longueur maximale de 256.
+ Les données de mesure de l'appareil qui contient un ou plusieurs des types de mesure suivants :
  + [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)

Ce qui suit montre un exemple de charge utile de message.

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

#### Exemple de stratégie
<a name="get-position-estimate-policy"></a>

Voici un exemple de document de stratégie requise :

****  

```
{
    "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 L'emplacement de l'appareil publie une réponse à cette rubrique lorsque vous renvoyez les informations de localisation résolues pour votre appareil. Les informations de localisation sont renvoyées en [format GeoJSON](https://geojson.org/).

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

Vous trouverez ci-dessous la charge utile des messages et un exemple de politique.

#### Charge utile du message
<a name="get-position-estimate-accepted-payload"></a>

Voici un exemple de la charge utile du message au format GeoJSON. Si vous avez spécifié un `MessageId` dans vos données de mesure brutes et que AWS IoT Core Device Location a résolu les informations de localisation avec succès, la charge utile du message renvoie les mêmes `MessageId` informations.

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

#### Exemple de stratégie
<a name="get-position-estimate-accepted-policy"></a>

Voici un exemple de document de stratégie requise :

****  

```
{
    "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 L'emplacement de l'appareil publie une réponse d'erreur à cette rubrique lorsqu'il ne parvient pas à résoudre l'emplacement de l'appareil.

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

Vous trouverez ci-dessous la charge utile des messages et exemple de politique. Pour plus d'informations sur les erreurs, consultez [Résolution des erreurs lors de la résolution de l'emplacement](device-location-resolve-solvers.md#location-resolve-troubleshoot).

#### Charge utile du message
<a name="get-position-estimate-rejected-payload"></a>

Voici un exemple de charge utile du message qui fournit le code d'erreur et le message, qui indiquent pourquoi AWS IoT Core Device Location n'a pas réussi à résoudre les informations de localisation. Si vous avez spécifié un `MessageId` lorsque vous avez fourni vos données de mesure brutes et que l'emplacement de l' AWS IoT Core appareil n'a pas résolu les informations de localisation, les mêmes `MessageId` informations seront renvoyées dans la charge utile du message.

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

#### Exemple de stratégie
<a name="get-position-estimate-rejected-policy"></a>

Voici un exemple de document de stratégie requise :

****  

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