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 中的區域和功能可用性

您全權負責以安全且符合相關法律的方式部署命令。

若要使用命令功能:

  1. 首先,建立命令資源。或者,指定包含執行命令所需資訊的參數。

  2. 指定將接收命令並執行指定動作的目標車輛。

  3. 現在,您可以在目標裝置上執行 命令,並檢查命令執行詳細資訊以擷取狀態,並使用 CloudWatch 日誌進一步疑難排解任何問題。

下列各節顯示 車輛和 命令之間的工作流程。

工作流程概觀

下列步驟提供 車輛與 命令之間命令工作流程的概觀。當您使用任何 命令 HTTP API 操作時,系統會使用 Sigv4 登入資料來簽署請求。

注意

除了 StartCommandExecution API 操作之外,透過 HTTP 通訊協定執行的所有操作都會使用控制平面端點。

  1. 建立 MQTT 連線並訂閱命令主題

    若要準備命令工作流程,裝置必須與iot:Data-ATS端點建立 MQTT 連線,並訂閱上述的命令請求主題。或者,您的裝置也可以訂閱接受和拒絕的命令回應主題。

  2. 建立車輛模型和命令資源

    您現在可以使用 和 CreateCommand控制平面 API 操作來建立 車輛CreateVehicle和命令資源。命令資源包含要在車輛上執行命令時套用的組態。

  3. 在目標裝置上啟動命令執行

    使用StartCommandExecution資料平面 API 搭配您的帳戶特定iot:Jobs端點,在車輛上啟動命令執行。API 會將 protobuf 編碼的承載訊息發佈至命令請求主題。

  4. 更新命令執行的結果

    車輛會處理 命令和收到的承載,然後使用 UpdateCommandExecution API 將命令執行的結果發佈至回應主題。如果您的車輛訂閱了接受和拒絕的命令回應主題,將會收到一則訊息,指出雲端服務是否接受或拒絕回應。

  5. (選用) 擷取命令執行結果

    若要擷取命令執行的結果,您可以使用GetCommandExecution控制平面 API 操作。在您的車輛將命令執行結果發佈至回應主題後,此 API 會傳回更新的資訊。

  6. (選用) 訂閱和管理命令事件

    若要接收命令執行狀態更新的通知,您可以訂閱命令事件主題。然後,您可以使用CreateTopicRule控制平面 API 將命令事件資料路由到其他應用程式,例如 AWS Lambda 函數或 Amazon SQS,並在其上建置應用程式。

車輛工作流程

下列步驟詳細說明使用 命令功能時的車輛工作流程。

注意

本節所述的操作使用 MQTT 通訊協定。

  1. 建立 MQTT 連線

    若要讓您的車輛準備好使用命令功能,必須先連線到 AWS IoT Core 訊息中介裝置。必須允許 車輛執行 iot:Connect動作,以連線至 AWS IoT Core 並與訊息中介裝置建立 MQTT 連線。若要尋找 的資料平面端點 AWS 帳戶,請使用 DescribeEndpoint API 或 describe-endpoint CLI 命令,如下所示。

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    執行此命令會傳回帳戶特定的資料平面端點,如下所示。

    account-specific-prefix.iot.region.amazonaws.com
  2. 命令請求主題的 Susbcribe

    建立連線之後,您的裝置就可以訂閱 AWS IoT 命令 MQTT 請求主題。當您在目標裝置上建立命令並啟動命令執行時,訊息中介裝置會將 protobuf 編碼的承載訊息發佈至請求主題。然後,您的裝置可以接收承載訊息並處理 命令。在此範例中,將 取代<DeviceID>為目標車輛的唯一識別符。此 ID 可以是您車輛的唯一識別符或物件名稱

    注意

    傳送至裝置的承載訊息必須使用 protobuf 格式。

    $aws/commands/things/<DeviceID>/executions/+/request/protobuf
  3. (選用) 訂閱命令回應主題

    或者,您可以訂閱這些命令回應主題,以接收訊息,指出雲端服務是否接受或拒絕來自裝置的回應。

    注意

    車輛可選擇訂閱 /accepted/rejected回應主題。即使未明確訂閱這些主題,您的 車輛也會自動收到這些回應訊息。

    $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/accepted $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/rejected
  4. 更新命令執行的結果

    目標車輛接著會處理 命令。然後,它會使用 UpdateCommandExecution API 將執行結果發佈至下列 MQTT 回應主題。

    注意

    對於指定的車輛和命令執行,<DeviceID> 必須符合裝置訂閱之請求主題中的對應欄位。

    $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf

    UpdateCommandExecution API 是透過 TLS 驗證的 MQTT 進行的資料平面 API 操作。

    • 如果雲端服務成功處理命令執行結果,則會將訊息發佈至 MQTT 接受的主題。接受的主題使用下列格式。

      $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/accepted
    • 如果雲端服務無法處理命令執行結果,回應會發佈至 MQTT 拒絕主題。拒絕的主題使用下列格式。

      $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/rejected

    如需此 API 和範例的詳細資訊,請參閱 更新命令執行結果

