View a markdown version of this page

命令概念 - AWS IoT FleetWise

AWS IoT FleetWise 不再向新客戶開放。現有的 AWS IoT FleetWise 客戶可以繼續使用 服務。上的連線行動性指南 AWS提供如何為連線行動解決方案開發和部署模組化服務的指引,這些解決方案可用於實現與 AWS IoT FleetWise 同等的功能。

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

命令概念

重要

對特定 AWS IoT FleetWise 功能的存取目前受到鎖定。如需詳細資訊,請參閱AWS AWS IoT FleetWise 中的區域和功能可用性

命令是從雲端傳送至目標裝置的指示。目標裝置可以是 車輛,且必須在AWS IoT 物件登錄檔中註冊為物件。命令可以包含參數,以定義車輛傳動器需要執行的動作。車輛接著會剖析命令及其參數,並處理它們以採取對應的動作。然後,它會以命令執行的狀態回應雲端應用程式。

如需詳細的工作流程,請參閱 車輛和命令

命令關鍵概念

以下顯示一些使用 命令功能的重要概念,以及其如何使用上次已知狀態 (LKS) 狀態範本。

命令

命令是一種實體,可用來將指示傳送至實體車輛,讓它執行動作,例如開啟引擎或變更視窗的位置。您可以針對特定使用案例預先定義一組命令,或使用它們來為經常性使用案例建立可重複使用的組態。例如,您可以設定 命令,供 應用程式用來鎖定車輛的門或遠端變更溫度。

命名空間

使用命令功能時,您必須指定命令的命名空間。當您在 AWS IoT FleetWise 中建立命令時,您必須選擇 AWS-IoT-FleetWise做為命名空間。當您使用此命名空間時,必須提供將用於在車輛上執行 命令的參數。如果您想要 AWS IoT Device Management 改為在 中建立命令,則必須改用 AWS-IoT 命名空間。如需詳細資訊,請參閱 AWS IoT Device Management 開發人員指南中的 命令

命令狀態

您建立的命令將處於可用狀態,這表示它可用於在車輛上啟動命令執行。如果命令過期,您可以棄用命令。對於處於已棄用狀態的命令,現有的命令執行將執行到完成。您無法更新命令或執行任何新的執行。若要傳送新的執行,您必須還原命令,使其變成可用。

如果不再需要命令,您也可以將其刪除。當您將命令標記為刪除時,如果命令已棄用超過最大逾時 24 小時的持續時間,則會立即刪除命令。如果命令未棄用,或已棄用超過最大逾時的持續時間,則命令將處於待定刪除狀態。命令會在 24 小時後自動從您的帳戶中移除。

參數

建立命令時,您可以選擇指定您希望目標車輛在執行命令時執行的參數。您建立的 命令是可重複使用的組態,可用來將多個命令執行傳送至您的 車輛,並同時執行它們。或者,您也可以只在執行時間指定參數,並選擇執行建立命令並將其傳送至車輛的一次性操作。

目標車輛

當您想要執行命令時,您必須指定將接收命令並執行特定動作的目標車輛。目標車輛必須已向 註冊為物件 AWS IoT。將命令傳送至車輛後,它會開始根據您指定的參數和值執行命令的執行個體。

傳動器

當您想要執行 命令時,您必須在車輛上指定將接收命令的傳動器及其值,以決定要執行的動作。您可以選擇性地設定傳動器的預設值,以避免傳送不正確的命令。例如,您可以將預設值 LockDoor用於門鎖致動器,讓命令不會意外解除鎖定門。如需傳動器的一般資訊,請參閱 重要概念

資料類型支援

用於命令功能的傳動器支援以下資料類型。

注意

遠端資訊處理資料、命令或最後已知狀態 (LKS) 不支援陣列。您只能將陣列資料類型用於視覺系統資料。

  • 浮點數類型。支援下列類型。

    • 浮點數 (32 位元)

    • 雙 (64 位元)

  • 整數 (已簽章和未簽章)。支援下列整數類型。

    • int8 和 uint8

    • int16 和 uint16

    • int32 和 uint32

  • 長。支援下列長型。

    • 長 (int64)

    • 未簽署的長 (uint64)

  • String

  • Boolean

命令執行

命令執行是在目標裝置上執行之命令的執行個體。車輛會使用您在建立命令或啟動命令執行時指定的參數來執行命令。車輛接著會執行指定的操作,並傳回執行的狀態。

注意

對於指定的車輛,您可以同時執行多個命令。如需您可以為每個車輛執行的並行執行數目上限的相關資訊,請參閱AWS IoT Device Management 命令配額

