翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Device Location MQTTトピックを使用した AWS IoT Core デバイスロケーションの解決
予約済みMQTTトピックを使用して、デバイスロケーション機能を使用して AWS IoT Core デバイスの最新の位置情報を取得できます。
デバイスの場所MQTTトピックの形式
AWS IoT Core Device Location の予約済みトピックでは、次のプレフィックスを使用します。
$aws/device_location/
{customer_device_id}
/
完全なトピックを作成するには、まず
を、デバイスを識別するために使用する固有の ID に置き換えてください。デバイスが AWS IoT モノとして登録されている場合はcustomer_device_id
WirelessDeviceId
、 for LoRaWAN や Sidewalk デバイスなどの
、および を指定することをお勧めします。次に、以下のセクションに示すように、thingName
get_position_estimate
または get_position_estimate/accepted
などのトピックスタブをトピックに追加します。
注記
に含むことができるのは、英文字、数字、およびダッシュのみです。デバイス位置トピックに登録する場合、プラス記号 (+) をワイルドカードとして使用することのみが可能です。例えば、{customer_device_id}
に対して {customer_device_id}
+
ワイルドカードを使用して、デバイスの位置情報を取得できます。トピック $aws/device_location/
にサブスクライブすると、正常に解決された場合、任意のデバイス ID と一致するデバイスの位置情報を含むメッセージが発行されます。+
/get_position_estimate/accepted
Device AWS IoT Core Location の操作に使用される予約済みトピックを次に示します。
トピック | 許可されている操作 | 説明 |
---|---|---|
$aws/device_location/ |
公開 |
デバイスはこのトピックに発行し、スキャンされた raw 測定データを AWS IoT Core Device Location で解決します。 |
$aws/device_location/ |
Subscribe |
AWS IoT Core Device Location は、デバイスの場所が正常に解決されると、このトピックに位置情報を公開します。 |
$aws/device_location/ |
Subscribe |
AWS IoT Core Device Location は、デバイスの場所の解決に失敗したときに、エラー情報をこのトピックに発行します。 |
デバイスの場所に関するMQTTトピックのポリシー
デバイスの場所トピックからメッセージを受信するには、デバイスが AWS IoT デバイスゲートウェイに接続し、MQTTトピックをサブスクライブできるようにするポリシーを使用する必要があります。
以下は、さまざまなトピックのメッセージを受信するために必要なポリシーの例です。
{ "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" ] } ] }
デバイスの位置情報トピックとペイロード
以下に、 AWS IoT Core デバイスロケーショントピック、メッセージペイロードの形式、各トピックのポリシー例を示します。
/get_position_estimate
このトピックにメッセージを発行して、デバイスロケーションによって解決される AWS IoT Core デバイスから未加工の測定データを取得します。
$aws/device_location/
customer_device_id
/get_position_estimate
AWS IoT Core Device Location は、 /get_position_estimate/acceptedまたは に発行することで応答します/get_position_estimate/rejected。
注記
このトピックに発行されるメッセージは、有効なJSONペイロードである必要があります。入力メッセージが有効なJSON形式ではない場合、レスポンスは取得されません。詳細については、「メッセージペイロード」を参照してください。
メッセージペイロード形式は、 AWS IoT Wireless APIオペレーションリクエスト本文 と同様の構造に従いますGetPositionEstimate
。以下を含みます。
-
位置が解決された日時に対応するオプションの
Timestamp
文字列。Timestamp
文字列の最小長は 1、最大長は 10 です。 -
リクエストをレスポンスにマッピングできる、オプションの
MessageId
文字列。この文字列を指定すると、get_position_estimate/accepted
またはget_position_estimate/rejected
トピックにパブリッシュされるメッセージにはこのMessageId
が含まれます。MessageID
文字列の最小長は 1、最大長は 256 です。 -
次の 1 つ以上の測定タイプを含む、デバイスからの測定データ。
以下は、メッセージペイロードのサンプルを示しています。
{ "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
} }
以下に示しているのは、必要なポリシーの例です。
{ "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 は、デバイスの解決された位置情報を返すときに、このトピックに対するレスポンスを発行します。位置情報は GeoJSON 形式で
$aws/device_location/
customer_device_id
/get_position_estimate/accepted
次は、メッセージペイロードとポリシーの例を示しています。
以下は、GeoJSON 形式のメッセージペイロードの例です。raw 測定データMessageId
で を指定し、 AWS IoT Core Device Location が位置情報を正常に解決した場合、メッセージペイロードは同じ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" } }
以下に示しているのは、必要なポリシーの例です。
{ "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 は、デバイスの場所の解決に失敗すると、このトピックにエラーレスポンスを発行します。
$aws/device_location/
customer_device_id
/get_position_estimate/rejected
次は、メッセージペイロードとポリシーの例を示しています。これらのエラーの詳細については、「位置の解決時のトラブルシューティング」を参照してください。
以下は、エラーコードとメッセージを提供するメッセージペイロードの例です。これは、 AWS IoT Core Device Location が位置情報の解決に失敗した理由を示しています。未加工の測定データを提供するMessageId
ときに を指定し、 AWS IoT Core デバイスロケーションが位置情報の解決に失敗した場合、同じMessageId
情報がメッセージペイロードに返されます。
{ "errorCode": 500, "errorMessage":"Internal server error", "messageId": "ABCD1" }
以下に示しているのは、必要なポリシーの例です。
{ "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" ] } ] }