全部產品
Search
文件中心

IoT Platform:添加自訂任務

更新時間:Jun 30, 2024

當大量設定裝置屬性和服務調用任務無法滿足您的業務需求時,您可以添加自訂任務,通過設定自訂規則,實現多情境的裝置任務。本文介紹該任務的建立方法、運行中Topic及其資料格式的說明,查看狀態的具體操作。

前提條件

已在裝置端完成任務部署和管理功能開發。具體操作,請參見Link SDK的裝置任務

任務管理流程

  1. 建立自訂任務。
    1. 物聯網平台控制台對應執行個體下的監控營運 > 任務管理頁面,單擊建立任務
    2. 建立任務頁面,單擊以下參數名稱右側的協助表徵圖協助,根據頁面提示,配置任務和作業,單擊完成
      • 任務配置
        參數說明
        任務名稱輸入符合規則的任務名稱。可自訂。
        任務類型選擇類型:自訂任務
        任務描述輸入該任務的用途等資訊,便於您區分不同的任務。
        目標裝置、產品或分組
        從裝置、產品或分組維度選擇可執行任務的裝置。
        重要 從分組維度選擇裝置時,不支援選擇動態分組。
        下發給裝置的任務執行規則上傳規則檔案。僅支援.json格式檔案,檔案大小不能超過64 KB。

        您可單擊下載模板,擷取規則檔案模板。內容如下:

        {
            "key":"value"
        }
        • key:識別欄位,自訂的String資料。
        • valuekey對應的值,資料格式滿足JSON要求即可。

        您需根據模板格式,自訂規則內容。使用樣本,請參見裝置的自訂任務樣本

        檔案簽名演算法支援MD5SHA256

        可選配置,與任務中下發給裝置的檔案結合使用。

        任務中下發給裝置的檔案上傳自訂任務的檔案。

        選擇性參數,與檔案簽名演算法結合使用。

        支援.bin.apk.tar.gz.zip.gzip.tar.gz格式檔案,檔案大小不能超過1,000 MB。

        重要 您需根據實際需求,自訂規則和裝置檔案內容。任務規則和裝置檔案內容的實現邏輯,需您在裝置端完成開發。
      • 作業配置
        參數說明
        作業執行推送配置
        • 每分鐘作業執行數量:根據您的業務需要,設定每分鐘作業推送數量。
        • 推送訊息類型:僅對自訂任務和Pub批量訊息推送任務生效。

          可選:

          • QoS0:最多發送一次。
          • QoS1:最少發送一次。如果QoS1訊息未接收到PUBACK訊息,會在裝置重連時,重新推送給裝置。
        作業執行的逾時配置可選配置。不設定表示不會逾時。僅對自訂任務生效。

        從裝置任務進入IN_PROGRESS狀態,開始計算時間。如果超過了逾時時間,任務下作業仍未執行完成,作業狀態將被自動化佈建為TIMED_OUT,作業停止執行。

        作業開始調度時間
        可選配置。

        從當前設定作業的時間,開始計算時間。

        裝置任務建立成功後,先初始化,直至到達調度時間,才會開始調度執行。

  2. 任務建立完成後,物聯網平台通過Topic:/sys/{productKey}/{deviceName}/thing/job/notify,將任務資訊推送給裝置。
    訊息格式如下:
    {
        "id": "7542940",
        "version": "1.0",
        "params": {
            "task": {
                "taskId": "i5Ks6***pF010101",
                "status": "SENT",
                "jobDocument": {},
                "jobFile":{
                    "signMethod":"Md5",
                    "sign":"wssxff56dhdsd***",
                    "fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip"
                }
            }
        }
    }

    其中jobDocument下為任務規則檔案內容。

    表 1. 請求參數說明

    參數

    類型

    說明

    id

    String

    訊息ID號。String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。

    version

    String

    協議版本號碼,目前協議版本號碼唯一取值為1.0。

    params

    Object

    請求業務參數。

    task

    Object

    任務下的作業參數。

    taskId

    String

    任務下作業的ID。為通用唯一識別碼。

    status

    String

    任務下作業的狀態。

    • SENT:已調度。

    • REMOVED:已刪除。

    • CANCELLED:已取消。

    jobDocument

    Object

    任務文檔,描述任務執行規則。

    說明

    status為REMOVED或CANCELLED時,該欄位值為空白。

    jobFile

    Object

    建立自訂任務時,上傳的檔案資訊。

    • signMethod:簽名方法,目前支援Md5Sha256

    • sign:簽名,根據相應的簽名方法產生的簽名參數。

    • fileUrl:任務檔案的下載地址,有效期間1小時。

    說明

    status為REMOVED或CANCELLED時,該欄位值為空白。

  3. 裝置端根據自訂任務邏輯,實現規則內容。
    如果當前裝置處於離線狀態,無法接收任務資訊,裝置上線後,可通過Topic:/sys/{productKey}/{deviceName}/thing/job/get先擷取可執行檔工作清單,然後擷取一個可執行任務資訊,來完成任務。

    擷取工作清單的訊息格式如下:

    {
        "id": "123",
        "version": "1.0",
        "params": {
            "taskId": "$list"
        }
    }

    擷取任務資訊的訊息格式:

    {
        "id": "123",
        "version": "1.0",
        "params": {
            "taskId": "i5Ks***F010101"
        }
    }
    表 3. 請求參數說明

    參數

    類型

    說明

    id

    String

    訊息ID號。String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。

    version

    String

    協議版本號碼,目前協議版本號碼唯一取值為1.0。

    params

    Object

    請求業務參數。

    taskId

    String

    三種取值方式,可返回不同狀態的任務資訊。

    • 任務下作業的ID:返回作業ID對應任務的詳細資料。

    • $next:返回一個可執行任務的資訊。

    • $list:返回可執行檔工作清單,預設最多返回10個。

    物聯網平台收到請求後,通過響應Topic:/sys/{productKey}/{deviceName}/thing/job/get_reply,向裝置端返回結果。

    返回工作清單資料格式如下:

    {
        "id": "1234",
        "code": 200,
        "data": {
            "statusDetails":{"devs":"test","status":"init"},
            "taskId": "$list",
            "task":[
                {
                    "taskId": "i5Ks***",
                    "status": "IN_PROGRESS"
                },
                {
                    "taskId": "i61s***",
                    "status": "IN_PROGRESS"
                }
            ]
        }
    }

    返回任務資訊資料格式如下:

    {
        "id": "1234",
        "code": 200,
        "data": {
            "statusDetails":{"devs":"test","status":"init"},
            "taskId": "i5Ks***F010101",
            "task":{
                "taskId": "i5Ks***F010101",
                "status": "IN_PROGRESS",
                "jobDocument": {},
                "jobFile":{
                    "signMethod":"Md5",
                    "sign":"wssxff56dhdsd***",
                    "fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip"
                }
            }
        }
    }
  4. 任務進行過程中,裝置端通過Topic:/sys/{productKey}/{deviceName}/thing/job/update,向物聯網平台上報任務進度。
    訊息格式如下:
    {
        "id": "123",
        "version": "1.0",
        "params": {
            "taskId": "i5Ks***F010101",
            "status": "IN_PROGRESS",
            "statusDetails": {
                "key": "value"
            },
            "progress": 50
        }
    }
    表 5. 請求參數說明

    參數

    類型

    說明

    id

    String

    訊息ID號。String類型的數字,取值範圍0~4294967295,且每個訊息ID在當前裝置中具有唯一性。

    version

    String

    協議版本號碼,目前協議版本號碼唯一取值為1.0。

    params

    Object

    請求業務參數。

    taskId

    String

    任務下作業的ID。為通用唯一識別碼。

    status

    String

    任務下作業的狀態。可取值:

    • SUCCEEDED:成功。

    • FAILED:失敗。

    • IN_PROGRESS:執行中。

    • REJECTED:已拒絕。

    statusDetails

    Object

    使用者自訂的狀態詳情,內容可自訂。可在物聯網平台控制台的裝置管理 > 任務 > 任務詳情頁面查看。

    progress

    Integer

    任務下作業執行進度的百分數。

  5. 在物聯網平台對應執行個體下的監控營運 > 任務管理頁面,查看已建立任務及目前狀態。
    重要 狀態為已逾時的任務,不可再被調度執行。

    從任務建立完成開始計時,如果任務下作業未在7天內全部執行完成,任務狀態顯示為已逾時

    您可根據實際情境需要,執行以下操作:

    • 在工作清單中,取消執行中狀態的任務。
    • 單擊目標任務對應的查看,在任務詳情頁面,查看任務資訊和作業執行統計。
      功能頁簽說明
      任務資訊您可以查看任務資訊,修改任務描述和作業配置,下載裝置任務檔案。
      作業概覽您可以查看任務下各狀態的作業統計。
      • 您可以單擊目標裝置的查看,在裝置詳情頁面:
        • 單擊任務頁簽,查看該裝置下的所有工作清單。
        • 單擊Log Service前往查看,在雲端作業記錄頁簽的搜尋欄,選擇業務類型雲到裝置訊息,查看裝置任務相關日誌。
      • 如果作業未執行成功,單擊執行詳情,可查看失敗原因。
      • 如果作業執行已逾時或失敗,單擊已逾時失敗的狀態按鈕,可查看對應狀態的作業列表。

        您可以單擊列表上方的重新執行,重新執行當前任務下所有已逾時和失敗的作業。

    • 單擊目標任務對應的刪除,然後單擊確認
      警告 刪除裝置任務後,與該任務相關的資料被清除,如果有依賴該任務的業務,可能導致服務不可用或影響使用者的業務。請謹慎操作。

操作範例

裝置的自訂任務樣本