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
con l’ID univoco che usi per identificare il tuo dispositivo. Ti consigliamo di specificarecustomer_device_id
WirelessDeviceId
, ad esempio per i dispositivi LoRa WAN e Sidewalk, e
, se il dispositivo è registrato come oggetto AWS IoT . Poi aggiungi l'argomento insieme allo stub dell'argomento, ad esempio thingName
get_position_estimate
o get_position_estimate/accepted
, come mostrato nella sezione seguente.
Nota
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 {customer_device_id}
+
per consentire a
di ottenere le informazioni sulla posizione dei tuoi dispositivi. Quando ti iscrivi all'argomento {customer_device_id}
$aws/device_location/
, verrà pubblicato un messaggio con le informazioni sulla posizione dei dispositivi che corrispondono a qualsiasi ID dispositivo se il problema è stato risolto con successo.+
/get_position_estimate/accepted
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/ |
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/ |
Subscribe |
AWS IoT Core Device Location pubblica le informazioni sulla posizione in questo argomento quando risolve correttamente la posizione del dispositivo. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$aws/device_location/ |
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 stringaTimestamp
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 argomentiget_position_estimate/accepted
oget_position_estimate/rejected
conterrà questoMessageId
. La stringaMessageID
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" ] } ] }