上次已知狀態 (LKS) 狀態範本

狀態範本為車主提供追蹤其車輛狀態的機制。若要近乎即時地監控您車輛的上次已知狀態 (LKS),您可以建立狀態範本並將其與您的車輛建立關聯。

使用 命令功能,您可以執行可用於狀態資料收集和處理的「隨需」操作。例如,您可以請求目前車輛狀態一次性 (擷取),或啟用或停用先前部署的 LKS 狀態範本,以開始或停止報告車輛資料。如需示範如何使用 命令搭配狀態範本的範例,請參閱 命令使用案例

命令執行狀態

啟動命令執行後,您的車輛可以發佈執行狀態,並提供狀態原因做為執行的其他資訊。下列各節說明各種命令執行狀態,以及狀態碼。

命令執行狀態原因代碼和描述

若要報告命令執行狀態的更新,您的車輛可以使用 UpdateCommandExecution API,使用AWS IoT Core 開發人員指南中所述的命令保留主題,將更新的狀態資訊發佈至雲端。報告狀態資訊時,您的裝置可以使用 StatusReason 物件提供每個命令執行狀態的其他內容,以及包含在 物件中的欄位 reasonCodereasonDescription

命令執行狀態和狀態碼

下表顯示各種命令執行狀態碼,以及命令執行可以轉換到的允許狀態。它也會顯示命令執行是否為「終端」(即不會進一步進行狀態更新)、變更是由車輛或雲端啟動,以及不同的預先定義狀態碼,以及它們如何對應到雲端報告的狀態。

  • 如需有關 AWS IoT FleetWise 如何使用預先定義狀態碼和 statusReason 物件的資訊,請參閱 Edge Agent for AWS IoT FleetWise 軟體文件中命令狀態

  • 如需有關終端機和非終端機執行以及狀態之間轉換的其他資訊,請參閱AWS IoT Core 開發人員指南中的命令執行狀態

命令執行狀態和來源
命令執行狀態 Description 由裝置/雲端啟動? 終端機執行? 允許的狀態轉換 預先定義的狀態碼
CREATED 當開始執行命令的 API 請求 (StartCommandExecution API) 成功時,命令執行狀態會變更為 CREATED 雲端
  • IN_PROGRESS

  • SUCCEEDED

  • FAILED

  • REJECTED

  • TIMED_OUT

IN_PROGRESS 當車輛開始執行命令時,可以發佈訊息至回應主題,將狀態更新為 IN_PROGRESS 裝置
  • IN_PROGRESS

  • SUCCEEDED (成功)

  • 失敗

  • REJECTED

  • TIMED_OUT

COMMAND_STATUS_COMMAND_IN_PROGRESS
SUCCEEDED 當車輛成功處理命令並完成執行時,可以將訊息發佈至回應主題,以將狀態更新為 SUCCEEDED 裝置 不適用 COMMAND_STATUS_SUCCEEDED
FAILED 當車輛無法執行命令時,可以將訊息發佈至回應主題,以將狀態更新為 FAILED 裝置 不適用 COMMAND_STATUS_EXECUTION_FAILED
REJECTED 如果車輛無法接受命令,可以將訊息發佈至回應主題,將狀態更新為 REJECTED 裝置 不適用
TIMED_OUT

由於下列任何原因TIMED_OUT,命令執行狀態可能會變更為 。

  • 未收到命令執行的結果,雲端會自動報告TIMED_OUT狀態。

  • 車輛回報嘗試執行 命令時發生逾時。在此情況下,命令執行會變成終端機。

如需此狀態的詳細資訊,請參閱 命令執行逾時狀態

裝置和雲端
  • SUCCEEDED (成功)

  • 失敗

  • REJECTED

  • TIMED_OUT

COMMAND_STATUS_EXECUTION_TIMEOUT

命令執行逾時狀態

雲端和裝置都可以報告命令執行逾時。命令傳送至裝置後,計時器便會啟動。如果在指定的持續時間內沒有收到來自裝置的回應,則雲端會報告TIMED_OUT狀態。在此情況下,TIMED_OUT狀態為 的命令執行為非終端。

裝置可以將此狀態覆寫為終端狀態,例如 SUCCEEDEDFAILEDREJECTED。它也可以報告執行 命令時發生逾時。在此情況下,命令執行狀態會保持在 ,TIMED_OUTStatusReason物件的欄位會根據裝置報告的資訊更新。狀態中的命令執行TIMED_OUT現在會變成終端機。

如需詳細資訊,請參閱AWS IoT Core 《 開發人員指南》中的命令執行逾時考量事項。