引言
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
节点都能发挥重要作用。