當批量設置設備屬性和服務調用任務無法滿足您的業(yè)務需求時,您可以添加自定義任務,通過設置自定義規(guī)則,實現多場景的設備任務。本文介紹該任務的創(chuàng)建方法、運行中Topic及其數據格式的說明,查看狀態(tài)的具體操作。
前提條件
已在設備端完成任務部署和管理功能開發(fā)。具體操作,請參見Link SDK的設備任務。任務管理流程
- 創(chuàng)建自定義任務。
- 任務創(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. 請求參數說明 參數 類型 說明 id String 消息ID號。String類型的數字,取值范圍0~4294967295,且每個消息ID在當前設備中具有唯一性。 version String 協議版本號,目前協議版本號唯一取值為1.0。 params Object 請求業(yè)務參數。 task Object 任務下的作業(yè)參數。 taskId String 任務下作業(yè)的ID。為全局唯一標識符。 status String 任務下作業(yè)的狀態(tài)。 - SENT:已調度。
- REMOVED:已刪除。
- CANCELLED:已取消。
jobDocument Object 任務文檔,描述任務執(zhí)行規(guī)則。 說明 status為REMOVED或CANCELLED時,該字段值為空。jobFile Object 創(chuàng)建自定義任務時,上傳的文件信息。 - signMethod:簽名方法,目前支持
Md5
和Sha256
。 - sign:簽名,根據相應的簽名方法生成的簽名參數。
- fileUrl:任務文件的下載地址,有效期1小時。
說明 status為REMOVED或CANCELLED時,該字段值為空。 - 設備端根據自定義任務邏輯,實現規(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. 請求參數說明 參數 類型 說明 id String 消息ID號。String類型的數字,取值范圍0~4294967295,且每個消息ID在當前設備中具有唯一性。 version String 協議版本號,目前協議版本號唯一取值為1.0。 params Object 請求業(yè)務參數。 taskId String 三種取值方式,可返回不同狀態(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" } } } }
- 任務進行過程中,設備端通過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. 請求參數說明 參數 類型 說明 id String 消息ID號。String類型的數字,取值范圍0~4294967295,且每個消息ID在當前設備中具有唯一性。 version String 協議版本號,目前協議版本號唯一取值為1.0。 params Object 請求業(yè)務參數。 taskId String 任務下作業(yè)的ID。為全局唯一標識符。 status String 任務下作業(yè)的狀態(tài)。可取值: - SUCCEEDED:成功。
- FAILED:失敗。
- IN_PROGRESS:執(zhí)行中。
- REJECTED:已拒絕。
statusDetails Object 用戶自定義的狀態(tài)詳情,內容可自定義。可在物聯網平臺控制臺的 頁面查看。progress Integer 任務下作業(yè)執(zhí)行進度的百分數。 - 在物聯網平臺對應實例下的 頁面,查看已創(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è)務。請謹慎操作。