Risoluzione della posizione del dispositivo utilizzando argomenti Device Location MQTT  AWS IoT Core - AWS IoT Core

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 argomenti Device Location MQTT  AWS IoT Core

È 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

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 specificareWirelessDeviceId, ad esempio per i dispositivi LoRa WAN e Sidewalk, ethingName, 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ù (+) 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
Argomento Operazioni consentite Descrizione

$aws/device_location/customer_device_id/get_position_estimate

Pubblicare

Un dispositivo pubblica su questo argomento per far sì che i dati di misurazione grezzi scansionati vengano risolti da AWS IoT Core Device Location.

$aws/device_location/customer_device_id/get_position_estimate/accepted

Subscribe

AWS IoT Core Device Location pubblica le informazioni sulla posizione in questo argomento quando risolve correttamente la posizione del dispositivo.

$aws/device_location/customer_device_id/get_position_estimate/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

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

Argomenti relativi alla posizione del dispositivo e payload

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.

/get_position_estimate

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_position_estimate/accepted o/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.

Il formato del payload del messaggio segue una struttura simile a quella del corpo della richiesta dell'operazione API  AWS IoT Wireless , GetPositionEstimate. 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 oget_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:

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

Di seguito è illustrato un esempio della policy necessaria:

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

$aws/device_location/customer_device_id/get_position_estimate/accepted

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

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

Di seguito è illustrato un esempio della policy necessaria:

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

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

Di seguito è illustrato un esempio della policy necessaria:

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