當批量設置設備屬性和服務調用任務無法滿足您的業(yè)務需求時,您可以添加自定義任務,通過設置自定義規(guī)則,實現多場景的設備任務。本文介紹該任務的創(chuàng)建方法、運行中Topic及其數據格式的說明,查看狀態(tài)的具體操作。

前提條件

已在設備端完成任務部署和管理功能開發(fā)。具體操作,請參見Link SDK的設備任務

任務管理流程

  1. 創(chuàng)建自定義任務。
    1. 物聯網平臺控制臺對應實例下的監(jiān)控運維 > 任務管理頁面,單擊創(chuàng)建任務
    2. 創(chuàng)建任務頁面,單擊以下參數名稱右側的幫助圖標幫助,根據頁面提示,配置任務和作業(yè),單擊完成
      • 任務配置
        參數說明
        任務名稱輸入符合規(guī)則的任務名稱。可自定義。
        任務類型選擇類型:自定義任務
        任務描述輸入該任務的用途等信息,便于您區(qū)分不同的任務。
        目標設備、產品或分組
        從設備、產品或分組維度選擇可執(zhí)行任務的設備。
        重要 從分組維度選擇設備時,不支持選擇動態(tài)分組。
        下發(fā)給設備的任務執(zhí)行規(guī)則上傳規(guī)則文件。僅支持.json格式文件,文件大小不能超過64 KB。

        您可單擊下載模板,獲取規(guī)則文件模板。內容如下:

        {
            "key":"value"
        }
        • key:標識字段,自定義的String數據。
        • valuekey對應的值,數據格式滿足JSON要求即可。

        您需根據模板格式,自定義規(guī)則內容。使用示例,請參見設備的自定義任務示例

        文件簽名算法支持MD5SHA256

        可選配置,與任務中下發(fā)給設備的文件結合使用。

        任務中下發(fā)給設備的文件上傳自定義任務的文件。

        可選參數,與文件簽名算法結合使用。

        支持.bin.apk.tar.gz.zip.gzip.tar.gz格式文件,文件大小不能超過1,000 MB。

        重要 您需根據實際需求,自定義規(guī)則和設備文件內容。任務規(guī)則和設備文件內容的實現邏輯,需您在設備端完成開發(fā)。
      • 作業(yè)配置
        參數說明
        作業(yè)執(zhí)行推送配置
        • 每分鐘作業(yè)執(zhí)行數量:根據您的業(yè)務需要,設置每分鐘作業(yè)推送數量。
        • 推送消息類型:僅對自定義任務和Pub批量消息推送任務生效。

          可選:

          • QoS0:最多發(fā)送一次。
          • QoS1:最少發(fā)送一次。如果QoS1消息未接收到PUBACK消息,會在設備重連時,重新推送給設備。
        作業(yè)執(zhí)行的超時配置可選配置。不設置表示不會超時。僅對自定義任務生效。

        從設備任務進入IN_PROGRESS狀態(tài),開始計算時間。如果超過了超時時間,任務下作業(yè)仍未執(zhí)行完成,作業(yè)狀態(tài)將被自動設置為TIMED_OUT,作業(yè)停止執(zhí)行。

        作業(yè)開始調度時間可選配置。

        從當前設置操作的時間,開始計算時間。

        設備任務創(chuàng)建成功后,先初始化,直至到達調度時間,才會開始調度執(zhí)行。

  2. 任務創(chuàng)建完成后,物聯網平臺通過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下為任務規(guī)則文件內容。

    表 1. 請求參數說明
    參數類型說明
    idString消息ID號。String類型的數字,取值范圍0~4294967295,且每個消息ID在當前設備中具有唯一性。
    versionString協議版本號,目前協議版本號唯一取值為1.0。
    paramsObject請求業(yè)務參數。
    taskObject任務下的作業(yè)參數。
    taskIdString任務下作業(yè)的ID。為全局唯一標識符。
    statusString任務下作業(yè)的狀態(tài)。
    • SENT:已調度。
    • REMOVED:已刪除。
    • CANCELLED:已取消。
    jobDocumentObject 任務文檔,描述任務執(zhí)行規(guī)則。
    說明 status為REMOVED或CANCELLED時,該字段值為空。
    jobFileObject 創(chuàng)建自定義任務時,上傳的文件信息。
    • signMethod:簽名方法,目前支持Md5Sha256
    • sign:簽名,根據相應的簽名方法生成的簽名參數。
    • fileUrl:任務文件的下載地址,有效期1小時。
    說明 status為REMOVED或CANCELLED時,該字段值為空。
  3. 設備端根據自定義任務邏輯,實現規(guī)則內容。
    如果當前設備處于離線狀態(tài),無法接收任務信息,設備上線后,可通過Topic:/sys/{productKey}/{deviceName}/thing/job/get先獲取可執(zhí)行的任務列表,然后獲取一個可執(zhí)行任務信息,來完成任務。

    獲取任務列表的消息格式如下:

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

    獲取任務信息的消息格式:

    {
        "id": "123",
        "version": "1.0",
        "params": {
            "taskId": "i5Ks***F010101"
        }
    }
    表 2. 請求參數說明
    參數類型說明
    idString消息ID號。String類型的數字,取值范圍0~4294967295,且每個消息ID在當前設備中具有唯一性。
    versionString協議版本號,目前協議版本號唯一取值為1.0。
    paramsObject請求業(yè)務參數。
    taskIdString三種取值方式,可返回不同狀態(tài)的任務信息。
    • 任務下作業(yè)的ID:返回作業(yè)ID對應任務的詳細信息。
    • $next:返回一個可執(zhí)行任務的信息。
    • $list:返回可執(zhí)行的任務列表,默認最多返回10個。

    物聯網平臺收到請求后,通過響應Topic:/sys/{productKey}/{deviceName}/thing/job/get_reply,向設備端返回結果。

    返回任務列表數據格式如下:

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

    返回任務信息數據格式如下:

    {
        "id": "1234",
        "code": 200,
        "data": {
            "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
        }
    }
    表 3. 請求參數說明
    參數類型說明
    idString消息ID號。String類型的數字,取值范圍0~4294967295,且每個消息ID在當前設備中具有唯一性。
    versionString協議版本號,目前協議版本號唯一取值為1.0。
    paramsObject請求業(yè)務參數。
    taskIdString任務下作業(yè)的ID。為全局唯一標識符。
    statusString任務下作業(yè)的狀態(tài)。可取值:
    • SUCCEEDED:成功。
    • FAILED:失敗。
    • IN_PROGRESS:執(zhí)行中。
    • REJECTED:已拒絕。
    statusDetailsObject 用戶自定義的狀態(tài)詳情,內容可自定義。可在物聯網平臺控制臺的設備管理 > 任務 > 任務詳情頁面查看。
    progressInteger任務下作業(yè)執(zhí)行進度的百分數。
  5. 在物聯網平臺對應實例下的監(jiān)控運維 > 任務管理頁面,查看已創(chuàng)建任務及當前狀態(tài)。
    重要 狀態(tài)為已超時的任務,不可再被調度執(zhí)行。

    從任務創(chuàng)建完成開始計時,如果任務下作業(yè)未在7天內全部執(zhí)行完成,任務狀態(tài)顯示為已超時

    您可根據實際場景需要,執(zhí)行以下操作:

    • 在任務列表中,取消執(zhí)行中狀態(tài)的任務。
    • 單擊目標任務對應的查看,在任務詳情頁面,查看任務信息和作業(yè)執(zhí)行統(tǒng)計。
      功能頁簽說明
      任務信息您可以查看任務信息,修改任務描述和作業(yè)配置,下載設備任務文件。
      作業(yè)概覽您可以查看任務下各狀態(tài)的作業(yè)統(tǒng)計。
      • 您可以單擊目標設備的查看,在設備詳情頁面:
        • 單擊任務頁簽,查看該設備下的所有任務列表。
        • 單擊日志服務前往查看,在云端運行日志頁簽的搜索欄,選擇業(yè)務類型云到設備消息,查看設備任務相關日志。
      • 如果作業(yè)未執(zhí)行成功,單擊執(zhí)行詳情,可查看失敗原因。
      • 如果作業(yè)執(zhí)行已超時或失敗,單擊已超時失敗的狀態(tài)按鈕,可查看對應狀態(tài)的作業(yè)列表。

        您可以單擊列表上方的重新執(zhí)行,重新執(zhí)行當前任務下所有已超時和失敗的作業(yè)。

    • 單擊目標任務對應的刪除,然后單擊確認
      警告 刪除設備任務后,與該任務相關的數據被清除,如果有依賴該任務的業(yè)務,可能導致服務不可用或影響用戶的業(yè)務。請謹慎操作。

操作樣例

設備的自定義任務示例