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

如何在ThingsBoard规则链脚本中生成键名为变量的msg输出?

ThingsBoard规则链脚本:动态设置msg键名的实现方法

设备通过HTTP Post上传数据至ThingsBoard Cloud,当前依赖规则链处理数据(集成功能无法正常使用)。需要将传感器数据中的unit字段作为输出msg的键名,对应value字段作为值,例如输出格式为{"Humidity":"65.3", "AirPressure":"1008.4"},但现有脚本仅能生成固定键名的输出。

核心解决思路

JavaScript中使用点语法(如Newmsg.s1Sensor1Unit)无法将变量作为对象键名,必须改用方括号语法(Newmsg[变量名]),才能实现动态键名的赋值。

修改后的脚本(固定处理item1/item2)

var s1Data = s.S1;
var Newmsg = {};

// 以item1的unit作为键,value作为对应值
Newmsg[s1Data.item1.unit] = s1Data.item1.value;
// 处理item2同理
Newmsg[s1Data.item2.unit] = s1Data.item2.value;

return {msg: Newmsg};

更灵活的循环写法(适配多个item)

如果后续有更多itemN格式的传感器数据,用循环可避免重复代码:

var s1Data = s.S1;
var Newmsg = {};

// 遍历s1Data的所有属性,筛选出以"item"开头的字段
for (var key in s1Data) {
    if (key.startsWith("item")) {
        var item = s1Data[key];
        Newmsg[item.unit] = item.value;
    }
}

return {msg: Newmsg};

预期输出

"msg": { "Humidity": "65.3", "AirPressure": "1008.4" }

内容的提问来源于stack exchange,提问作者Cameron Creevey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:53:09