Resolución de la ubicación del dispositivo mediante los temas de MQTT de AWS IoT Core Device Location - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Resolución de la ubicación del dispositivo mediante los temas de MQTT de AWS IoT Core Device Location

Puede utilizar los temas reservados de MQTT para obtener la información de ubicación más reciente de sus dispositivos con la función de ubicación del AWS IoT Core dispositivo.

Formato de los temas de MQTT de ubicación de dispositivos

Los temas reservados para la ubicación de AWS IoT Core dispositivos utilizan el siguiente prefijo:

$aws/device_location/{customer_device_id}/

Para crear un tema completo, primero reemplace customer_device_id por el identificador único que utiliza para identificar el dispositivo. Le recomendamos que especifique elWirelessDeviceId, por ejemplo, para los dispositivos LoRa WAN y SidewalkthingName, y si el dispositivo está registrado como algo. AWS IoT A continuación, agregue el tema al código auxiliar del tema, como get_position_estimate o get_position_estimate/accepted, tal y como se muestra en la siguiente sección.

nota

{customer_device_id} solo puede contener letras, números y guiones. Al suscribirse a temas de ubicación de dispositivos, solo puede usar el signo más (+) como carácter comodín. Por ejemplo, puede usar el comodín + para que {customer_device_id} obtenga la información de ubicación de sus dispositivos. Cuando se suscribas al tema de $aws/device_location/+/get_position_estimate/accepted, se publicará un mensaje con la información de ubicación de los dispositivos que coincidan con cualquier ID de dispositivo si se ha resuelto correctamente.

Los siguientes son los temas reservados que se utilizan para interactuar con la ubicación AWS IoT Core del dispositivo.

Temas de MQTT de ubicación de dispositivos
Tema Operaciones permitidas Descripción

$aws/device_location/customer_device_id/get_position_estimate

Publicación

Un dispositivo publica sobre este tema para que los datos de medición sin procesar escaneados se resuelvan según la ubicación del AWS IoT Core dispositivo.

$aws/device_location/customer_device_id/get_position_estimate/accepted

Suscribirse

AWS IoT Core La ubicación del dispositivo publica la información de ubicación en este tema cuando resuelve correctamente la ubicación del dispositivo.

$aws/device_location/customer_device_id/get_position_estimate/rejected

Suscribirse

AWS IoT Core La ubicación del dispositivo publica la información de error en este tema cuando no logra resolver la ubicación del dispositivo.

Política de los temas de MQTT de ubicación de dispositivos

Para recibir mensajes relacionados con la ubicación del dispositivo, el dispositivo debe utilizar una política que le permita conectarse a la puerta de enlace del AWS IoT dispositivo y suscribirse a los temas de MQTT.

A continuación se muestra un ejemplo de la política necesaria para recibir mensajes de los distintos temas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/device_location/customer_device_id/get_position_estimate" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/device_location/customer_device_id/get_position_estimate/accepted", "arn:aws:iot:region:account:topic/$aws/device_location/customer_device_id/get_position_estimate/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/device_location/customer_device_id/get_position_estimate/accepted", "arn:aws:iot:region:account:topicfilter/$aws/device_location/customer_device_id/get_position_estimate/rejected" ] } ] }

Temas y carga de Device Location

A continuación, se muestran los temas sobre la ubicación de los AWS IoT Core dispositivos, el formato de la carga útil de sus mensajes y un ejemplo de política para cada tema.

/get_position_estimate

Publique un mensaje sobre este tema para obtener los datos de medición sin procesar del dispositivo para resolverlos por ubicación del AWS IoT Core dispositivo.

$aws/device_location/customer_device_id/get_position_estimate

AWS IoT Core La ubicación del dispositivo responde publicando en una /get_position_estimate/accepted u otra/get_position_estimate/rejected.

nota

El mensaje publicado en este tema debe ser una carga de JSON válida. Si el mensaje de entrada no está en un formato JSON válido, no recibirá ninguna respuesta. Para obtener más información, consulte Carga útil del mensaje.

El formato de carga del mensaje sigue una estructura similar a la del cuerpo de la solicitud de operación de la API AWS IoT Wireless , GetPositionEstimate. Contiene:

  • Una cadena Timestamp opcional, que corresponde a la fecha y la hora en que se resolvió la ubicación. La cadena Timestamp puede tener una longitud mínima de 1 y máxima de 10.

  • Una cadena MessageId opcional, que se puede utilizar para asignar la solicitud a la respuesta. Si especifica esta cadena, el mensaje publicado en los temas get_position_estimate/accepted o get_position_estimate/rejected contendrá este MessageId. La cadena MessageID puede tener una longitud mínima de 1 y máxima de 256.

  • Los datos de medición del dispositivo que contiene uno o más de los siguientes tipos de medición:

A continuación se muestra un ejemplo de la carga del mensaje.

{ "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 continuación, mostramos un ejemplo de la política requerida:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/device_location/customer_device_id/get_position_estimate" ] } ] }

/get_position_estimate/accepted

AWS IoT Core Device Location publica una respuesta a este tema al devolver la información de ubicación resuelta del dispositivo. La información de ubicación se devuelve en formato GeoJSON.

$aws/device_location/customer_device_id/get_position_estimate/accepted

A continuación se muestra la carga del mensaje y un ejemplo de política.

A continuación, se muestra un ejemplo de la carga del mensaje en formato GeoJSON. Si especificó una MessageId en sus datos de medición sin procesar y AWS IoT Core Device Location resolvió la información de ubicación correctamente, la carga útil del mensaje devolverá la misma MessageId información.

{ "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 continuación, mostramos un ejemplo de la política requerida:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/device_location/customer_device_id/get_position_estimate/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/device_location/customer_device_id/get_position_estimate/accepted" ] } ] }

/get_position_estimate/rejected

AWS IoT Core La ubicación del dispositivo publica una respuesta de error sobre este tema cuando no logra resolver la ubicación del dispositivo.

$aws/device_location/customer_device_id/get_position_estimate/rejected

A continuación se muestra la carga del mensaje y un ejemplo de política. Para obtener información acerca de los errores, consulte Solución de errores al resolver la ubicación.

A continuación se muestra un ejemplo de la carga útil del mensaje que proporciona el código y el mensaje de error, que indican por qué AWS IoT Core Device Location no pudo resolver la información de ubicación. Si especificó una MessageId al proporcionar los datos de medición sin procesar y la ubicación del AWS IoT Core dispositivo no pudo resolver la información de ubicación, se devolverá la misma MessageId información en la carga útil del mensaje.

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

A continuación, mostramos un ejemplo de la política requerida:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/device_location/customer_device_id/get_position_estimate/rejected" ] }, { "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/device_location/customer_device_id/get_position_estimate/rejected" ] } ] }