ThingsBoard规则链节点:Math Function节点详解
引言
1. Math Function 节点简介
2. 节点配置
2.1 基本配置示例
3. 使用场景
3.1 数据预处理
3.2 阈值判断
3.3 复杂计算
3.4 动态阈值
4. 实际项目中的应用
4.1 项目背景
4.2 项目需求
4.3 实现步骤
5. 总结
引言
ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,
Math Function节点用于执行数学运算,这对于数据处理和分析非常有用。
ThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台_哔哩哔哩_bilibiliThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台共计33条视频,包括:1、ThingsBoard项目介绍、2、ThingsBoard前端Vue版本代码编译、3、ThingsBoard本地后端源码编译等,UP主更多精彩视频,请关注UP账号。
https://www.bilibili.com/video/BV1CH36egEDM/?spm_id_from=333.999.0.0

1. Math Function 节点简介
Math Function 节点的主要作用是在规则链执行过程中对数据进行数学运算。通过 Math Function 节点,可以对输入的消息和元数据进行加减乘除、取模、平方根等运算,生成新的数据输出。这在数据预处理、阈值判断和复杂计算中非常有用。
2. 节点配置
- 函数类型:选择要执行的数学运算类型,常见的有
ADD、SUBTRACT、MULTIPLY、DIVIDE、MOD、SQRT等。 - 操作数:指定参与运算的操作数,可以是静态值、动态表达式或消息中的属性。
- 输出配置:设置输出消息的格式和内容。
2.1 基本配置示例
{"function": "ADD","arguments": ["${msg.temperature}",10],"output": {"temperature": "${result}"}
}
3. 使用场景
Math Function 节点在多种场景下都非常有用,特别是在需要进行数据预处理、阈值判断和复杂计算时。以下是一些具体的应用场景:
3.1 数据预处理
在数据收集和处理过程中,有时需要对原始数据进行预处理,例如单位转换或数据标准化。
{"function": "MULTIPLY","arguments": ["${msg.temperature}",1.8],"output": {"temperatureFahrenheit": "${result}"}
}
3.2 阈值判断
在监控系统中,需要对数据进行阈值判断,例如判断温度是否超过某个临界值。
{"function": "SUBTRACT","arguments": ["${msg.temperature}",30],"output": {"temperatureDifference": "${result}"}
}
3.3 复杂计算
在某些场景下,需要进行复杂的数学运算,例如计算平均值、标准差等。
{"function": "SQRT","arguments": ["${msg.variance}"],"output": {"standardDeviation": "${result}"}
}
3.4 动态阈值
在某些情况下,阈值可能是动态的,需要根据其他数据进行计算。
{"function": "ADD","arguments": ["${msg.baseThreshold}","${msg.dynamicAdjustment}"],"output": {"finalThreshold": "${result}"}
}
4. 实际项目中的应用
下面是一个实际项目中的例子,展示如何在智能家居系统中使用 Math Function 节点。
4.1 项目背景
假设我们正在开发一个智能家居系统,该系统需要实时监测室内温度和湿度,并根据这些数据进行空调和加湿器的控制。此外,还需要对数据进行预处理和阈值判断,以便更好地管理和优化家居环境。
4.2 项目需求
- 监测室内温度和湿度。
- 对温度进行单位转换(从摄氏度转换为华氏度)。
- 判断温度是否超过设定的阈值。
- 控制空调和加湿器的开关状态。
4.3 实现步骤
-
部署传感器:
- 在室内安装温度和湿度传感器。
-
创建规则链:
- 添加
Math Function节点,用于进行温度单位转换和阈值判断。 - 添加其他处理节点,如设备控制和数据存储。
- 添加
-
配置规则链:
- 配置
Math Function节点,将温度从摄氏度转换为华氏度。
- 配置
{"function": "MULTIPLY","arguments": ["${msg.temperature}",1.8],"output": {"temperatureFahrenheit": "${result}"}
}
- 配置
Math Function节点,判断温度是否超过设定的阈值。
{"function": "SUBTRACT","arguments": ["${msg.temperatureFahrenheit}",75],"output": {"temperatureDifference": "${result}"}
}
- 处理数据:
- 根据温度差异控制空调的开关状态。
- 如果温度差异大于0,开启空调;否则,关闭空调。
{"type": "DEVICE_CONTROL","condition": "${msg.temperatureDifference > 0}","action": "TURN_ON_AIR_CONDITIONER","message": "Temperature exceeds threshold, turning on air conditioner.","metadata": {"deviceName": "${device.name}","temperatureDifference": "${msg.temperatureDifference}","timestamp": "${ts}"}
}
-
前端界面:
- 开发一个前端界面,显示实时的温度和湿度数据。
- 提供一个界面,让用户能够查看和管理空调和加湿器的开关状态。
-
数据查询:
- 使用 ThingsBoard 的 REST API 或 GraphQL 查询,获取历史数据和控制记录。
GET /api/plugins/telemetry/DEVICE/{deviceId}/values/timeseries?keys=temperature,humidity&startTs={startTimestamp}&endTs={endTimestamp}
5. 总结
Math Function节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助数据进行数学运算,进行数据预处理、阈值判断和复杂计算。通过合理地使用Math Function节点,可以更好地管理和自动化系统中的各种操作。无论是在智能家居、工业监控还是其他物联网应用中,Math Function节点都能发挥重要作用。

