更新时间:2024-03-20 03:10:02下载pdf
本文介绍如何进行 Mesh 管理。
商用照明 SDK 接入文档中所涉及到的 Mesh 均为蓝牙 Mesh,目前 SDK 不支持除标准蓝牙 Mesh 以外的其他私有 Mesh 类型。
一个 Mesh 下的蓝牙 Mesh 协议的设备数建议控制在 300 以内,非蓝牙 Mesh 协议的设备不受数量限制。
单 Mesh 网络模式
多 Mesh 网络模式
不支持在项目根节点下进行设备配网操作,请在目标区域节点下进行配网。配网过程中传入 API 的 homeId
参数需为当前区域的 gid
。
商用照明 SDK 2.8.1 版本后支持创建单 Mesh 和多 Mesh 两种网络模式的项目,设备配网、群组和场景等操作需在区域节点下进行。
获取区域已绑定的 Mesh 信息。
示例代码
ThingLightingArea *area = [ThingLightingArea areaWithAreaId:areaId projectId:projectId];
long long meshId = area.areaModel.meshId;
一个项目下存在且仅存在一个自动创建的 Mesh,所有区域节点均绑定在当前 Mesh 下。
初始化蓝牙 Mesh 网络,并注册来自云端状态变化的监听。在切换、初始化蓝牙 Mesh 网络时,调用该接口。
接口说明
+ (ThingSmartSIGMeshManager * _Nullable)initSIGMeshManager:(ThingSmartBleMeshModel *)meshModel
ttl:(NSInteger)ttl
nodeIds:(NSArray<NSData *> * _Nullable)nodeIds;
示例代码
ThingSmartBleMeshModel *meshModel = [[ThingLightingCacheService sharedInstance] getMeshModelWithId:meshId];
ThingSmartSIGMeshManager *manager = [ThingSmartBleMesh initSIGMeshManager:meshModel ttl:0 nodeIds:@[]];
ThingSmartSIGMeshManager
提供开始连接、断开连接、开启扫描和停止扫描能力。
示例代码
开启扫描并连接。
ThingSmartBleMeshModel *meshModel = [[ThingLightingCacheService sharedInstance] getMeshModelWithId:meshId];
ThingSmartSIGMeshManager *manager = [ThingSmartBleMesh initSIGMeshManager:meshModel ttl:0 nodeIds:@[]];
[manager startSearch];
断开连接,停止扫描。
ThingSmartBleMeshModel *meshModel = [[ThingLightingCacheService sharedInstance] getMeshModelWithId:meshId];
ThingSmartSIGMeshManager *manager = [ThingSmartBleMesh initSIGMeshManager:meshModel ttl:0 nodeIds:@[]];
[manager offlineSIGMeshNetwork];
[manager stopSerachDevice];
后台一直扫描会消耗资源,可以通过开启扫描和停止扫描来控制后台的扫描。
startSearch
开启连接后,会在后台不断地扫描周围可连接设备,并且自动连接。startSearch
和 stopSerachDevice
是没有效果的。一个项目下可能存在不定数量的 Mesh,一个 Mesh 可能同时被不定数量的区域绑定。
创建一个 Mesh,可以指定 Mesh 的名称。
接口说明
- (void)createMeshWithName:(NSString *)name
success:(nullable ThingSuccessID)success
failure:(nullable void(^)(NSError *error))failure;
示例代码
ThingLightingProject *project = [ThingLightingProject projectWithProjectId:projectId];
[project createMeshWithName:self.meshNameTextField.text success:^(id result) {
} failure:^(NSError * _Nonnull error) {
}];
确保在 Mesh 下没有蓝牙 Mesh 设备,且当前 Mesh 没有被任何区域绑定,才能执行该删除操作。
接口说明
- (void)deleteMeshWithMeshId:(NSString *)meshId
success:(nullable ThingSuccessID)success
failure:(nullable void(^)(NSError *error))failure;
示例代码
[currentProject deleteMeshWithMeshId:self.meshModel.meshId success:^(id result) {
} failure:^(NSError * _Nonnull error) {
}];
将未绑定过 Mesh 的区域绑定到一个 Mesh 下,支持同时绑定多个区域 ID。
接口说明
- (void)bindMeshAndAreaWithMeshId:(NSString *)meshId
areaId:(long long)areaId
success:(nullable ThingSuccessID)success
failure:(nullable void(^)(NSError *error))failure
示例代码
[currentProject bindMeshAndAreaWithMeshId:self.meshModel.meshId
areaId:areaModel.areaId
success:^(id result) {
} failure:^(NSError * _Nonnull error) {
}];
将区域与 Mesh 进行解绑,支持同时解绑多个区域。
接口说明
- (void)unbindMeshAndAreaWithMeshId:(NSString *)meshId
areaId:(long long)areaId
success:(nullable ThingSuccessID)success
failure:(nullable void(^)(NSError *error))failure;
示例代码
[currentProject unbindMeshAndAreaWithMeshId:self.meshModel.meshId
areaId:areaModel.areaId
success:^(id result) {
} failure:^(NSError * _Nonnull error) {
}];
初始化指定 Mesh。
接口说明
+ (ThingSmartSIGMeshManager * _Nullable)initSIGMeshManager:(ThingSmartBleMeshModel *)meshModel
ttl:(NSInteger)ttl
nodeIds:(NSArray<NSData *> * _Nullable)nodeIds;
示例代码
ThingSmartBleMeshModel *meshModel = [[ThingLightingCacheService sharedInstance] getMeshModelWithId:meshId];
ThingSmartSIGMeshManager *manager = [ThingSmartBleMesh initSIGMeshManager:meshModel ttl:0 nodeIds:@[]];
支持同时连接不多于 3 个 Mesh。
接口说明
- (void)startSearch;
示例代码
ThingSmartBleMeshModel *meshModel = [[ThingLightingCacheService sharedInstance] getMeshModelWithId:meshId];
ThingSmartSIGMeshManager *manager = [ThingSmartBleMesh initSIGMeshManager:meshModel ttl:0 nodeIds:@[]];
[manager startSearch];
将 Mesh 断开连接。
接口说明
- (void)offlineSIGMeshNetwork;
示例代码
ThingSmartSIGMeshManager *manager = [[impl getCurrentProject] currentSigMeshManager];
[manager offlineSIGMeshNetwork];
根据 meshId
,获取已关联此 Mesh 的所有区域的列表。
接口说明
- (void)fetchMeshBindAreasWithMeshId:(NSString *)meshId
includeStatic:(BOOL)includeStatic
success:(nullable void(^)(NSArray<ThingLightingAreaModel *> *areaList))success
failure:(nullable void(^)(NSError *error))failure
示例代码
[currentProject fetchMeshBindAreasWithMeshId:self.meshModel.meshId
includeStatic:NO
success:^(NSArray<ThingLightingAreaModel *> * _Nonnull areaList) {
} failure:^(NSError * _Nonnull error) {
}];
鉴于手机蓝牙性能等原因,目前一台手机支持同时连入 Mesh 的数量为 3 个,可以通过该方法判断一个 Mesh 是否已经连接。
接口说明
@property (nonatomic, assign, readonly) BOOL isLogin;
示例代码
ThingSmartBleMeshModel *meshModel = [[ThingLightingCacheService sharedInstance] getMeshModelWithId:meshId];
ThingSmartSIGMeshManager *manager = [ThingSmartBleMesh initSIGMeshManager:meshModel ttl:0 nodeIds:@[]];
BOOL isLogin = [manager isLogin];
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