物聯網平台提供裝置任務的配置和管理服務。裝置的自訂任務需要您根據實際需求,自行定義任務規則和裝置端的實現邏輯。本文提供範例程式碼,通過手動輸入命令,類比裝置上報自訂任務狀態,為您介紹自訂任務運行過程。
本文以華東2(上海)地區企業版執行個體下裝置為例,類比裝置的自訂任務流程。
準備工作
您需先完成以下操作:
建立自訂任務
登入物聯網平台控制台。
在執行個體概覽頁面,單擊目標執行個體名稱或ID。
在左側導覽列,選擇 。
在任務頁面,單擊建立任務。
在建立工作精靈頁面,完成以下配置,單擊下一步。
參數
說明
任務名稱
輸入任務示範。
任務類型
選擇自訂任務。
目標裝置,產品,或分組
選擇產品的任務管理示範。
下發給裝置的任務執行規則
上傳規則檔案:任務執行規則.json。
設定每分鐘作業執行數量 (50-1000)為50,逾時時間(分鐘)為5。
單擊完成,返回工作清單,單擊該任務的查看,然後單擊作業概覽頁簽,查看任務狀態。
如下圖所示,任務已完成初始化,開始調度。
運行自訂任務
範例程式碼使用的開發環境如下:
作業系統:Windows 10
JDK版本:JDK8
整合式開發環境:IntelliJ IDEA社區版
範例程式碼支援的命令參見下表。
命令、欄位和欄位後的參數值之間,必須使用單個空格分隔,但參數值中不能包含空格。
命令 | 支援欄位 | 使用說明 |
get |
|
|
|
taskId有三種取值方式:
| |
update |
|
說明
|
|
|
有關自訂任務執行流程及其Topic說明,請參見裝置任務概述。
本文使用3個裝置,分別類比裝置任務中可能出現的最終狀態:已逾時、失敗和成功。
訪問並下載alibabacloud-iot-java-demo,解壓檔案。然後開啟IntelliJ IDEA,匯入Demo包中的樣本工程lp。
在src/main/java/com.aliyun.iotx.lp.demo/job目錄下的CustomJobSample.java檔案中,參照下表,設定裝置資訊。
參數
樣本
說明
productKey
a1f3***
您添加裝置後,儲存的裝置認證資訊。本樣本添加裝置Device1的資訊。
您也可在控制台中裝置Device1的裝置詳情頁面查看。
deviceName
Device1
deviceSecret
b5c96d***
region
cn-shanghai
您的服務所在地區對應的Region ID。請在物聯網平台控制台左上方,查看您服務所在的地區。Region ID的取值,請參見地區和可用性區域。
config.channelHost
iot-******.mqtt.iothub.aliyuncs.com
MQTT接入地址。具體說明,請參見查看執行個體終端節點。
運行CustomJobSample程式檔案。
裝置接入物聯網平台,並訂閱裝置任務相關Topic。
輸入以下命令,擷取裝置的工作清單資訊。
get -t $list
輸入以下命令,擷取指定的任務詳情。
get -t 1a9300c10d7b41248cb657ca7191048d
開始執行任務並上報進度。輸入以下命令,設定進度為26%。
update -t 1a9300c10d7b41248cb657ca7191048d -s IN_PROGRESS -p 26
您可返回物聯網平台控制台的
頁簽,查看任務狀態和進度。說明如果更新任務狀態時,status取值不合法,任務狀態將更新失敗。
不再繼續上報進度,超出任務設定的逾時時間後,任務最終狀態更新為已逾時。
參考步驟2,修改裝置資訊為裝置Devie2的資訊,然後按照步驟3~步驟5擷取裝置任務,最後輸入以下命令,將任務狀態更新為失敗,並攜帶失敗的提示資訊。
update -t d3858707af6548cabe4ec2d6878e8639 -s FAILED -p 10 -d {"errorCode":"500","message":"SystemException"}
返回物聯網平台控制台的
頁簽,可查看到任務狀態為失敗。單擊執行詳情,可查看具體的錯誤提示資訊。
參考步驟2,修改裝置資訊為裝置Devie3的資訊,然後按照步驟3~步驟6擷取並執行任務,最後輸入以下命令,更新任務狀態為成功。
update -t 3b888b9f892b4d3ead6e2e34f0ccd3c2 -s SUCCEEDED -p 100
返回物聯網平台控制台的
頁簽,可查看到任務狀態為成功。