管理群组
本节介绍创建、更新和管理节点群组的操作,可通过 ESPRMUser 实例(用于用户级操作)或 ESPRMGroup 实例(用于群组级操作)执行。
说明
使用 ESPRMAuth.getLoggedInUser 方法获取 userInstance:
try {
const authInstance = ESPRMBase.getAuthInstance();
const userInstance = await authInstance.getLoggedInUser();
if (userInstance) {
// 使用 userInstance 进行群组操作
} else {
console.log("No user is currently logged in");
}
} catch (error) {
console.error("Error getting logged in user:", error);
}
使用 userInstance 的 getGroupById 或 getGroups 方法获取 group 实例(ESPRMGroup 实例):
// 通过 ID 获取群组
const group = await userInstance.getGroupById({
groupId: "group_id_123"
});
// 或从群组列表中获取
const response = await userInstance.getGroups();
const group = response.groups[0]; // 获取列表中的第一个群组
创建节点群组
使用 createGroup 方法创建新的节点群组。
const groupInfo = {
name: "Living Room Devices",
nodeIds: ["node_id_1", "node_id_2"],
description: "All devices in the living room",
customData: {
room: "living_room",
floor: 1
},
type: "user",
mutuallyExclusive: false
};
try {
const newGroup = await userInstance.createGroup(groupInfo);
console.log("Group created successfully:", newGroup);
} catch (error) {
console.error("Error creating group:", error);
}
更新群组信息
使用 updateGroupInfo 方法更新群组信息。
try {
const updateInfo = {
name: "Updated Group Name",
description: "Updated description",
customData: {
room: "bedroom",
floor: 2
}
};
const response = await group.updateGroupInfo(updateInfo);
console.log("Group info updated successfully:", response);
} catch (error) {
console.error("Error updating group info:", error);
}
删除群组
使用 delete 方法删除群组。
try {
const response = await group.delete();
console.log("Group deleted successfully:", response);
} catch (error) {
console.error("Error deleting group:", error);
}
退出群组
使用 leave 方法将当前用户从群组中移除。
try {
const response = await group.leave();
console.log("Left group successfully:", response);
} catch (error) {
console.error("Error leaving group:", error);
}
向群组添加节点
使用 addNodes 方法向现有节点群组添加节点,用户应提供需要添加到群组的节点 ID 列表。
/*
假设用户有两个 ESPRMNode 节点实例,分别存储在:
- firstNode
- secondNode
*/
const nodesToAdd = [firstNode.id, secondNode.id];
try {
const response = await group.addNodes(nodesToAdd);
console.log("Nodes added successfully:", response);
} catch (error) {
console.error("Error adding nodes to group:", error);
}
从群组移除节点
使用 removeNodes 方法从群组中移除节点。
const nodesToRemove = ["node_id_1", "node_id_2"];
try {
const response = await group.removeNodes(nodesToRemove);
console.log("Nodes removed successfully:", response);
} catch (error) {
console.error("Error removing nodes from group:", error);
}
获取节点列表
使用 getNodesList 方法检索群组关联的节点 ID 列表。
try {
const nodeIds = await group.getNodesList();
console.log("Node IDs in group:", nodeIds);
} catch (error) {
console.error("Error getting nodes list:", error);
}
获取节点详细信息
使用 getNodesWithDetails 方法检索包含详细信息的节点列表。
try {
const nodes = await group.getNodesWithDetails();
console.log("Nodes with details:", nodes);
nodes.forEach(node => {
console.log(`Node: ${node.name}, Type: ${node.type}`);
});
} catch (error) {
console.error("Error getting nodes with details:", error);
}
创建子群组
使用 createSubGroup 方法在当前群组下创建子群组。
try {
const subGroupInfo = {
name: "SubGroup Name",
nodeIds: ["node_id_1"],
description: "Subgroup description"
};
const subGroup = await group.createSubGroup(subGroupInfo);
console.log("SubGroup created successfully:", subGroup);
} catch (error) {
console.error("Error creating subgroup:", error);
}