物联网开源平台开发系列025 – Thingsboard规则链节点的JS代码调试

Thingsboard规则链节点功能很强大, 在这些节点中可以用JS代码来完成你所需的特定功能。本文介绍调试中如何打印日志以及参数传送。

物联网开源平台开发系列025 – Thingsboard规则链节点的JS代码调试

ThingsBoard 的脚本执行环境是基于 JavaScript 的 JSR-223(Nashorn 引擎或 GraalVM),而不是浏览器或 Node.js 环境。因此,console 对象是 未定义的。

一、打印调试日志和参数传递
第1步, 设置节点在调试模式

物联网开源平台开发系列025 – Thingsboard规则链节点的JS代码调试

第2步,使用 metadata 传递日志信息

在脚本中,可以把信息写入metadata ,并在节点的事件窗口查看。

例如:

metadata.debugLog = "Message received: " + JSON.stringify(msg);
return msg;

metadata 作用域是 当前消息(msg)的整个生命周期,即在当前消息流转的 整个规则链 内都有效。因此metadata可以用来传递参数。

二、msg对象褪去外层

msg 是一个json对象 ,在规则链节点中, 想要“褪去外层”(即去掉最外层的键,提取其值) ,只需简单的操作如下:

 msg = msg["外层key"];

这样就得到一个内层的键值,并重新赋值给msg。

三、 判断msg 中某个键key是否存在

if (msg.containsKey("需判断的key")){
}else{
} 

四、 取msg某个key的值

metadata.DeviceID = msg.get("DeviceID");

把DeviceID 这个key的值赋值给metadata.DeviceID

五、给msg 重新赋值

            metadata.updownValue = "上报";
            metadata.DeviceID = msg.get("DeviceID");
            metadata.WarningID = msg.get("WarningIDKey");
            metadata.WarningTime = msg.get(
                "WarningTimeKey");
            metadata.WarningContent = msg.get(
                "WarningContentKey");
            msg = {
                "isAlarm": 0,
                "DeviceID": metadata.DeviceID,
                "WarningID": metadata.WarningID,
                "WarningTime": metadata.WarningTime,
                "WarningContent": metadata.WarningContent
            };

六、规则链节点可修改和传递的内容

return {
    msg: msg,
    metadata: metadata,
    msgType: msgType
};

可修改msg消息数据、metadata元数据、msgType消息类型 ,都能传递到下一个节点,继续处理。

系列文章

物联网开源平台开发系列001 – 开源平台Thingsboard 介绍

物联网开源平台开发系列002 – Thingsboard 用户系统分析

物联网开源平台开发系列003 – Thingsboard OAuth2 – Google身份验证登陆

物联网开源平台开发系列004 – Thingsboard的实体、资产、设备一般说明及数据存储 – 陈皮王五de杂记

物联网开源平台开发系列005 – Thingsboard的API简述 – 陈皮王五de杂记

物联网开源平台开发系列006 – 在Thingsboard内创建一个设备 – 陈皮王五de杂记

物联网开源平台开发系列007 – Thingsboard的批量导入设备 – 陈皮王五de杂记

物联网开源平台开发系列008 – 浅谈物联网传输协议 – 陈皮王五de杂记

物联网开源平台开发系列009 – Thingsboard服务器对IoT设备下发指令 – 陈皮王五de杂记

物联网开源平台开发系列010 – Thingsboard规则引擎简介 – 陈皮王五de杂记

物联网开源平台开发系列011 – Thingsboard规则节点Originator Telemetry – 陈皮王五de杂记

物联网开源平台开发系列012 – Thingsboard 设备离线Alarm设置 – 陈皮王五de杂记

物联网开源平台开发系列013 – Thingsboard 遥测产生告警Alarm – 陈皮王五de杂记

物联网开源平台开发系列014 – Thingsboard遥测时序数据存储结构及分区策略 – 陈皮王五de杂记

物联网开源平台开发系列015 – Thingsboard postgresql数据库基本配置 – 陈皮王五de杂记

物联网开源平台开发系列016 – 再谈Thingsboard的设备注册 – 陈皮王五de杂记

物联网开源平台开发系列017 – Thingsboard的设备联动场景 – 陈皮王五de杂记

物联网开源平台开发系列018 – Thingsboard获取和处理天气信息 – 陈皮王五de杂记

物联网开源平台开发系列019 – Thingsboard设备数据传播给资产 – 陈皮王五de杂记

物联网开源平台开发系列020 – Thingsboard的实体视图Entity View – 陈皮王五de杂记

物联网开源平台开发系列021 – Thingsboard的网关gateway – 陈皮王五de杂记

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备 – 陈皮王五de杂记

物联网开源平台开发系列023 – Thingsboard设备列表仪表盘 – 陈皮王五de杂记

物联网开源平台开发系列024 – Thingsboard接入摄像头方案 – 陈皮王五de杂记

物联网开源平台开发系列025 – Thingsboard规则链节点的JS代码调试 – 陈皮王五de杂记

物联网开源平台开发系列026 – Thingsboard 仪表板Entities table 降序排序 – 陈皮王五de杂记

物联网开源平台开发系列027 – Thingsboard 仪表板数据筛选复杂的数值计算或者多层嵌套筛选逻辑实现 – 陈皮王五de杂记

物联网开源平台开发系列028 – Thingsboard 仪表板数据键的数据后处理功能处理复杂Json对象 – 陈皮王五de杂记

原创文章,作者:Gary,如若转载,请注明出处:https://www.cpw5.top/1399.html

淘宝小店:陈皮王五工作室

(0)
GaryGary
上一篇 2025-03-21 下午3:45
下一篇 2025-03-28 下午1:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(14条)