解析 IoT 裝置的位置 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

解析 IoT 裝置的位置

使用 AWS IoT Core 裝置位置解碼裝置中的量測資料,並使用協力廠商求解器解析裝置位置。系統會產生解析後的位置作為 GeoJSON 承載,其中包含地理坐標和準確性資訊。您可以從 AWS IoT 主控台、 AWS IoT Wireless API 或解析裝置的位置 AWS CLI。

解析裝置位置 (主控台)

若要解析裝置位置 (主控台)

  1. 前往主控台中的「裝置位置」頁 AWS IoT 面。

  2. 從您的裝置記錄或記錄中 CloudWatch 取得有效負載測量資料,然後在「透過裝載解決位置」區段中輸入該資料。

    以下程式碼顯示 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. 轉到資源位置部分,並驗證設備位置報告的地理位 AWS IoT Core 置信息。您可以複製承載,以便與其他應用程式搭配使用。 AWS 服務例如,您可以使用 位置 將地理位置資料傳送至 Amazon Location Service。

解析裝置位置 (API)

若要使用 AWS IoT Wireless API 解析裝置位置,請使用 GetPositionEstimateAPI 作業或 get-position-estimateCLI 指令。將承載測量資料指定為輸入項,然後執行 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 會發生此錯誤。若要解決此錯誤,請重新整理工作階段 Token 以使用 AWS CLI,或登出, AWS Management Console 然後使用您的認證登入。

  • 404 - 錯誤

    此錯誤表示裝置位置找不到或解決任何位 AWS IoT Core 置資訊。由於輸入的測量資料中可能有資料不足等情況,因此可能會發生錯誤。例如:

    • MAC 地址或行動網路基地台的資訊不夠充分。

    • 無法使用 IP 地址查詢和擷取位置。

    • GNSS 承載不足。

    若要解決這種情況下的錯誤,請檢查您的測量資料是否包含解析裝置位置所需的足夠資訊。

  • 500 - 錯誤

    此錯誤表示 AWS IoT Core 裝置位置功能嘗試解析位置時,內部伺服器發生異常狀況。若要嘗試修正此錯誤,請重新整理工作階段,然後重新嘗試傳送要解析的測量資料。