跳到主要内容

服务控制

每个 ESPRMNode 实例下的 ESPRMService 实例都包含一组 ESPRMServiceParam 参数,这些参数可通过 setValue API 进行更新。该方法需要传入待设置的值,并返回表示操作成功或失败的响应。

导航到服务参数的层次结构

要控制服务,你需要遍历节点层次结构:

  1. 获取节点 - 使用 getUserNodes()getNodeDetails() 检索节点。
  2. 访问节点配置 - 从节点获取 nodeConfig
  3. 查找服务 - 访问 nodeConfig 中的 services 数组。
  4. 获取服务参数 - 访问服务中的 params 数组。
  5. 更新参数值 - 在特定参数上调用 setValue()

示例:服务参数控制的完整流程

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

// 步骤2:查找特定节点
const targetNode = response.nodes.find(node => node.id === "your_node_id");

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

// 步骤3:获取节点配置
const nodeConfig = targetNode.nodeConfig || await targetNode.getNodeConfig();

// 步骤4:查找特定服务(例如:时间服务)
const timeService = nodeConfig.services.find(
service => service.type === "esp.service.time"
);

if (!timeService) {
console.error("Service not found");
return;
}

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

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

// 步骤6:更新参数值
const timezone = "America/Los_Angeles";
const updateResponse = await tzParam.setValue(timezone);

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

示例:使用 getServices 方法

你也可以使用节点实例上的 getServices() 方法检索服务:

try {
const response = await userInstance.getUserNodes();
const node = response.nodes[0];

// 直接从节点获取服务
const services = await node.getServices();

// 查找时间服务
const timeService = services.find(
service => service.type === "esp.service.time"
);

if (timeService) {
// 查找并更新 TZ 参数
const tzParam = timeService.params.find(param => param.name === "TZ");
if (tzParam) {
await tzParam.setValue("Asia/Kolkata");
console.log("Timezone updated");
}
}
} catch (error) {
console.error("Error updating service parameter:", error);
}

示例:按类型查找服务参数

你可以按参数类型查找服务参数:

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

// 按类型查找参数(例如:esp.param.tz)
const tzParam = service.params.find(
param => param.type === "esp.param.tz"
);

if (tzParam) {
await tzParam.setValue("Europe/London");
console.log("Timezone parameter updated");
}
} catch (error) {
console.error("Error updating parameter:", error);
}

服务参数 setValue API

参数类型说明
value*any要更新的参数值。
备注

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

On this page