Hub SDK 用戶端 - 的受管整合 AWS IoT Device Management

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

Hub SDK 用戶端

Hub SDK 用戶端程式庫可做為受管整合 Hub SDK 與您在相同中樞上執行的自有通訊協定堆疊之間的界面。它會公開一組公有 APIs,以促進通訊協定堆疊與 Device Hub SDK 元件的互動。使用案例包括自訂外掛程式控制、自訂外掛程式佈建器和本機控制器。

取得受管整合 Hub SDK

Hub SDK 用戶端隨附 受管整合 SDK。從受管整合主控台聯絡我們以存取中樞 SDK。

關於 Hub SDK 工具組

下載後,您會看到一個IotMI-DeviceSDK-Toolkit資料夾,其中包含可在應用程式中使用的所有公有標頭檔案和.so檔案。受管整合團隊也提供main.cpp示範用途的範例,以及您可以直接執行bin/的示範應用程式二進位檔。您可以選擇性地將此做為應用程式的起點。

使用 Hub SDK 用戶端建立自訂應用程式

使用下列步驟來建立您的自訂應用程式。

  1. 在您的應用程式中包含標頭檔案 (.h) 和共用物件檔案 (.so)。

    您必須在應用程式中包含公有標頭檔案 (.h) 和共用物件檔案 (.so)。對於 .so 檔案,您可以將它們放在 lib 資料夾中。最終配置將與此類似:

    ├── include │ ├── iotmi_device_sdk_client │ │ └── iotmi_device_sdk_client_common_types.h │ ├── iotmi_device_sdk_client.h │ └── iotshd_status.h ├── lib │ ├── libiotmi_devicesdk_client_module.so │ └── libiotmi_log_c.so
  2. 在主要應用程式中建立 Hub SDK 用戶端。

    1. 在主要應用程式中,您必須先初始化 Hub SDK 用戶端,才能用來處理請求。您可以直接使用 建構用戶端clientId

    2. 擁有用戶端之後,您可以將其連線至受管整合裝置 SDK。

      以下是建立 Hub SDK 用戶端以及如何連線的範例。

      #include <cstdlib> #include <string> #include "iotshd_status.h" #include "iotmi_device_sdk_client.h" auto client = std::make_unique<DeviceSDKClient>(your_own_clientId); iotmi_statusCode_t status = client->connect();
      注意

      your_own_clientId 必須與您在使用者引導設定中 start-device-discovery 中指定的相同,或在簡單設定佈建流程中用於 create-managed-thing

  3. 執行下列步驟來發佈和訂閱 。

    1. 建立連線後,您現在可以訂閱來自受管整合 Hub SDK 的傳入任務。傳入的任務可以是控制任務或佈建任務。您也需要在收到任務時定義自己的回呼函數,以及您自己的自訂內容,以用於您自己的追蹤目的。

      // subscribe to provisioning tasks iotmi_statusCode_t status = client->iotmi_provision_subscribe_to_tasks( example_subscriber_callback, custom_context); // subscribe to control tasks iotmi_statusCode_t status = client->iotmi_control_subscribe_to_tasks( example_subscriber_callback, custom_context);
    2. 建立連線之後,您現在可以從應用程式將請求發佈到受管整合中樞 SDK。您可以定義自己的任務訊息類型,針對不同的業務用途使用不同的承載。請求可以同時包含控制請求和佈建請求,類似於訂閱流程。最後,您可以為 指派地址rspPayload,以同步方式從受管整合中樞開發套件取得回應。

      // publish control request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_CONTROL_EVENT, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_control_publish_request(&api_payload); // publish provision request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_DEVICE_ONBOARDED, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_provision_publish_request(&api_payload);
  4. 建置您自己的 CMakeLists.txt,並從那裡建置您的應用程式。最終輸出可以是可執行的二進位檔,例如 MyFirstApplication

執行您的自訂應用程式

執行自訂應用程式之前,請完成下列步驟來設定中樞,並啟動受管整合中樞 SDK:

一旦符合先決條件,您就可以執行自訂應用程式。例如:

./MyFirstApplication
重要

您必須使用指令碼部署 Hub SDK使用指令碼手動更新 中列出的啟動指令碼,以啟動您自己的應用程式。順序很重要,請勿變更順序。

更新以下內容。變更

./IotMI-DeviceSDK-Toolkit/bin/DeviceSDKClientDemo >> $LOGS_DIR/logDeviceSDKClientDemo_logs.txt &

./MyFirstApplication >> $LOGS_DIR/MyFirstApplication_logs.txtt &

資料類型

本節定義用於自訂通訊協定外掛程式的資料類型。

iotmi_client_request_t

代表要發佈至受管整合元件的請求。

messageType

訊息的類型 (CommonTypes::C2MIMessageType)。下列清單顯示有效值。

  • C2MI_DEVICE_ONBOARDED:指出具有相關承載的裝置加入訊息。

  • C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE:表示預先關聯裝置的取消佈建任務完成通知。

  • C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE:表示已啟動裝置的取消佈建任務完成通知。

  • C2MI_DE_PROVISIONING_COMPLETE_RESPONSE:表示取消佈建任務完成回應。

  • C2MI_CONTROL_EVENT:表示具有潛在裝置狀態變更的控制事件。

  • C2MI_CONTROL_SEND_COMMAND:表示來自本機控制器的控制命令。

  • C2MI_CONTROL_SEND_DEVICE_STATE_QUERY:表示來自本機控制器的控制裝置狀態查詢。

reqPayload

請求承載,通常是 JSON 格式的字串。

rspPayload

由受管整合元件填入的回應承載。

iotmi_client_event_t

代表從受管整合元件接收的事件。

event_id

事件的唯一識別符。

長度

事件資料的長度。

data

事件資料的指標,包括 messageType。下列清單顯示可能的值。

  • C2MI_PROVISION_UGS_TASK:表示 UGS 流程的佈建任務。

  • C2MI_PROVISION_SS_TASK:表示 SimpleSetup 流程的佈建任務。

  • C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK:表示預先關聯裝置的取消佈建任務。

  • C2MI_DE_PROVISION_ACTIVATED_TASK:表示已啟動裝置的取消佈建任務。

  • C2MI_DEVICE_ONBOARDED_RESPONSE:表示裝置加入回應。

  • C2MI_CONTROL_TASK:表示控制任務。

  • C2MI_CONTROL_EVENT_NOTIFICATION:表示本機控制器的控制事件通知。

ctx

與事件相關聯的自訂內容。