设备控制
在 ESPRMNode 实例下的每个 ESPRMDevice 实例都会包含一组 ESPRMDeviceParam,可使用 setValue API 更新。该方法需要设置要更新的值,并返回响应结果以指示操作是否成功。
在层级结构中定位到设备参数
要控制设备,需要在节点层级中进行导航:
- 获取节点 - 使用
getUserNodes()或getNodeDetails()获取节点。 - 访问节点配置 - 从节点获取
nodeConfig。 - 查找设备 - 从
nodeConfig访问devices数组。 - 获取设备参数 - 从设备访问
params数组。 - 更新参数值 - 在目标参数上调用
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 的实现,可能包含状态信息、更新后的参数值或错误详情。