Menyelesaikan lokasi perangkat menggunakan topik AWS IoT Core MQTT Lokasi Perangkat - AWS IoT Core

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyelesaikan lokasi perangkat menggunakan topik AWS IoT Core MQTT Lokasi Perangkat

Anda dapat menggunakan topik MQTT yang dipesan untuk mendapatkan informasi lokasi terbaru untuk perangkat Anda dengan fitur Lokasi AWS IoT Core Perangkat.

Format topik MQTT lokasi perangkat

Topik cadangan untuk Lokasi AWS IoT Core Perangkat menggunakan awalan berikut:

$aws/device_location/{customer_device_id}/

Untuk membuat topik lengkap, pertama-tama ganti customer_device_id dengan ID unik yang Anda gunakan untuk mengidentifikasi perangkat Anda. Kami menyarankan Anda menentukanWirelessDeviceId, seperti untuk perangkat LoRa WAN dan Trotoar, danthingName, jika perangkat Anda terdaftar sebagai AWS IoT sesuatu. Anda kemudian menambahkan topik dengan rintisan topik, seperti get_position_estimate atau get_position_estimate/accepted seperti yang ditunjukkan di bagian berikut.

catatan

Hanya {customer_device_id} dapat berisi huruf, angka, dan tanda hubung. Saat berlangganan topik lokasi perangkat, Anda hanya dapat menggunakan tanda plus (+) sebagai karakter wildcard. Misalnya, Anda dapat menggunakan + wildcard {customer_device_id} untuk mendapatkan informasi lokasi untuk perangkat Anda. Saat Anda berlangganan topik$aws/device_location/+/get_position_estimate/accepted, pesan akan dipublikasikan dengan informasi lokasi untuk perangkat yang cocok dengan ID perangkat apa pun jika berhasil diselesaikan.

Berikut ini adalah topik cadangan yang digunakan untuk berinteraksi dengan Lokasi AWS IoT Core Perangkat.

Lokasi perangkat topik MQTT
Topik Operasi yang diizinkan Deskripsi

$aws/device_location/ customer_device_id/get_position_estimate

Publikasikan

Perangkat memublikasikan topik ini agar data pengukuran mentah yang dipindai diselesaikan oleh Lokasi AWS IoT Core Perangkat.

$aws/device_location/ customer_device_id/get_position_estimate/diterima

Langganan

AWS IoT Core Lokasi Perangkat memublikasikan informasi lokasi ke topik ini saat berhasil menyelesaikan lokasi perangkat.

$aws/device_location/ customer_device_id /get_position_estimate/ditolak

Langganan

AWS IoT Core Lokasi Perangkat memublikasikan informasi kesalahan ke topik ini jika gagal menyelesaikan lokasi perangkat.

Kebijakan untuk topik MQTT lokasi perangkat

Untuk menerima pesan dari topik lokasi perangkat, perangkat Anda harus menggunakan kebijakan yang memungkinkannya terhubung ke gateway AWS IoT perangkat dan berlangganan topik MQTT.

Berikut ini adalah contoh kebijakan yang diperlukan untuk menerima pesan untuk berbagai topik.

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

Topik dan muatan lokasi perangkat

Berikut ini menampilkan topik Lokasi AWS IoT Core Perangkat, format payload pesannya, dan kebijakan contoh untuk setiap topik.

/get_position_estimasi

Publikasikan pesan ke topik ini untuk mendapatkan data pengukuran mentah dari perangkat yang akan diselesaikan oleh Lokasi AWS IoT Core Perangkat.

$aws/device_location/customer_device_id/get_position_estimate

AWS IoT Core Lokasi Perangkat merespons dengan memublikasikan salah satu /get_position_estimate/diterima atau/get_position_estimate/ditolak.

catatan

Pesan yang dipublikasikan untuk topik ini harus berupa payload JSON yang valid. Jika pesan input tidak dalam format JSON yang valid, Anda tidak akan mendapatkan respons apa pun. Untuk informasi selengkapnya, lihat Payload pesan.

Format payload pesan mengikuti struktur yang mirip dengan badan permintaan operasi AWS IoT Wireless API, GetPositionEstimate. Ini berisi:

  • TimestampString opsional, yang sesuai dengan tanggal dan waktu lokasi diselesaikan. TimestampString dapat memiliki panjang minimum 1 dan panjang maksimum 10.

  • MessageIdString opsional, yang dapat digunakan untuk memetakan permintaan ke respons. Jika Anda menentukan string ini, pesan yang dipublikasikan ke get_position_estimate/rejected topik get_position_estimate/accepted atau akan berisi iniMessageId. MessageIDString dapat memiliki panjang minimum 1 dan panjang maksimum 256.

  • Data pengukuran dari perangkat yang berisi satu atau lebih jenis pengukuran berikut:

Berikut ini menunjukkan payload pesan sampel.

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

Berikut ini adalah contoh kebijakan yang diperlukan:

{ "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/diterima

AWS IoT Core Lokasi Perangkat menerbitkan respons terhadap topik ini saat mengembalikan informasi lokasi yang telah diselesaikan untuk perangkat Anda. Informasi lokasi dikembalikan dalam format GeoJSON.

$aws/device_location/customer_device_id/get_position_estimate/accepted

Berikut ini menunjukkan payload pesan dan kebijakan contoh.

Berikut ini adalah contoh payload pesan dalam format GeoJSON. Jika Anda menetapkan data pengukuran mentah dan Lokasi AWS IoT Core Perangkat berhasil menyelesaikan informasi lokasi, maka payload pesan akan menampilkan MessageId informasi yang sama. MessageId

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

Berikut ini adalah contoh kebijakan yang diperlukan:

{ "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/ditolak

AWS IoT Core Lokasi Perangkat memublikasikan respons kesalahan terhadap topik ini jika gagal menyelesaikan lokasi perangkat.

$aws/device_location/customer_device_id/get_position_estimate/rejected

Berikut ini menunjukkan payload pesan dan contoh kebijakan. Untuk informasi tentang kesalahan, lihatMemecahkan masalah kesalahan saat menyelesaikan lokasi.

Berikut ini adalah contoh payload pesan yang menyediakan kode kesalahan dan pesan, yang menunjukkan mengapa Lokasi AWS IoT Core Perangkat gagal menyelesaikan informasi lokasi. Jika Anda menentukan MessageId saat memberikan data pengukuran mentah dan Lokasi AWS IoT Core Perangkat gagal menyelesaikan informasi lokasi, maka MessageId informasi yang sama akan dikembalikan dalam muatan pesan.

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

Berikut ini adalah contoh kebijakan yang diperlukan:

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