全部產品
Search
文件中心

IoT Platform:裝置的自訂任務樣本

更新時間:Jun 30, 2024

物聯網平台提供裝置任務的配置和管理服務。裝置的自訂任務需要您根據實際需求,自行定義任務規則和裝置端的實現邏輯。本文提供範例程式碼,通過手動輸入命令,類比裝置上報自訂任務狀態,為您介紹自訂任務運行過程。

本文以華東2(上海)地區企業版執行個體下裝置為例,類比裝置的自訂任務流程。

準備工作

您需先完成以下操作:

  1. 建立產品名稱任務管理示範產品的產品。配置參數時,其他參數使用預設設定。具體操作,請參見建立產品

  2. 為產品添加3個裝置,分別命名為Device1Device2Device3。具體操作,請參見大量建立裝置

    裝置添加成功後,分別擷取3個裝置的裝置認證資訊(ProductKey、DeviceName和DeviceSecret)。

  3. 自訂JSON格式的任務規則檔案。本文規則檔案命名為任務執行規則.json,內容如下。

    {
        "fileName":"jobTest",
        "fileVersion":"1",
        "fileDescription":"任務管理示範使用"
    }

建立自訂任務

  1. 登入物聯網平台控制台

  2. 執行個體概覽頁面,單擊目標執行個體名稱或ID。

  3. 在左側導覽列,選擇監控營運 > 任務管理

  4. 任務頁面,單擊建立任務

  5. 在建立工作精靈頁面,完成以下配置,單擊下一步

    建立任務

    參數

    說明

    任務名稱

    輸入任務示範

    任務類型

    選擇自訂任務

    目標裝置,產品,或分組

    選擇產品任務管理示範

    下發給裝置的任務執行規則

    上傳規則檔案:任務執行規則.json

  6. 設定每分鐘作業執行數量 (50-1000)為50,逾時時間(分鐘)為5。

  7. 單擊完成,返回工作清單,單擊該任務的查看,然後單擊作業概覽頁簽,查看任務狀態。

    如下圖所示,任務已完成初始化,開始調度。任務詳情

運行自訂任務

範例程式碼使用的開發環境如下:

範例程式碼支援的命令參見下表。

重要

命令、欄位和欄位後的參數值之間,必須使用單個空格分隔,但參數值中不能包含空格。

命令

支援欄位

使用說明

get

-h

get -h:擷取get命令的協助資訊。

-t

get -t taskId:擷取任務詳情。

taskId有三種取值方式:

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

  • $next:擷取一個可執行任務的資訊。

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

update

  • -t

  • -s

  • -p

  • -d

update -t taskId -s status -p progress -d detail:更新任務下作業的狀態。

  • taskId:任務下作業的ID。

  • status:任務下作業的狀態。

    可取值如下:

    • SUCCEEDED:成功

    • FAILED:失敗

    • IN_PROGRESS:執行中

    • REJECTED:已拒絕

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

  • detail:裝置上報的詳細資料。內容為JSON格式,且不能包含空格。

說明

-d表示自訂任務的執行詳情,為可選欄位。您可在物聯網平台控制台的裝置管理 > 任務 > 任務詳情頁面查看。

-h

update -h:擷取update命令的協助資訊。

有關自訂任務執行流程及其Topic說明,請參見裝置任務概述

本文使用3個裝置,分別類比裝置任務中可能出現的最終狀態:已逾時失敗成功

  1. 訪問並下載alibabacloud-iot-java-demo,解壓檔案。然後開啟IntelliJ IDEA,匯入Demo包中的樣本工程lp

  2. 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接入地址。具體說明,請參見查看執行個體終端節點

  3. 運行CustomJobSample程式檔案。

    裝置接入物聯網平台,並訂閱裝置任務相關Topic。裝置線上

  4. 輸入以下命令,擷取裝置的工作清單資訊。

    get -t $list

    擷取訊息

  5. 輸入以下命令,擷取指定的任務詳情。

    get -t 1a9300c10d7b41248cb657ca7191048d任務詳情

  6. 開始執行任務並上報進度。輸入以下命令,設定進度為26%。

    update -t 1a9300c10d7b41248cb657ca7191048d -s IN_PROGRESS -p 26任務進度

    您可返回物聯網平台控制台的任務詳情 > 作業概覽頁簽,查看任務狀態和進度。狀態更新

    說明

    如果更新任務狀態時,status取值不合法,任務狀態將更新失敗。

    不再繼續上報進度,超出任務設定的逾時時間後,任務最終狀態更新為已逾時

    逾時

  7. 參考步驟2,修改裝置資訊為裝置Devie2的資訊,然後按照步驟3~步驟5擷取裝置任務,最後輸入以下命令,將任務狀態更新為失敗,並攜帶失敗的提示資訊。

    update -t d3858707af6548cabe4ec2d6878e8639 -s FAILED -p 10 -d {"errorCode":"500","message":"SystemException"}最終態失敗

    返回物聯網平台控制台的任務詳情 > 作業概覽頁簽,可查看到任務狀態為失敗失敗

    單擊執行詳情,可查看具體的錯誤提示資訊。

    執行詳情

  8. 參考步驟2,修改裝置資訊為裝置Devie3的資訊,然後按照步驟3~步驟6擷取並執行任務,最後輸入以下命令,更新任務狀態為成功

    update -t 3b888b9f892b4d3ead6e2e34f0ccd3c2 -s SUCCEEDED -p 100成功

    返回物聯網平台控制台的任務詳情 > 作業概覽頁簽,可查看到任務狀態為成功任務成功