本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
位置求解器是可用于解析 IoT 设备位置的算法。AWS IoT Core设备位置支持以下位置求解器。您将看到这些测量类型的 JSON 有效负载格式的示例,求解器支持的设备,以及如何解析位置。
要解析设备位置,请指定一种或多种这些测量数据类型。将为所有测量数据组合返回单个解析位置。
基于 Wi-Fi 的求解器
使用基于 Wi-Fi 的求解器和来自 Wi-Fi 接入点的扫描信息来解析位置。此求解器支持 WLAN 技术,可用于计算一般 IoT 设备和 LoRaWAN 无线设备的设备位置。
LoRaWAN 设备必须具有 LoRa Edge 芯片组,该芯片组可以解码传入的 Wi-Fi 扫描信息。LoRa Edge 是一个超低功耗平台,集成了针对地理定位应用的远程 LoRa 收发器、多星座 GNSS 扫描仪和无源 Wi-Fi MAC 扫描仪。当收到来自设备的上行链路消息时,会将 Wi-Fi 扫描数据发送到 AWS IoT Core 设备位置,并根据 Wi-Fi 扫描结果估算位置。然后将解码后的信息传递给基于 Wi-Fi 的求解器,以检索位置信息。
以下代码显示了来自包含测量数据的设备的 JSON 有效负载示例。当 AWS IoT Core 设备位置接收这些数据作为输入时,它会向求解器提供商发送 HTTP 请求以解析位置信息。要检索此信息,请指定 MAC 地址和 RSS(接收的信号强度)的值。为此,要么使用这种格式提供 JSON 有效负载,要么使用 GetPositionEstimate API 操作的 WiFiAccessPoints 对象参数。
{
"Timestamp": 1664313161
, // optional
"WiFiAccessPoints": [
{
"MacAddress": "A0:EC:F9:1E:32:C1
", // required
"Rss": -75
// required
}
]
}
基于蜂窝的求解器
您可以使用基于蜂窝的求解器和从蜂窝无线发射塔获得的测量数据来解析位置。此求解器支持以下技术。即使包含来自任何或所有这些技术的测量数据,也只能获得单个已解析的位置信息。
-
GSM
-
CDMA
-
WCDMA
-
TD-SCDMA
-
LTE
基于蜂窝的求解器有效负载示例
以下代码显示了来自包含蜂窝测量数据的设备的 JSON 有效负载示例。当 AWS IoT Core 设备位置接收这些数据作为输入时,它会向求解器提供商发送 HTTP 请求以解析位置信息。要检索此信息,要么在控制台中使用这种格式提供 JSON 有效负载,要么为 GetPositionEstimate API 操作的 CellTowers 参数指定值。您可以通过使用任何或所有这些蜂窝技术指定参数值来提供测量数据。
使用此测量数据时,必须指定诸如移动网络的网络和国家/地区代码之类的信息,以及包括有关本地 ID 的信息在内的其他可选参数。以下代码显示了有效负载格式的示例。有关这些参数的更多信息,请参阅 LTE 对象。
{
"Timestamp": 1664313161
, // optional
"CellTowers": {
"Lte": [
{
"Mcc": int, // required
"Mnc": int, // required
"EutranCid": int, // required. Make sure that you use int for EutranCid.
"Tac": int, // optional
"LteLocalId": { // optional
"Pci": int, // required
"Earfcn": int, // required
},
"LteTimingAdvance": int, // optional
"Rsrp": int, // optional
"Rsrq": float, // optional
"NrCapable": boolean, // optional
"LteNmr": [ // optional
{
"Pci": int, // required
"Earfcn": int, // required
"EutranCid": int, // required
"Rsrp": int, // optional
"Rsrq": float // optional
}
]
}
]
}
}
使用此测量数据时,必须指定诸如移动网络的网络和国家/地区代码之类的信息、基站信息,以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息,请参阅 GSM 对象。
{
"Timestamp": 1664313161
, // optional
"CellTowers": {
"Gsm": [
{
"Mcc": int, // required
"Mnc": int, // required
"Lac": int, // required
"GeranCid": int, // required
"GsmLocalId": { // optional
"Bsic": int, // required
"Bcch": int, // required
},
"GsmTimingAdvance": int, // optional
"RxLevel": int, // optional
"GsmNmr": [ // optional
{
"Bsic": int, // required
"Bcch": int, // required
"RxLevel": int, // optional
"GlobalIdentity": {
"Lac": int, // required
"GeranCid": int // required
}
}
]
}
]
}
使用此测量数据时,必须指定诸如信号功率和标识信息、基站信息,以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息,请参阅 CDMA 对象。
{
"Timestamp": 1664313161
, // optional
"CellTowers": {
"Cdma": [
{
"SystemId": int, // required
"NetworkId": int, // required
"BaseStationId": int, // required
"RegistrationZone": int, // optional
"CdmaLocalId": { // optional
"PnOffset": int, // required
"CdmaChannel": int, // required
},
"PilotPower": int, // optional
"BaseLat": float, // optional
"BaseLng": float, // optional
"CdmaNmr": [ // optional
{
"PnOffset": int, // required
"CdmaChannel": int, // required
"PilotPower": int, // optional
"BaseStationId": int // optional
}
]
}
]
}
}
使用此测量数据时,必须指定诸如网络和国家/地区代码、信号功率和标识信息、基站信息,以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息,请参阅 CDMA 对象。
{
"Timestamp": 1664313161
, // optional
"CellTowers": {
"Wcdma": [
{
"Mcc": int, // required
"Mnc": int, // required
"UtranCid": int, // required
"Lac": int, // optional
"WcdmaLocalId": { // optional
"Uarfcndl": int, // required
"Psc": int, // required
},
"Rscp": int, // optional
"Pathloss": int, // optional
"WcdmaNmr": [ // optional
{
"Uarfcndl": int, // required
"Psc": int, // required
"UtranCid": int, // required
"Rscp": int, // optional
"Pathloss": int, // optional
}
]
}
]
}
}
使用此测量数据时,必须指定诸如网络和国家/地区代码、信号功率和标识信息、基站信息,以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息,请参阅 CDMA 对象。
{
"Timestamp": 1664313161
, // optional
"CellTowers": {
"Tdscdma": [
{
"Mcc": int, // required
"Mnc": int, // required
"UtranCid": int, // required
"Lac": int, // optional
"TdscdmaLocalId": { // optional
"Uarfcn": int, // required
"CellParams": int, // required
},
"TdscdmaTimingAdvance": int, // optional
"Rscp": int, // optional
"Pathloss": int, // optional
"TdscdmaNmr": [ // optional
{
"Uarfcn": int, // required
"CellParams": int, // required
"UtranCid": int, // optional
"Rscp": int, // optional
"Pathloss": int, // optional
}
]
}
]
}
}
IP 反向查找求解器
您可以使用 IP 反向查找求解器,将 IP 地址作为输入来解析位置。此求解器可从已预置 AWS IoT 的设备中获取位置信息。使用 IPv4 或 IPv6 标准模式或 IPv6 十六进制压缩模式的格式指定 IP 地址信息。然后,将获得已解析的估计位置,包括设备所在的城市和国家/地区等其他信息。
注意
使用 IP 反向查找,即表示您同意不将其用于识别或定位特定的家庭或街道地址。
以下代码显示了来自包含测量数据的设备的 JSON 有效负载示例。当 AWS IoT Core 设备位置收到测量数据中的 IP 地址信息时,它会在求解器提供商的数据库中查找该信息,然后使用该信息来解析位置信息。要检索此信息,要么使用此格式提供 JSON 有效负载,要么为 GetPositionEstimate API 操作的 Ip 参数指定值。
注意
使用此解析器时,除了坐标外,还会报告设备所在的城市、省/直辖市/自治区、国家/地区和邮政编码。有关示例,请参阅解析设备位置(控制台)。
{
"Timestamp": 1664313161
,
"Ip":{
"IpAddress":"54.240.198.35"
}
}
GNSS 求解器
使用 GNSS(全球导航卫星系统)求解器和 GNSS 扫描结果消息或 NAV 消息中包含的信息检索设备位置。可以选择提供额外的 GNSS 辅助信息,从而减少求解器搜索信号时必须使用的变量数量。通过提供这种辅助信息(包括位置、高度,以及捕获时间和准确度信息),求解器可以轻松识别视野中的卫星并计算设备位置。
此求解器可以与 LoRaWAN 设备,以及其他预置了 AWS IoT 的设备结合使用。对于一般 IoT 设备,如果设备支持使用 GNSS 进行位置估计,当从设备接收 GNSS 扫描信息时,收发器会解析位置信息。对于 LoRaWAN 设备,这些设备必须配备 LoRa Edge 芯片组。当收到来自设备的上行链路消息时,会将 GNSS 扫描数据发送到 适用于 LoRaWAN 的 AWS IoT Core,并根据来自收发器的扫描结果估算位置。
以下代码显示了来自包含测量数据的设备的 JSON 有效负载示例。当 AWS IoT Core 设备位置收到包含测量数据中有效负载的 GNSS 扫描信息时,它会使用收发器和所包含的任何其他辅助信息来搜索信号并解析位置信息。要检索此信息,要么使用此格式提供 JSON 有效负载,要么为 GetPositionEstimate API 操作的 Gnss 参数指定值。
注意
在 AWS IoT Core Device Location 可以解析设备位置之前,必须从有效负载中删除目标字节。
{
"Timestamp": 1664313161
, // optional
"Gnss": {
"AssistAltitude": number
, // optional
"AssistPosition": [ number ]
, // optional
"CaptureTime": number
, // optional
"CaptureTimeAccuracy": number
, // optional
"Payload": "string
", // required
"Use2DSolver": boolean
// optional
}
}