当前位置: 首页 > news >正文

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账号。icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1CH36egEDM/?spm_id_from=333.999.0.0

1. Math Function 节点简介

Math Function 节点的主要作用是在规则链执行过程中对数据进行数学运算。通过 Math Function 节点,可以对输入的消息和元数据进行加减乘除、取模、平方根等运算,生成新的数据输出。这在数据预处理、阈值判断和复杂计算中非常有用。

2. 节点配置
  • 函数类型:选择要执行的数学运算类型,常见的有 ADDSUBTRACTMULTIPLYDIVIDEMODSQRT 等。
  • 操作数:指定参与运算的操作数,可以是静态值、动态表达式或消息中的属性。
  • 输出配置:设置输出消息的格式和内容。
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 实现步骤
  1. 部署传感器

    • 在室内安装温度和湿度传感器。
  2. 创建规则链

    • 添加 Math Function 节点,用于进行温度单位转换和阈值判断。
    • 添加其他处理节点,如设备控制和数据存储。
  3. 配置规则链

    • 配置 Math Function 节点,将温度从摄氏度转换为华氏度。
{"function": "MULTIPLY","arguments": ["${msg.temperature}",1.8],"output": {"temperatureFahrenheit": "${result}"}
}
  • 配置 Math Function 节点,判断温度是否超过设定的阈值。
{"function": "SUBTRACT","arguments": ["${msg.temperatureFahrenheit}",75],"output": {"temperatureDifference": "${result}"}
}
  1. 处理数据
    • 根据温度差异控制空调的开关状态。
    • 如果温度差异大于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}"}
}
  1. 前端界面

    • 开发一个前端界面,显示实时的温度和湿度数据。
    • 提供一个界面,让用户能够查看和管理空调和加湿器的开关状态。
  2. 数据查询

    • 使用 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 是一个开源的物联网平台&#xff0c…...

echarts地图,柱状图,折线图实战

1.地图 <template><div style"height: 100%;" class"cantainerBox"><div class"top"><div class"leftTop"><span class"firstSpan">推广进度</span><div>省份选择&#xff1a;&l…...

客服宝快捷回复软件:客服工作的得力助手

在从事客服工作的这段漫长时间里&#xff0c;响应率和满意度一直是我最为头疼的绩效指标。这两个指标就如同两座大山&#xff0c;压得我时常喘不过气来。 然而&#xff0c;幸运的是&#xff0c;最近我安装了客服宝这个快捷回复软件&#xff0c;这一举措如同为我打开了一扇新的…...

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 消息消费失败的处理机制

在分布式消息系统中&#xff0c;处理消费失败的消息是非常关键的一环。 RocketMQ 提供了一套完整的消息消费失败处理机制&#xff0c;下面我将简要介绍一下其处理逻辑。 截图代码版本&#xff1a;4.9.8 步骤1 当消息消费失败时&#xff0c;RocketMQ会发送一个code为36的请求到…...

三、Java并发 Java 线程池 ( Thread Pool )

一、前言 本文我们将讲解 Java 中的线程池 ( Thread Pool )&#xff0c;从 Java 标准库中的线程池的不同实现开始&#xff0c;到 Google 开发的 Guava 库的前世今生 注&#xff1a;本章节涉及到很多前几个章节中阐述的知识点。我们希望你是按照顺序阅读下来的&#xff0c;不然…...

zabbix安装配置与使用

zabbix Zabbix的工作原理如下: 监控部分: Zabbix Agent安装在各个需要监控的主机上,它以主配置的时间间隔(默认60s)收集主机各项指标数据,如CPU占用率、内存使用情况等。 通讯部分: Agent会把收集的数据通过安全通道(默认10051端口)发送到Zabbix Server。Server会存储这些数…...

第3关:命题逻辑推理

任务描述 相关知识 实验用例 实验原理和方法 编程要求 测试说明 任务描述 本关任务&#xff1a;用命题逻辑推理的方法解决逻辑推理问题。加深对命题逻辑推理方法的理解。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.命题符号化&#xff0c;2.命题推理。 …...

第三份代码:VoxelNet的pytorch实现

