蓝牙 Mesh 本地定时 SDK 提供了通过 App 设置Mesh设备本地定时,以及自动对时的功能。
概述
依赖 SDK | 概述 |
物模型 SDK 提供了 App 端的物模型 | |
蓝牙 Mesh SDK | 提供蓝牙mesh基础能力 |
使用说明
获取蓝牙Mesh网络是否有连接
可以使用下面的方式判断当前是否已经连接到了Mesh网络。
BOOL isConnect = [ALBBluetoothMesh sharedInstance].isConnect;
本地定时操作
获取 MeshTimerTransaction 对象
在添加/删除/更新某个mesh节点的本地定时前,需要获取 MeshTimerTransaction
对象。
// 入参为mesh设备的iotId
[[IMSMeshTimerTransaction alloc] initWithIotID:@"xxx"];
定时对象模型
IMSMeshTimerModel
#import <TBJSONModel/TBJSONModel.h> NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSUInteger, IMSEnableType) { IMSDisable = 0, /// 未启用 IMSEnable, /// 启用 IMSInFlight /// 指令下发 }; typedef NS_ENUM(NSUInteger, IMSMeshTimerType) { IMSMeshTimerNone = 0, IMSMeshTimerCountDown, /// 倒计时 IMSMeshTimerNormal, /// 普通定时 IMSMeshTimerCirculation /// 循环定时 }; @interface IMSMeshTimerModel : TBJSONModel /* 定时器ID */ @property (nonatomic, assign, readonly) NSInteger timerID; /* 定时器类型 */ @property (nonatomic, assign, readonly) IMSMeshTimerType timerType; /* 是否启用 enableType */ @property (nonatomic, assign, readonly) IMSEnableType enableType; /* 时间 倒计时 举例:如当前时间是2022-05-25 17:00,倒计时1个小时 入参:2022-05-25 18:00 普通定时 开始时间,举例: 每天12:40 入参:12:40 (week入参@"1,2,3,4,5,6,7") 循环定时 开始时间,举例: 每天12:00 入参:12:00 (week入参@"1,2,3,4,5,6,7") */ @property (nonatomic, strong) NSString *dateString; /* 循环定时普通定时必填 格式:@"1,2,3,4,5,6,7" (1表示星期天,2表示星期一) */ @property (nonatomic, strong, nullable) NSString *week; /* 控制多个属性及属性值,每对属性之间使用,分割 targets 示例:@"PowerSwitch:1,mode:2" */ @property (nonatomic, strong) NSString *attributes; /* 时区,东八区 TimeZone 28800 表示本地事件与UTC时间的差值 单位:秒 取值范围为:-43200到50400 步长:3600 */ @property (nonatomic, assign) NSInteger timeZone; /* 结束时间,周期循环定时的类型用到 endTime 示例:HH:mm */ @property (nonatomic, strong) NSString *endTime; /* 运行的时长,如打开30分钟,周期循环定时的类型用到 单位分 runTime */ @property (nonatomic, assign) NSInteger runTime; /* 睡眠的时长,如打开30分钟,周期循环定时的类型用到 单位分 sleepTime */ @property (nonatomic, assign) NSInteger sleepTime; /** 倒计时定时器 必填参数:dateString,attributes,timeZone */ - (instancetype)initWithCountDownTimer; /** 普通定时器 必填参数:dateString,week,attributes,timeZone */ - (instancetype)initWithNormalTimer; /** 循环定时器 必填参数:dateString,week,attributes,timeZone,endTime,runTime,sleepTime */ - (instancetype)initWithCirculationTimer; @end NS_ASSUME_NONNULL_END
获取定时器任务列表
获取当前设备列表中的定时任务列表。在更新/删除/增加本地定时功能前,必须调用该接口。
// 入参为mesh设备的iotId IMSMeshTimerTransaction *meshTimerTransaction = [[IMSMeshTimerTransaction alloc] initWithIotID:@"xxx"]; [meshTimerTransaction getDeviceTimerListhandler:^(NSArray<IMSMeshTimerModel *> * _Nullable timerList, NSError * _Nullable error) { if (error) { } else { // timerList 已经存在的定时器列表 } }];
定时器操作
SDK提供添加/删除/更新某个定时器的功能。修改完成以后调用保存接口进行保存,保存函数成功后会返回最新的定时器列表。
添加本地定时任务
添加定时器需要新建一个IMSMeshTimerModel
,使用对应的构造函数。
@interface IMSMeshTimerModel : TBJSONModel
/**
倒计时定时器
必填参数:dateString,attributes,timeZone
*/
- (instancetype)initWithCountDownTimer;
/**
普通定时器
必填参数:dateString,week,attributes,timeZone
*/
- (instancetype)initWithNormalTimer;
/**
循环定时器
必填参数:dateString,week,attributes,timeZone,endTime,runTime,sleepTime
*/
- (instancetype)initWithCirculationTimer;
@end
// 添加定时器
@interface IMSMeshTimerTransaction : NSObject
/**
新增一个定时任务
@param timerModel 定时任务对象
*/
- (NSError *)addTimerWithTimerModel:(IMSMeshTimerModel *)timerModel;
/**
操作完成以后调用save方法进行保存
*/
- (void)save:(IMSMeshTimerListHandler)handler;
@end
删除某个本地定时
删除定时器,需要使用 getDeviceTimerListhandler
函数返回的model。
// 添加定时器
@interface IMSMeshTimerTransaction : NSObject
/**
新增一个定时任务
@param timerModel 定时任务对象
*/
- (NSError *)deleteTimerWithTimerModel:(IMSMeshTimerModel *)timerModel;
/**
操作完成以后调用save方法进行保存
*/
- (void)save:(IMSMeshTimerListHandler)handler;
@end
编辑某个本地定时
编辑定时器,需要使用getDeviceTimerListhandler
函数返回的model。
// 添加定时器
@interface IMSMeshTimerTransaction : NSObject
/**
新增一个定时任务
@param timerModel 定时任务对象
*/
- (NSError *)editTimerWithTimerModel:(IMSMeshTimerModel *)timerModel;
/**
操作完成以后调用save方法进行保存
*/
- (void)save:(IMSMeshTimerListHandler)handler;
@end
文档内容是否对您有帮助?