面對 IoT 裝置線上營運和遠端管理的訴求,IoT企業物聯網平台釋出了任務管理功能,可按産品次元、分組、或根據業務訴求批量選取裝置,發起裝置重新開機、配置參數變更、資源包更新、固件更新等業務定義任務。
任務管理的系統Topic和業務流程設計如下圖:

任務管理實戰
我們以批量裝置遠端更新運作參數場景為例,講解任務管理的開發過程。
我們業務中有10000多台洗衣機,7836台處于線上狀态,其餘離線或未激活。如下圖:
1.裝置端開發
通過閱讀任務管理文檔,我們知道線上裝置需要訂閱任務Topic,才能實時擷取到任務通知。
對應Topic和Payload如下:
/sys/{productKey}/{deviceName}/thing/job/notify
{
"id":"7542940",
"version":"1.0",
"params":{
"task":{
"taskId":"i5Ks6F010101",
"status":"SENT",
"jobDocument":{
"operatingMode":23
},
"jobFile":{
"signMethod":"Md5",
"sign":"wssxff56dhdsd",
"fileUrl":"https://iotx-oss.aliyuncs.com/ota.zip"
}
}
}
}
離線裝置上線後,需要主動拉取任務Topic,才能擷取到曆史任務資訊。
請求任務對應Topic和Payload如下:
/sys/{productKey}/{deviceName}/thing/job/get
{
"id":"127542",
"version":"1.0.0",
"params":{
"taskId":"$next"
}
}
```
IoT物聯網平台響應任務資訊的Topic和Payload如下:
> /sys/{productKey}/{deviceName}/thing/job/get_reply
```json
{
"code":200,
"data":{
"task":{
"jobDocument":{
"operatingMode":23
},
"taskId":"b2ceb5ddsd69",
"status":"SENT"
},
"taskId":"$next"
},
"id":"1610526478300",
"method":"thing.job.get",
"version":"1.0"
}
裝置接收到任務資訊後,需要根據業務情況主動上報裝置任務執行進度和結果資訊,對應Topic和Payload如下:
/sys/{productKey}/{deviceName}/thing/job/update
{
"id":"175423",
"version":"1.0",
"params":{
"taskId":"i5Kssgc010101",
"status":"IN_PROGRESS",
"statusDetails":{
"endTime":1610629200000
},
"progress":64
}
}
2.IoT控制台建立任務
在企業物聯網執行個體控制台,選擇裝置管理的任務,選擇指定産品,上傳任務模闆,模闆中攜帶了運作參數 "operatingMode":23。
在作業配置選擇每分鐘執行的裝置數量和任務逾時時間。
點選完成,我們看到建立的任務處于執行中,如下圖:
3.任務執行
進入任務詳情,在作業概覽,我們可以看到處于執行中,成功,失敗,已逾時等不同狀态下的裝置情況。
同理,我們可以借助任務管理來批量更新裝置端資源包,批量重新開機裝置,甚至固件更新功能。