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

藍牙 Mesh 本地定時 SDK

藍牙 Mesh 本地定時 SDK 提供了通過 App 設置Mesh設備本地定時,以及自動對時的功能。

概述

依賴 SDK

概述

物模型SDK

物模型 SDK 提供了 App 端的物模型

藍牙 Mesh SDK

提供藍牙mesh基礎能力

使用說明

獲取藍牙Mesh網絡是否有連接

可以使用下面的方式判斷當前是否已經連接到了Mesh網絡。

boolean isConnected2Mesh = TgMeshManager.getInstance().isConnectedToMesh();

本地定時操作

獲取 MeshTimerTransaction 對象

在添加/刪除/更新某個mesh節點的本地定時前,需要獲取MeshTimerTransaction對象。

// 入參為mesh設備的iotId
String iotId = "***";
MeshTimerTransaction meshTimerTransaction = MeshTimerTransaction.initWithIotID(iotId);

獲取設備的定時列表

  • 定時對象模型MeshTimerModel

    public enum TimerType {
        TIMER_NONE(0),
        TIMER_COUNTDOWN(1), // 倒計時定時
        TIMER_NORMAL(2), // 普通定時
        TIMER_CIRCULATION(3); // 循環定時
    }
    
    public enum TimerEnableType {
        TIMER_ENABLE_NONE(0), // 定時未啟用
        TIMER_ENABLE(1), // 已啟用
        TIMER_IN_FLIGHT(2);
    }
    
    public class MeshTimerModel{
        private String timerID;
        // 開始時間
        // 倒計時: yyyy-MM-dd HH:mm
        // 普通定時: HH:mm
        // 循環定時: HH:mm
        private String time;
        // 循環定時普通定時
        // 格式:"1,2,3,4,5,6,7"    (1表示星期天,2表示星期一)
        private String days;
        // 定時器類型
        private TimerType timerType;
        // 該定時器是否啟用
        private TimerEnableType enableType;
        // 表示當次設置的定時任務的具體動作。控制多個屬性及屬性值,每對屬性之間使用,分割,示例:"powerstate:1,mode:2"
        // 對于循環定時,字符串里包含"|",則"|"前面的是RunTime需執行的action,"|"后面的是SleepTime需執行的action
        private String attributesTargets;
        // 表示本地事件與UTC時間的差值
        // 單位:秒
        // 取值范圍為:-43200到50400
        // 步長:3600
        private int timeZone;
        // 結束時間,周期循環定時的類型用到
        // 示例:HH:mm
        private String endTime;
        // 運行的時長,如打開30分鐘,周期循環定時的類型用到   單位秒
        private int runTime;
        // 睡眠的時長,如打開30分鐘,周期循環定時的類型用到   單位秒
        private int sleepTime;
    }
  • 獲取定時器任務列表

    獲取當前設備列表中的定時任務列表。

    說明

    在更新/刪除/增加本地定時功能前,必須調用該接口。

    // 入參為mesh設備的iotId
    String iotId = "";
    MeshTimerTransaction meshTimerTransaction = MeshTimerTransaction.initWithIotID(iotId);
    
    meshTimerTransaction.getDeviceTimerList(new ITimerActionCallback<List<MeshTimerModel>>() {
            @Override
            public void onSuccess(List<MeshTimerModel> result) {
                // result 為當前設備的本地定時列表
            }
    
            @Override
            public void onFailure(int errorCode, String desc) {
                //
            }
        });
    
                        

定時器操作

SDK提供添加/刪除/更新某個定時器的功能,但調用方必須保證一個操作接口完成后,才可以進行下一次調用。保證一次只操作一個定時器。

操作錯誤碼

public interface ErrorCode {
    // SDK內部沒有獲取到當前設備的定時列表,需要檢查該設備的物模型中是否支持本地定時
    int ERROR_UNSUPPORTED_OPERATIONS = -1;
    // 需先調用 getDeviceTimerList 方法,保證 SDK 內部初始化
    int ERROR_INVOCATION_PROCESS = -2;
    // 本地定時器已滿,不能繼續添加定時器
    int ERROR_TIMING_ALREADY_FULL = -3;
    // MeshTimerModel 中的 timerID 非法,調用發需要保證不會更新 timerID
    int ERROR_INVALID_TIMER_ID = -4;
    // 設置本地定時器失敗。可能Mesh本地網絡未連接
    int ERROR_SEND_FAILED = -5;
    // 設備本地定時器超時。可能原因:
    // 1. 目標設備不在周邊或者斷電
    // 2. 設備固件不支持設置定時器
    // 3. 定時器參數不合法。
    int ERROR_SET_TIMER_TIMEOUT = -6;
    // 需要等待上一個調用操作完成
    int ERROR_EXIT_PENDING_TASK = -7;
}

