跳到主要内容

设备控制

ESPRMNode 实例下的每个 ESPRMDevice 实例都会包含一组 ESPRMDeviceParam,可使用 setValue API 更新。该方法需要设置要更新的值,并返回响应结果以指示操作是否成功。

在层级结构中定位到设备参数

要控制设备,需要在节点层级中进行导航:

  1. 获取节点 - 使用 getUserNodes()getNodeDetails() 获取节点。
  2. 访问节点配置 - 从节点获取 nodeConfig
  3. 查找设备 - 从 nodeConfig 访问 devices 数组。
  4. 获取设备参数 - 从设备访问 params 数组。
  5. 更新参数值 - 在目标参数上调用 setValue()

示例:设备参数控制的完整流程

try {
// 步骤 1:获取用户节点
const response = await userInstance.getUserNodes();

// 步骤 2:查找特定节点(例如 按节点 ID 或遍历节点)
const targetNode = response.nodes.find(node => node.id === "your_node_id");

if (!targetNode) {
console.error("Node not found");
return;
}

// 步骤 3:获取节点配置(如果尚未可用)
const nodeConfig = targetNode.nodeConfig || await targetNode.getNodeConfig();

// 步骤 4:查找特定设备(例如:灯)
const lightDevice = nodeConfig.devices.find(
device => device.type === "esp.device.light"
);

if (!lightDevice) {
console.error("Device not found");
return;
}

// 步骤 5:查找特定参数(例如 Power 参数)
const powerParam = lightDevice.params.find(
param => param.name === "Power"
);

if (!powerParam) {
console.error("Parameter not found");
return;
}

// 步骤 6:更新参数值
const newValue = true; // 打开灯
const updateResponse = await powerParam.setValue(newValue);

console.log("Device parameter updated successfully:", updateResponse);
} catch (error) {
console.error("Error updating device parameter:", error);
}

示例:按类型查找参数

也可以按类型而不是名称来查找参数:

try {
const response = await userInstance.getUserNodes();
const node = response.nodes[0];
const nodeConfig = node.nodeConfig || await node.getNodeConfig();
const device = nodeConfig.devices[0];

// 按类型查找参数(例如 esp.param.power)
const powerParam = device.params.find(
param => param.type === "esp.param.power"
);

if (powerParam) {
await powerParam.setValue(true);
console.log("Power parameter updated");
}
} catch (error) {
console.error("Error updating parameter:", error);
}

设备参数 setValue API

参数类型说明
value*任意类型要更新的参数值。
注意

setValue 方法会返回响应结果,提示操作是否成功。响应结构取决于 SDK 的实现,可能包含状态信息、更新后的参数值或错误详情。

On this page