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

ThingsBoard:如何通过widget的custom action修改server attribute

ThingsBoard Widget自定义动作修改服务端属性解答

完全可以通过Widget的Custom Action(自定义动作)选项修改服务端属性,直接在自定义动作的JS逻辑中调用平台内置的属性服务接口即可实现,不需要额外开发自定义插件。

实现步骤

  • 确认操作权限:当前登录的系统用户,需要对目标设备/资产拥有「写入属性」的操作权限,否则接口会返回403权限错误。
  • 进入Widget编辑页,找到你要绑定触发逻辑的Custom Action配置项,选择自定义JS动作,写入对应逻辑即可。
  • 核心调用逻辑参考如下代码,可根据你的实际业务调整属性键值、成功/失败后的回调动作:
// 1. 定义你要更新的服务端属性键值对,替换成你自己的属性名和目标值
const updateAttributes = {
  "your_server_attr_key": "your_target_value"
};
// 2. 获取当前Widget默认绑定的实体信息(设备/资产/客户等)
const targetEntity = widgetContext.defaultSubscription.configuredDatasources[0].entity;
// 3. 调用平台内置属性保存接口,指定作用域为SERVER_SCOPE即操作服务端属性
widgetContext.attributeService.saveEntityAttributes(
  targetEntity,
  "SERVER_SCOPE",
  updateAttributes
).subscribe({
  next: () => {
    // 更新成功后的自定义逻辑,示例是弹成功提示+刷新Widget订阅数据
    widgetContext.showSuccessToast("服务端属性更新成功");
    widgetContext.defaultSubscription.update();
  },
  error: (err) => {
    // 更新失败后的自定义逻辑,示例是弹错误提示
    widgetContext.showErrorToast(`更新失败:${err.message}`);
  }
});

补充说明

  • 如果你要修改的不是当前Widget绑定的实体属性,只需要把代码里targetEntity替换为你指定的实体对象(需包含id和entityType两个字段)即可。
  • 该逻辑支持绑定在按钮点击、表单提交、值变更等各类Widget支持的触发事件上,触发条件可以根据业务需求自由配置。

内容的提问来源于stack exchange,提问作者Vitor Marques Lourenco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:00:49