添加本地定時任務

SDK 提供了 Builder 方法分別創建本地普通定時、循環定時以及倒計時。

對于倒計時定時,時間到達后云端會自動清除該定時器。SDK調用方需要使用getDeviceTimerList來刷新本地定時列表。

String iotId = "";
MeshTimerTransaction meshTimerTransaction = MeshTimerTransaction.initWithIotID(iotId);

// 添加本地普通定時
MeshTimerModel.NormalTimerBuilder builder = new MeshTimerModel.NormalTimerBuilder();
builder.setTime("21:30").setTargets("powerstate:0").setDays("1,2,3,4,5,6,7").setTimeZone(28800);
MeshTimerModel timerModel = builder.build();

meshTimerTransaction.addTimerWithTimerModel(timerModel, new ITimerActionCallback<List<MeshTimerModel>>() {
    @Override
    public void onSuccess(List<MeshTimerModel> result) {
        // result為最新的定時任務列表。業務層必須該對象進行后續的操作
        Log.i(TAG, "On successful to add timer, result: " + JSON.toJSONString(result));
    }

    @Override
    public void onFailure(int errorCode, String desc) {
        Log.e(TAG, "On failed to add timer, errorCode: " + errorCode + ", desc: " + desc);
    }
});

// 添加本地循環定時
MeshTimerModel.CirculationTimerBuilder circulationTimerBuilder = new MeshTimerModel.CirculationTimerBuilder();
MeshTimerModel circulationTimerModel = circulationTimerBuilder.setTime("21:30")
        .setTargets("powerstate:0|powerstate:1")
        .setDays("1,2,3,4,5,6,7")
        .setTimeZone(28800)
        .setEndTime("23:00")
        .setRunTime(30)
        .setSleepTime(30).build();
meshTimerTransaction.addTimerWithTimerModel(circulationTimerModel, new ITimerActionCallback<List<MeshTimerModel>>() {
    @Override
    public void onSuccess(List<MeshTimerModel> result) {
        Log.i(TAG, "On successful to add timer, result: " + JSON.toJSONString(result));
    }

    @Override
    public void onFailure(int errorCode, String desc) {
        Log.e(TAG, "On failed to add timer, errorCode: " + errorCode + ", desc: " + desc);
    }
});

// 添加本地倒計時
MeshTimerModel.CountDownTimerBuilder countDownTimerBuilder = new MeshTimerModel.CountDownTimerBuilder();
// 2023-03-08 22:00 為開始執行時間,假如當前時間是2023-03-08 21:00,倒計時1個小時
MeshTimerModel countDownTimer = countDownTimerBuilder.setTime("2023-3-8 22:00")
        .setTargets("powerstate:0")
        .setTimeZone(28800)
        .build();
meshTimerTransaction.addTimerWithTimerModel(countDownTimer, new ITimerActionCallback<List<MeshTimerModel>>() {
    @Override
    public void onSuccess(List<MeshTimerModel> result) {
        Log.i(TAG, "On successful to add timer, result: " + JSON.toJSONString(result));
    }

    @Override
    public void onFailure(int errorCode, String desc) {
        Log.e(TAG, "On failed to add timer, errorCode: " + errorCode + ", desc: " + desc);
    }
});
            

刪除某個本地定時

// 當前最新的本地定時列表
List<MeshTimerModel> currentTimerModels;
meshTimerTransaction.deleteTimerWithTimerModel(currentTimerModels.get(0), new ITimerActionCallback<List<MeshTimerModel>>() {
    @Override
    public void onSuccess(List<MeshTimerModel> result) {
        Log.i(TAG, "On successful to delete timer, result: " + JSON.toJSONString(result));
    }

    @Override
    public void onFailure(int errorCode, String desc) {
        Log.e(TAG, "On failed to delete timer, errorCode: " + errorCode + ", desc: " + desc);
    }
});

更新某個本地定時

// 當前最新的本地定時列表
List<MeshTimerModel> currentTimerModels;

MeshTimerModel timerModel1 = currentTimerModels.get(0);
// disable該定時器
timerModel1.setEnableType(TimerEnableType.TIMER_ENABLE_NONE);

meshTimerTransaction.editTimerWithTimerModel(timerModel1, new ITimerActionCallback<List<MeshTimerModel>>() {
    @Override
    public void onSuccess(List<MeshTimerModel> result) {
        Log.i(TAG, "On successful to edit timer, result: " + JSON.toJSONString(result));
    }

    @Override
    public void onFailure(int errorCode, String desc) {
        Log.e(TAG, "On failed to edit timer, errorCode: " + errorCode + ", desc: " + desc);
    }
});