AWS IoT Core 디바이스 위치 MQTT 주제를 사용하여 디바이스 위치 해석 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS IoT Core 디바이스 위치 MQTT 주제를 사용하여 디바이스 위치 해석

예약된 MQTT 주제를 사용하여 AWS IoT Core 장치 위치 기능을 통해 장치의 최신 위치 정보를 가져올 수 있습니다.

디바이스 위치 MQTT 주제의 형식

AWS IoT Core 장치 위치의 예약 주제는 다음 접두사를 사용합니다.

$aws/device_location/{customer_device_id}/

전체 주제를 만들려면 먼저 디바이스를 식별하는 데 사용하는 고유 ID로 customer_device_id를 바꾸세요. LoRaWAN 및 Sidewalk 장치 WirelessDeviceId 등을 지정하고 장치가 사물로 등록된 경우 thingName 등을 지정하는 것이 좋습니다. AWS IoT 그런 다음, 다음 섹션에 표시된 것과 같이 주제에 get_position_estimateget_position_estimate/accepted 등의 주제 스텁을 추가합니다.

참고

{customer_device_id}에는 문자, 숫자 및 대시만 포함할 수 있습니다. 디바이스 위치 주제를 구독할 때는 더하기 기호(+)만 와일드카드 문자로 사용할 수 있습니다. 예를 들어, {customer_device_id}+ 와일드카드를 사용하여 디바이스의 위치 정보를 얻을 수 있습니다. $aws/device_location/+/get_position_estimate/accepted 주제를 구독하는 경우 성공적으로 해석되면 임의의 디바이스 ID와 일치하는 디바이스의 위치 정보가 포함된 메시지가 게시됩니다.

다음은 AWS IoT Core 장치 위치와 상호 작용하는 데 사용되는 예약된 주제입니다.

디바이스 위치 MQTT 주제
주제 허용된 작업 설명

$aws/device_location/customer_device_id/get_position_estimate

게시

장치는 이 주제에 게시하여 스캔한 원시 측정 데이터를 AWS IoT Core 장치 위치에서 확인할 수 있도록 합니다.

$aws/device_location/customer_device_id/get_position_estimate/accepted

Subscribe

AWS IoT Core 장치 위치가 성공적으로 확인되면 장치 위치에서 위치 정보를 이 항목에 게시합니다.

$aws/device_location/customer_device_id/get_position_estimate/rejected

Subscribe

AWS IoT Core 장치 위치 확인에 실패할 경우 장치 위치에서는 오류 정보를 이 항목에 게시합니다.

디바이스 위치 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 장치 위치는 /get_position_estimate/accepted 또는 /get_position_estimate/rejected 중 하나에 게시하여 응답합니다.

참고

이 주제에 게시된 메시지는 유효한 JSON 페이로드여야 합니다. 입력 메시지가 유효한 JSON 형식이 아닌 경우 응답을 받을 수 없습니다. 자세한 내용은 메시지 페이로드를 참조하세요.

메시지 페이로드 형식은 AWS IoT Wireless API 작업 요청 본문의 GetPositionEstimate와 비슷한 구조를 따릅니다. OTA 업데이트는 다음을 포함합니다.

  • 위치가 해석된 날짜와 시간에 해당하는 선택적 Timestamp 문자열. Timestamp 문자열의 최소 길이는 1자이고 최대 길이는 10자입니다.

  • 요청을 응답에 매핑하는 데 사용할 수 있는 선택적 MessageId 문자열. 이 문자열을 지정하면 get_position_estimate/accepted 또는 get_position_estimate/rejected 주제에 게시된 메시지에 이 MessageId가 포함됩니다. MessageID 문자열의 최소 길이는 1자이고 최대 길이는 256자입니다.

  • 다음 측정 유형 중 하나 이상을 포함하는 디바이스의 측정 데이터:

다음은 샘플 메시지 페이로드를 보여줍니다.

{ "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 장치의 확인된 위치 정보를 반환하면 장치 위치에서는 이 주제에 대한 응답을 게시합니다. 위치 정보는 GeoJSON 형식으로 반환됩니다.

$aws/device_location/customer_device_id/get_position_estimate/accepted

다음은 메시지 페이로드와 예시 정책을 보여줍니다.

다음은 GeoJSON 형식의 메시지 페이로드 예시입니다. 원시 측정 데이터에 a를 지정하고 AWS IoT Core Device MessageId 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 장치 위치가 장치 위치를 확인하지 못하면 장치 위치에서 이 항목에 대한 오류 응답을 게시합니다.

$aws/device_location/customer_device_id/get_position_estimate/rejected

다음은 메시지 페이로드와 예시 정책을 보여줍니다. 이러한 오류에 대한 자세한 내용은 위치를 확인할 때 발생하는 오류 해결 섹션을 참조하세요.

다음은 AWS IoT Core 장치 위치에서 위치 정보를 확인하지 못한 이유를 나타내는 오류 코드와 메시지를 제공하는 메시지 페이로드의 예입니다. 원시 측정 데이터를 제공할 MessageId 때 a를 지정했는데 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" ] } ] }