Como resolver o local do dispositivo usando os tópicos MQTT do Local do dispositivo AWS IoT Core - AWS IoT Core

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á.

Como resolver o local do dispositivo usando os tópicos MQTT do Local do dispositivo AWS IoT Core

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

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, ethingName, 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 Descrição

$aws/device_location/customer_device_id/get_position_estimate

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/customer_device_id/get_position_estimate/accepted

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/customer_device_id /get_position_estimate/rejected

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

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: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" ] } ] }

Tópicos de local do dispositivo e carga

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.

/get_position_estimate

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 ou/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.

O formato da carga da mensagem segue uma estrutura semelhante ao corpo da solicitação de operação da API AWS IoT Wireless , GetPositionEstimate. 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:

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

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

{ "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 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.

$aws/device_location/customer_device_id/get_position_estimate/accepted

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

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

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

{ "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 A localização do dispositivo publica uma resposta de erro a 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.

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

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

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