解析 IoT 设备的位置 - AWS IoT Core

解析 IoT 设备的位置

通过 AWS IoT Core 设备位置功能来解码来自设备的测量数据,并使用第三方求解器来解析设备位置。解析后的位置以 GeoJSON 有效负载的形式生成,其中包含地理坐标和准确性信息。您可以通过 AWS IoT 控制台、AWS IoT Wireless API 或 AWS CLI 解析设备位置。

解析设备位置(控制台)

解析设备位置(控制台)

  1. 转到 AWS IoT 控制台中的 Device Location(设备位置)页面。

  2. 从您的设备日志或 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 } ] }] } }
  3. 要解析位置信息,请选择 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" } }
  4. 转到 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 设备位置功能尝试解析位置时,出现了内部服务器异常。要尝试修复此错误,请刷新会话,并重试发送需要解析的测量数据。