服务控制
每个 ESPRMNode 实例下的 ESPRMService 实例都包含一组 ESPRMServiceParam 参数,这些参数可通过 setValue API 进行更新。该方法需要传入待设置的值,并返回表示操作成功或失败的响应。
导航到服务参数的层次结构
要控制服务,你需要遍历节点层次结构:
- 获取节点 - 使用
getUserNodes()或getNodeDetails()检索节点。 - 访问节点配置 - 从节点获取
nodeConfig。 - 查找服务 - 访问
nodeConfig中的services数组。 - 获取服务参数 - 访问服务中的
params数组。 - 更新参数值 - 在特 定参数上调用
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 实现,可能包含状态信息、更新后的参数值或错误详情。