You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shelly脚本获取电压值返回undefined问题求助

Shelly脚本获取电压值返回undefined问题求助

嘿,我看你在Shelly脚本里获取电压时遇到了返回undefined的问题,这大概率是代码里的几个小细节出错了,我帮你梳理下:

首先看你代码里的Shelly.call部分,你用了"Voltmeter.GetStatus"这种HTML实体引号,这在Shelly的JS脚本里是不被识别的,会导致API调用直接失败,所以回调里的result自然就是undefined了。另外还有几个可以优化的地方,比如事件回调的参数命名和错误处理,我给你调整了代码:

Shelly.addEventHandler(
  function(event, ud) {
    // 先判断是不是功率变化的事件,避免不必要的调用
    if (event.name === "apower_change") {
      print('Power: ' + event.info.apower);
      
      // 这里把HTML实体引号换成了标准双引号,这是关键修复点
      Shelly.call("Voltmeter.GetStatus", {id: 0},
        function(result, error_code, error_message, ud) {
          // 增加错误处理,方便排查问题
          if (error_code === 0) {
            // 直接打印具体的电压值,而不是整个result对象
            print('Current Voltage: ' + result.voltage);
          } else {
            print('Failed to get voltage: Error Code ' + error_code + ', Message: ' + error_message);
          }
        }, null
      );
    }
  }, null
);

我给你列下主要的修改点:

  • 把事件回调的参数名改成了event(原来的apower_change其实是事件对象,命名容易混淆),还加了事件类型判断,确保只在功率变化时触发电压获取。
  • 核心修复:将"替换成了标准的双引号,这是导致API调用失败的根本原因。
  • 增加了错误处理逻辑,调用失败时能看到具体的错误信息,方便你进一步排查(比如Voltmeter的id是否正确,设备是否支持该API)。
  • 成功获取结果后,直接输出result.voltage,而不是整个result对象,这样能得到你需要的具体电压数值。

你可以试试这个修改后的脚本,应该就能正常获取电压值了。

备注:内容来源于stack exchange,提问作者Lex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:08:01