日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

本地倒計時功能開發實踐

本文提供了一個插座本地倒計時功能的開發案例,開發者可以參考本文,實現任意設備的本地倒計時功能。

背景信息

“本地倒計時”是指,由App頁面向設備端下發“開始倒計時”的任務后,設備端開始根據本地時鐘,執行倒計時任務。

要實現本地倒計時的效果,設備端和APP端需要按照本文推薦的方式進行實現。

  • 設備端:按照平臺標準數據格式,實現倒計時任務的增刪改。

  • APP端:在云智能App中,或平臺給自定義App提供的設備界面中,如“燈”“開關”,可以直接使用倒計時功能。

倒計時

與單路倒計時不同的是,多路倒計時可以同時對多個設備上的布爾值設定本地倒計時任務,如多路插座。

多路倒計時

操作步驟

  1. 在控制臺人機交互 > 自動化和定時處,勾選本地定時功能,并在功能參數中設置本地定時的最大條數(與設備端的存儲、性能有關,最大為13個)。

    本地倒計時

    說明

    平臺會在功能定義中自動插入一個設備端上定時的標準功能(DeviceTimer),并支持多個定時任務。

    基于設備端SDK開發時,需確認Products/example/smart_outlet/smart_outlet.mk文件中以下宏開關的打開與關閉狀態。

    GLOBAL_CFLAGS += -DENABLE_COUNTDOWN_LIST     //老版本本地倒計時的宏,默認為關閉狀態

    數據結構說明如下。

    • 功能名稱:倒計時列表

    • 標識符:CountDownList

    • 類型:JSON

    CountDownList: {
    Target: "PowerSwitch"(string,當次設置操作指定的布爾值的identifier),
    Contents: "PowerSwitch-1-1-123-1535644800000,LightSwitch-0-1-456-1535644800000"(string,該設備的所有倒計時任務字符串,具體格式說明見下方)
    XXX1:0(bool,該產品已有的布爾類型標準屬性),
    XXX2:0(bool,該產品已有的布爾類型標準屬性)
    }

    CountDownList是可選的標準屬性,其中TargetContentsCountDownList的必選屬性二者都是string類型(最大長度為2048字節)。

    XXX1XXX2為當前產品已有的標準布爾屬性,可以由開發者隨意增刪,默認值為0。

    說明

    功能定義里如果含有CountDownList,則CountDownList里除了TargetContents外,還需要含有其他的布爾屬性,否則運行會報錯。

    參數名稱

    類型

    屬性名

    是否必選

    長度

    解釋

    Target

    string

    操作對象

    2048

    當次操作的布爾值類型的標準屬性,用于表示倒計時的地點位置。

    Contents

    string

    倒計時命令

    2048

    當同時設置多個布爾值屬性的倒計時任務,且當前沒有數組類型的數據,需采用該參數來存放設備的所有倒計時任務。

  2. 功能設計。

    • 設計倒計時功能。

      • 如果當前產品的功能定義里有CountDownList屬性,那么此時走新的倒計時列表邏輯,在當前組件展示倒計時列表相關界面。

      • 如果當前產品的功能定義里沒有CountDownList屬性,但是有CountDown屬性,那么則走以前的倒計時插件邏輯。

    • 撤銷某個倒計時任務。

      • App刪除Contents字段里對應identifier的任務,同時設置Target為這個identifier,上報云端,下發給設備端。

      • 設備端收到新的CountDownList屬性,發現Target指定了一個identifier,但是Contents里卻沒有這個identifier,那么刪除正在執行的identifier對應的倒計時任務,不影響其余的倒計時任務。

    場景舉例如下。

    說明

    整個插件和設備端上報云端的過程中,CountDownList里的XXX1XXX2等布爾屬性可以設置為任意符合布爾屬性的值。

    1. 單擊倒計時按鈕。

    2. 檢查TSL,發現CountDownList里還有額外的XXX1XXX2屬性。

    3. 倒計時列表彈層展示XXX1XXX2的中文名稱列表。

    4. 選擇其中一個屬性,例如PowerSwitch,展示設置時間和動作界面,設定好時間(1000s)和動作(打開)。

    5. 設置Target: "PowerSwitch"Contents: "PowerSwitch-1-1-1000-1535644800000",下發給云端。

    6. 設備端收到CountDown后,解析Contents和Target內容,設置實際的定時任務。

    7. 設置了第二個屬性XXX2。Contents為:PowerSwitch-1-1-1000-1535644800000,XXX2-0-1-2000-1535644800000,Target為:XXX2。

    1000s到了之后,第一個PowerSwitch倒計時任務結束,設備端刪除Contents里PowerSwitch這一條任務,同時設置Target為PowerSwitch,將整個CnountDownList屬性上報到云端,插件側查詢CountDown屬性,發現Contents里沒有Target指定的布爾屬性,代表PowerSwitch倒計時任務已執行,進而提示PowerSwitch倒計時任務執行完畢。