VoxelNet是点云体素化处理的最开始的网络结构设计&#xff0c;通过完全弄明白整个VoxelNet的pytorch实现是非常有必要的。 参考的代码是这一份&#xff1a;GitHub - RPFey/voxelnet_pytorch: modification of voxelnet 参考文章&#xff1a;VoxelNet论文解读和代码解析_voxel…...

Backtrader-Broker05

本系列是使用Backtrader在量化领域的学习与实践&#xff0c;着重介绍Backtrader的使用。Backtrader 中几个核心组件&#xff1a; Cerebro&#xff1a;BackTrader的基石&#xff0c;所有的操作都是基于Cerebro的。Feed&#xff1a;将运行策略所需的基础数据加载到Cerebro中&…...

分布式和微服务系统区别

一、分布式是更广泛的概念&#xff0c;指将计算分布在多个物理节点上的系统。 适用于需要高可用性、高性能、可扩展性的系统。 应用场景&#xff1a;分布式数据库—数据高可用存储、分布式缓存—提升数据访问速度 分布式计算框架—大规模数据计算、分布式文件系统—海量数据的…...

ElementUI el-table 多选以及点击某一行的任意位置就勾选上

1. 需求 在el-table中&#xff0c;需要实现多选功能&#xff0c;并且点击某一行的任意位置就勾选上&#xff0c;而不是点击复选框才勾选上。 2. 实现思路 在el-table中添加ref属性&#xff0c;用于获取表格实例。在el-table-column中添加type"selection"属性&…...

博物馆3D数字化的优势有哪些?

博物馆的3D数字化进程正不断向前推进&#xff0c;这一创新技术在提升观展体验、促进文化传播以及加强文物保护方面&#xff0c;均展现出了显著的优势。 一、观展体验的革命性提升 1、动态与多角度展示&#xff1a; 3D云展览利用先进的数字化技术&#xff0c;使文物能够以动态…...

Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--YOLOV5工程编译移植到开发板测试--(5)

专栏链接如下&#xff1a; Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装Ubuntu18.04--&#xff08;1&#xff09; Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--安装开发环境AMCT、依赖包等--&#xff08;2&#xff09;…...

springboot揭秘00-基于java配置的spring容器

文章目录 【README】【1】基本概念&#xff1a;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 容器&#xff08;docker run&#xff09; docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/shanghai \-e MYSQL_ROOT_PASSWORD123 \mysql -d&#xff1a;以守护进程&#xff08;daemon&#xff09;模式运行…...

说说Dubbo有哪些核心组件?

说说Dubbo有哪些核心组件&#xff1f; 简单来说&#xff0c;就是服务提供者Provider&#xff0c;服务消费者Consumer&#xff0c;服务注册中心Registry&#xff0c;服务监控器Monitor&#xff0c;通信协议Protocol Dubbo 是一款高性能、轻量级的开源 Java RPC 框架&#xff0…...

视频文件损坏无法播放怎么办?有什么办法可以修复视频吗?

人人都是自媒体的时代&#xff0c;我们已不再满足单纯的图片及声音传播&#xff0c;拍摄短视频的需求日渐增高。但随之也带来了许多问题&#xff0c;比如&#xff1a;拍摄的视频在保存或转移拷贝过程出现问题导致视频文件损坏无法播放。遇到这种情况时怎么办&#xff1f;有什么…...

flutter ios ffi 调试 .a文件 debug可以 release 不行

在 Flutter 中使用 FFI&#xff08;Foreign Function Interface&#xff09;时&#xff0c;如果你在调试模式下能够正常工作&#xff0c;而在发布模式下却遇到问题&#xff0c;使用Object-c原生调用可以使用&#xff0c;开启去掉优化也可以&#xff0c;可能的原因在发布模式下&…...

ADB指定进程名称kill进程

adb shell ps | grep <process_name> | awk {print $2} | xargs adb shell killadb shell ps&#xff1a;列出所有正在运行的进程。grep <process_name>&#xff1a;筛选出包含指定进程名称的行。awk ‘{print $2}’&#xff1a;提取输出中的第二列&#xff08;通常…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...