解析 IoT 设备的位置
通过 AWS IoT Core 设备位置功能来解码来自设备的测量数据,并使用第三方求解器来解析设备位置。解析后的位置以 GeoJSON 有效负载的形式生成,其中包含地理坐标和准确性信息。您可以通过 AWS IoT 控制台、AWS IoT Wireless API 或 AWS CLI 解析设备位置。
解析设备位置(控制台)
解析设备位置(控制台)
-
转到 AWS IoT 控制台中的 Device Location
(设备位置)页面。 -
从您的设备日志或 CloudWatch Logs 获取有效负载测量数据,然后将其输入到通过有效负载解析位置部分中。
以下代码显示了 JSON 有效负载示例。有效负载包含蜂窝和 Wi-Fi 测量数据。如果您的有效负载包含其他类型的测量数据,将使用准确性最高的求解器。有关更多信息以及有效负载示例,请参阅位置求解器和设备有效负载。
注意
JSON 有效负载中必须包含一种类型的数据测量。
{ "Timestamp":
1664313161
, "Ip":{ "IpAddress":"54.240.198.35"
}, "WiFiAccessPoints": [{ "MacAddress":"A0:EC:F9:1E:32:C1"
, "Rss":-77
}], "CellTowers": { "Gsm": [{ "Mcc":262
, "Mnc":1
, "Lac":5126
, "GeranCid":16504
, "GsmLocalId": { "Bsic":6
, "Bcch":82
}, "GsmTimingAdvance":1
, "RxLevel":-110
, "GsmNmr": [{ "Bsic":7
, "Bcch":85
, "RxLevel":-100
, "GlobalIdentity": { "Lac":1
, "GeranCid":1
} }] }], "Wcdma": [{ "Mcc":262
, "Mnc":7
, "Lac":65535
, "UtranCid":14674663
, "WcdmaNmr": [{ "Uarfcndl":10786
, "UtranCid":14674663
, "Psc":149
}, { "Uarfcndl":10762
, "UtranCid":14674663
, "Psc":211
} ] }], "Lte": [{ "Mcc":262
, "Mnc":2
, "EutranCid":2898945
, "Rsrp":-50
, "Rsrq":-5
, "LteNmr": [{ "Earfcn":6300
, "Pci":237
, "Rsrp":-60
, "Rsrq":-6
, "EutranCid":2898945
}, { "Earfcn":6300
, "Pci":442
, "Rsrp":-70
, "Rsrq":-7
, "EutranCid":2898945
} ] }] } } -
要解析位置信息,请选择 Resolve(解析)。
位置信息属于类型 blob 并作为使用 GeoJSON 格式的有效负载返回,此格式用于对地理数据结构进行编码。有效负载中包含:
-
WGS84 地理坐标,包括纬度和经度信息。还可能包含海拔信息。
-
报告的位置信息类型,例如 Point(点)。点位置类型将位置表示为 WGS84 纬度和经度,编码为 GeoJSON 点
。 -
水平和垂直准确性信息,表示解析器估计的位置信息与实际设备位置之间的差异(单位为米)。
-
置信水平,表示位置估计响应中的不确定性。默认值为 0.68,表示实际设备位置在估计位置的不确定性半径内的概率为 68%。
-
设备所在的城市、省/直辖市/自治区、国家/地区和邮政编码。只有在使用 IP 反向查找解析器时,才会报告此信息。
-
时间戳信息与解析该位置的日期和时间相对应。它使用 Unix 时间戳格式。
以下代码显示了解析位置后返回的 GeoJSON 有效负载示例。
注意
如果 AWS IoT Core 设备位置在尝试解析位置时报告错误,可以先对错误进行故障排除,然后再解析该位置。有关更多信息,请参阅 对解析位置时出现的错误进行故障排查。
{ "coordinates": [ 13.376076698303223, 52.51823043823242 ], "type": "Point", "properties": { "verticalAccuracy": 45, "verticalConfidenceLevel": 0.68, "horizontalAccuracy": 303, "horizontalConfidenceLevel": 0.68, "country": "USA", "state": "CA", "city": "Sunnyvalue", "postalCode": "91234", "timestamp": "2022-11-18T12:23:58.189Z" } }
-
-
转到 Resource location(资源位置)部分,并验证 AWS IoT Core 设备位置报告的地理位置信息是否正确。您可以复制有效负载以用于您的应用程序和 AWS 服务。例如,您可以使用 位置 将地理位置数据发送到 Amazon Location Service。
解析设备位置 (API)
要使用 AWS IoT Wireless API 解析设备位置,请使用 GetPositionEstimate API 操作或 get-position-estimate CLI 命令。将有效负载测量数据指定为输入,然后运行 API 操作以解析设备位置。
注意
GetPositionEstimate
API 操作不存储任何设备或状态信息,也不能用于检索历史位置数据。它执行一次性操作,解析测量数据并生成估计位置。要检索位置信息,每次执行此 API 操作时都必须指定有效负载信息。
以下命令显示了如何使用此 API 操作解析位置的示例。
注意
运行 get-position-estimate
CLI 命令时,必须将输出 JSON 文件指定为第一个输入。此 JSON 文件将以 GeoJSON 格式存储作为响应从 CLI 获得的估计位置信息。例如,以下命令将位置信息存储在 locationout.json
文件中。
aws iotwireless get-position-estimate
locationout.json
\ --ip IpAddress=""54.240.198.35"
" \ --wi-fi-access-points \ MacAddress="A0:EC:F9:1E:32:C1
",Rss=-75
\ MacAddress="A0:EC:F9:15:72:5E
",Rss=-67
此示例包含 Wi-Fi 接入点和 IP 地址作为测量类型。AWS IoT Core设备位置功能会在 Wi-Fi 解析器和 IP 反向查找解析器之间进行选择,并且会选择准确性更高的解析器。
解析的位置作为使用 GeoJSON 格式的有效负载返回,此格式用于对地理数据结构进行编码。然后将其存储在 locationout.json
文件中。此有效负载中包含 WGS84 经度和纬度坐标、准确性和置信度信息、位置数据类型,以及解析位置的时间戳。
{ "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" } }
对解析位置时出现的错误进行故障排查
当您尝试解析位置时,可能会看到以下错误代码。AWS IoT Core设备位置在使用 GetPositionEstimate
API 操作时可能会生成错误,或者引用与 AWS IoT 控制台中的错误对应的行号。
-
400 错误
此错误表示设备有效负载的格式 JSON 无法通过 AWS IoT Core 设备位置进行验证。出现此错误可能是因为:
-
JSON 测量数据的格式不正确。
-
有效负载中仅包含时间戳信息。
-
诸如 IP 地址之类的测量数据参数无效。
要解决此错误,请检查您的 JSON 格式是否正确,是否包含来自一种或多种测量类型的数据作为输入。如果 IP 地址无效,有关如何提供有效 IP 地址来解决此错误的信息,请参阅 IP 反向查找求解器。
-
-
403 错误
此错误表示您无权执行 API 操作或无权使用 AWS IoT 控制台检索设备位置。要解决此错误,请验证您是否拥有执行此操作所需的权限。如果您的 AWS Management Console会话或 AWS CLI 会话令牌已过期,可能会发生此错误。要解决此错误,请刷新会话令牌以使用 AWS CLI,或者注销 AWS Management Console,然后使用您的凭证登录。
-
404 错误
此错误表明 AWS IoT Core 设备位置未找到或未解析任何位置信息。此错误可能是由于测量数据输入中数据不足等原因造成的。例如:
-
MAC 地址或蜂窝发射塔信息不足。
-
IP 地址不可用于查找和检索位置。
-
GNSS 有效负载不足。
要解决此类情况下出现的错误,请检查您的测量数据是否包含解析设备位置所需的足够信息。
-
-
404 错误
此错误表明,当 AWS IoT Core 设备位置功能尝试解析位置时,出现了内部服务器异常。要尝试修复此错误,请刷新会话,并重试发送需要解析的测量数据。