相关文章:
ThingsBoard规则链节点:Math Function节点详解
引言 1. Math Function 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 数据预处理 3.2 阈值判断 3.3 复杂计算 3.4 动态阈值 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,…...
echarts地图,柱状图,折线图实战
1.地图 <template><div style"height: 100%;" class"cantainerBox"><div class"top"><div class"leftTop"><span class"firstSpan">推广进度</span><div>省份选择:&l…...
客服宝快捷回复软件:客服工作的得力助手
在从事客服工作的这段漫长时间里,响应率和满意度一直是我最为头疼的绩效指标。这两个指标就如同两座大山,压得我时常喘不过气来。 然而,幸运的是,最近我安装了客服宝这个快捷回复软件,这一举措如同为我打开了一扇新的…...
laravel: Breeze 和 Blade, 登录 注册等
composer require laravel/breeze --dev php artisan breeze:install php artisan migrate npm install npm run build php artisan route:clear http://laravel-dev.cn/ http://laravel-dev.cn/register http://laravel-dev.cn/login...
RocketMQ 消息消费失败的处理机制
在分布式消息系统中,处理消费失败的消息是非常关键的一环。 RocketMQ 提供了一套完整的消息消费失败处理机制,下面我将简要介绍一下其处理逻辑。 截图代码版本:4.9.8 步骤1 当消息消费失败时,RocketMQ会发送一个code为36的请求到…...
三、Java并发 Java 线程池 ( Thread Pool )
一、前言 本文我们将讲解 Java 中的线程池 ( Thread Pool ),从 Java 标准库中的线程池的不同实现开始,到 Google 开发的 Guava 库的前世今生 注:本章节涉及到很多前几个章节中阐述的知识点。我们希望你是按照顺序阅读下来的,不然…...
zabbix安装配置与使用
zabbix Zabbix的工作原理如下: 监控部分: Zabbix Agent安装在各个需要监控的主机上,它以主配置的时间间隔(默认60s)收集主机各项指标数据,如CPU占用率、内存使用情况等。 通讯部分: Agent会把收集的数据通过安全通道(默认10051端口)发送到Zabbix Server。Server会存储这些数…...
第3关:命题逻辑推理
任务描述 相关知识 实验用例 实验原理和方法 编程要求 测试说明 任务描述 本关任务:用命题逻辑推理的方法解决逻辑推理问题。加深对命题逻辑推理方法的理解。 相关知识 为了完成本关任务,你需要掌握:1.命题符号化,2.命题推理。 …...
第三份代码:VoxelNet的pytorch实现
VoxelNet是点云体素化处理的最开始的网络结构设计,通过完全弄明白整个VoxelNet的pytorch实现是非常有必要的。 参考的代码是这一份:GitHub - RPFey/voxelnet_pytorch: modification of voxelnet 参考文章:VoxelNet论文解读和代码解析_voxel…...
Backtrader-Broker05
本系列是使用Backtrader在量化领域的学习与实践,着重介绍Backtrader的使用。Backtrader 中几个核心组件: Cerebro:BackTrader的基石,所有的操作都是基于Cerebro的。Feed:将运行策略所需的基础数据加载到Cerebro中&…...
分布式和微服务系统区别
一、分布式是更广泛的概念,指将计算分布在多个物理节点上的系统。 适用于需要高可用性、高性能、可扩展性的系统。 应用场景:分布式数据库—数据高可用存储、分布式缓存—提升数据访问速度 分布式计算框架—大规模数据计算、分布式文件系统—海量数据的…...
ElementUI el-table 多选以及点击某一行的任意位置就勾选上
1. 需求 在el-table中,需要实现多选功能,并且点击某一行的任意位置就勾选上,而不是点击复选框才勾选上。 2. 实现思路 在el-table中添加ref属性,用于获取表格实例。在el-table-column中添加type"selection"属性&…...
博物馆3D数字化的优势有哪些?
博物馆的3D数字化进程正不断向前推进,这一创新技术在提升观展体验、促进文化传播以及加强文物保护方面,均展现出了显著的优势。 一、观展体验的革命性提升 1、动态与多角度展示: 3D云展览利用先进的数字化技术,使文物能够以动态…...
Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--YOLOV5工程编译移植到开发板测试--(5)
专栏链接如下: Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装Ubuntu18.04--(1) Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装开发环境AMCT、依赖包等--(2)…...
springboot揭秘00-基于java配置的spring容器
文章目录 【README】【1】基本概念:Configuration与Bean【2】使用AnnotationConfigApplicationContext实例化spring容器【2.1】使用java配置简单构建spring容器【2.1.1】AnnotationConfigApplicationContext与Component及JSR-330注解类一起使用 【2.2】使用register…...
docker配置mysql
手动拉取 MySQL 镜像 docker pull mysql 创建并运行 MySQL 容器(docker run) docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/shanghai \-e MYSQL_ROOT_PASSWORD123 \mysql -d:以守护进程(daemon)模式运行…...
说说Dubbo有哪些核心组件?
说说Dubbo有哪些核心组件? 简单来说,就是服务提供者Provider,服务消费者Consumer,服务注册中心Registry,服务监控器Monitor,通信协议Protocol Dubbo 是一款高性能、轻量级的开源 Java RPC 框架࿰…...
视频文件损坏无法播放怎么办?有什么办法可以修复视频吗?
人人都是自媒体的时代,我们已不再满足单纯的图片及声音传播,拍摄短视频的需求日渐增高。但随之也带来了许多问题,比如:拍摄的视频在保存或转移拷贝过程出现问题导致视频文件损坏无法播放。遇到这种情况时怎么办?有什么…...
flutter ios ffi 调试 .a文件 debug可以 release 不行
在 Flutter 中使用 FFI(Foreign Function Interface)时,如果你在调试模式下能够正常工作,而在发布模式下却遇到问题,使用Object-c原生调用可以使用,开启去掉优化也可以,可能的原因在发布模式下&…...
ADB指定进程名称kill进程
adb shell ps | grep <process_name> | awk {print $2} | xargs adb shell killadb shell ps:列出所有正在运行的进程。grep <process_name>:筛选出包含指定进程名称的行。awk ‘{print $2}’:提取输出中的第二列(通常…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