命令工作流程

下列步驟詳細說明命令工作流程。

注意

本節所述的操作使用 HTTP 通訊協定。

  1. 註冊您的 車輛

    現在您已經準備好 車輛使用 命令功能,您可以註冊 車輛,然後建立將傳送至車輛的命令來準備應用程式。若要註冊車輛,請使用CreateVehicle控制平面 API 操作建立車輛模型 (模型資訊清單) 的執行個體。如需詳細資訊和範例,請參閱建立車輛

  2. 建立命令

    使用 CreateCommand HTTP 控制平面 API 操作來建立適用於您目標車輛的命令模型。指定執行命令時要使用的任何參數和預設值,並確保它使用 AWS-IoT-FleetWise 命名空間。如需使用此 API 的詳細資訊和範例,請參閱 建立命令資源

  3. 啟動命令執行

    您現在可以使用StartCommandExecution資料平面 API 操作執行您在車輛上建立的命令。 AWS IoT Device Management 會擷取命令和命令參數,並驗證傳入的請求。然後,它會呼叫具有必要參數的 AWS IoT FleetWise API,以產生車輛特定的承載。承載會透過 AWS IoT Device Management MQTT 傳送至裝置訂閱的命令請求主題。如需使用此 API 的詳細資訊和範例,請參閱 傳送命令 (AWS CLI)

    $aws/commands/things/<DeviceID>/executions/+/request/protobuf
    注意

    如果裝置在從雲端傳送命令並使用 MQTT 持久性工作階段時離線,則命令會在訊息中介裝置等待。如果裝置在逾時持續時間之前恢復線上狀態,且已訂閱命令請求主題,則裝置可以處理命令並將結果發佈至回應主題。如果裝置未在逾時持續時間之前恢復上線,則命令執行將會逾時,承載訊息將會過期。

  4. 擷取命令執行

    在裝置上執行 命令之後,請使用GetCommandExecution控制平面 API 操作來擷取和監控命令執行的結果。您也可以使用 API 取得執行資料的其他資訊,例如上次更新的時間、執行完成的時間,以及指定的參數。

    注意

    若要擷取最新的狀態資訊,您的裝置必須已將命令執行結果發布至回應主題。

    如需使用此 API 的詳細資訊和範例,請參閱 取得命令執行

(選用) 命令通知

您可以訂閱命令事件,以在命令執行狀態變更時接收通知。下列步驟說明如何訂閱命令事件,然後處理它們。

  1. 建立主題規則

    您可以訂閱命令事件主題,並在命令執行狀態變更時收到通知。您也可以建立主題規則,將車輛處理的資料路由到其他應用程式,例如 AWS Lambda 函數。您可以使用 AWS IoT 主控台或CreateTopicRule AWS IoT Core 控制平面 API 操作來建立主題規則。如需詳細資訊,請參閱建立 和 AWS IoT 規則

    在此範例中,將 取代<CommandID>為您要接收通知之命令的識別符,並將 <CommandExecutionStatus>取代為命令執行的狀態。

    $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
    注意

    若要接收所有命令和命令執行狀態的通知,您可以使用萬用字元並訂閱下列主題。

    $aws/events/commandExecution/+/#
  2. 接收和處理命令事件

    如果您在上一個步驟中建立了主題規則來訂閱命令事件,則可以管理您收到的命令推播通知。您也可以選擇性地在其上建置應用程式,例如使用您建立的主題規則搭配 AWS Lambda、Amazon SQS、Amazon SNS 或 AWS Step Functions。

下列程式碼顯示您將收到的命令事件通知的範例承載。

{ "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554", "status":"FAILED", "statusReason": { "reasonCode": "4", "reasonDescription": "" }, "eventType": "COMMAND_EXECUTION", "commandArn":"arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086", "targetArn":"arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd", "timestamp":1717708862107 }