SDK提供蓝牙Mesh组控业务的App端解决方案,提供了蓝牙Mesh添加分组、删除分组以及组控的能力。
概述
单控使用物模型 SDK即可。
依赖 SDK | 概述 |
物模型SDK提供了App端的物模型。 |
使用说明
连接到Mesh网络
在单控或组控设备前,需要保证当前APP连接到Mesh网络。
// 使用默认的 ConnectionParams 连接到Mesh网络
ConnectionParams connectionParams = new ConnectionParams();
TgMeshManager.getInstance().connect(connectionParams);
获取Mesh网络是否连接
可以使用下面的方式判断当前是否已经连接到了Mesh网络。
boolean isConnected2Mesh = TgMeshManager.getInstance().isConnectedToMesh();
给设备配置组播地址
组控设备前,需要先给这些设备单独配置组播地址以加到一个组中。其中对单个设备配置使用下面的方法调用,方法入参需要依赖控制分组相关API,详见API创建设备组、预先获取mesh设备组播地址配置、获取设备组的设备列表、批量删除设备组、删除设备组。
String deviceKey = ""; // 待添加组播地址设备的deviceKey
int primaryAddress = 0; // 主节点的单播地址
int elementAddress = 0; // 待配置节点的单播地址
int subscriptionAddress = 59097; //需要订阅的组播地址
int modelIdentifier = 0; // SIG Model ID or Vendor Model ID
TgMeshManager.getInstance().configModelSubscriptionAdd(deviceKey, primaryAddress, elementAddress, subscriptionAddress, modelIdentifier, new IActionListener<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onFailure(int errorCode, String desc) {
}
}
);
参数说明
名称 | 类型 | 必填 | 默认值 | 描述 |
deviceKey | String | 是 | 待配置节点的deviceKey。不同设备的deviceKey不一样。 | |
primaryAddress | Integer | 是 | 和elementAddress一致。 | |
elementAddress | Integer | 是 | 待配置节点的单播地址。 | |
subscriptionAddress | Integer | 是 | 需要订阅的组播地址。 | |
modelIdentifier | Integer | 是 | SIG Model ID or Vendor Model ID,用于标识节点内的模型。 | |
deviceControlListener | IActionListener<Boolean> | 否 | 配置结果回调。 |
删除设备配置的组播地址
删除一个组或者从组里删除某些设备时候,需要对这些设备执行删除组播地址的操作。其中对单个设备删除组播配置使用下面的方法调用,方法入参需要依赖控制分组相关API,详见API创建设备组、预先获取mesh设备组播地址配置、获取设备组的设备列表、批量删除设备组、删除设备组。
String deviceKey = ""; // 待添加组播地址设备的deviceKey
int primaryAddress = ; // 主节点的单播地址
int elementAddress = ; // 待删除配置节点的单播地址
int subscriptionAddress = ; //需要删除的组播地址
int modelIdentifier = ; // SIG Model ID or Vendor Model ID
TgMeshManager.getInstance().configModelSubscriptionDelete(deviceKey, primaryAddress, elementAddress, subscriptionAddress, modelIdentifier, new IActionListener<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onFailure(int errorCode, String desc) {
}
}
);
参数说明
名称 | 类型 | 必填 | 默认值 | 描述 |
deviceKey | String | 是 | 待配置节点的deviceKey。不同设备的deviceKey不一样 | |
primaryAddress | Integer | 是 | 和elementAddress一致 | |
elementAddress | Integer | 是 | 待配置节点的单播地址 | |
subscriptionAddress | Integer | 是 | 需要删除的已订阅的组播地址 | |
modelIdentifier | Integer | 是 | SIG Model ID or Vendor Model ID,用于标识节点内的模型 | |
deviceControlListener | IActionListener<Boolean> | 否 | 配置结果回调 |
组控调用
设备组控是基于物的模型对设备定义的属性进行操作。关于属性的描述,请参见基本概念。
String groupId = "";
String method = "thing.attribute.set";
String params = "{\"powerstate\":1}";
Map<String, Object> extensionMap = new HashMap<>();
extensionMap.put("iotId", "9GsLSxg4FYgoGi4F8ET4000000");
extensionMap.put("groupAddress", 59097);
TgMeshManager.getInstance().sendGroupMessage(groupId, method, params, extensionMap, new IActionListener<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onFailure(int errorCode, String desc) {
}
});
参数说明
名称 | 类型 | 必填 | 默认值 | 描述 |
groupId | String | 是 | 待控制组的ID。 | |
method | String | 是 | 目前取值"thing.attribute.set"。 | |
params | String | 是 | JSON String. 基于物模型的描述。 | |
extensionMap | Map<Stringm, Object> | 是 | 扩展参数 包括分组内其中一个设备的iotId, key = "iotId" 和该分组的组播地址,key = "groupAddress"。 | |
deviceControlListener | IActionListener<Boolean> | 否 | 组控消息回调。onSuccess表示发送成功, onFailure 表示发送失败。 |