ThingsBoard 规则引擎-邮件通知

文章介绍了如何使用Thingsboard的规则引擎进行实时数据校验、设备报警以及通过规则链进行数据处理。通过示例展示了如何配置规则节点和规则链来确保温度传感器数据在正常范围内,并在超出范围时触发报警。此外,还详细说明了如何设置邮件通知,以便在设备数据异常时发送提醒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前我们已经学习了Thingsboard安装、设备接入、简单的数据可视化内容,今天来继续学习下thingsboard其他特性。

规则引擎

应用场景

ThingsBoard规则引擎是一个支持高度可定制复杂事件处理的框架,它的应用场景如下:

  • 实时数据校验、检测、修改
  • 数据聚合。如将多个设备数据聚合到其他集合中
  • 根据预定条件 触发报警
  • 设备生命周期事件触发操作。如设备上线、掉线报警
  • 加载预先定义的阈值。如设备负载温度阈值
  • 触发外部API调用
  • 告警通知,如邮件、SNS
  • 集成外部组件,如kafka、spark等 (专业版才支持)

规则组件

规则引擎是一个易于使用的框架,用于构建基于事件的工作流。主要由三个组件构成:

  • 消息 - 任意来源的事件消息。可以终端上报数据、设备生命周期事件、外部API调用产生的数据
  • 规则节点 - 可以理解为入站消息处理的一个功能点。ThingsBoard支持不同规则节点,如过滤、转换、事件处理
  • 规则链 - 由多个相关联的规则节点共同组成的规则链条,前一个节点的输出作为后一个节点的输入。可以理解为责任链开发模式

为了有个初步的概念,先看一下规则链的展现形式。点击 “规则链库” , 选中 “Root Rule Chain”, 点击 “打开规则链”

在这里插入图片描述

如上图,黄色的部分表示不同的规则类型,可根据不同需求酌情选择,右侧是根规则链的组成。

业务案例

前提准备

  • 在设备列表新增一个传感器设备 ( Temperature Sensors )
  • 点击设备获取访问令牌

在这里插入图片描述

  • 模拟设备数据上报
curl -v -X POST -d '{"temperature":90}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
# 替换上面的ip、ACCESS_TOKEN (上面复制的token)
  • 数据验证

    curl -v -X POST -d "{\"temperature\": 90}" http://192.168.0.5:8080/api/v1/L26p17Z0Ww5xVuXxinqB/telemetry --header "Content-Type:application/json"
    # 执行上面的命令,可以发现系统已经接收到最新的值。
    

    在这里插入图片描述

校验规则

假设温度传感器采集并推送数据到ThingsBoard平台,正常情况下温度的值在 -40°C 到 +80°C之间.基于这种业务场景,我们存储正常温度的值,同时对非正常温度数据记录日志。

  1. 打开根规则链 拖入 script rule node 到规则面板中

    在这里插入图片描述

  2. 输入验证脚本

return typeof msg.temperature === 'undefined' 
        || (msg.temperature >= -40 && msg.temperature <= 80);

在这里插入图片描述

  1. 存储之前 先验证数据

    在这里插入图片描述

  2. 加入日志规则节点

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 分别上报数据
# 第一次
curl -v -X POST -d "{\"temperature\": 120}" http://192.168.0.5:8080/api/v1/L26p17Z0Ww5xVuXxinqB/telemetry --header "Content-Type:application/json"

# 第二次
curl -v -X POST -d "{\"temperature\": 40}" http://192.168.0.5:8080/api/v1/L26p17Z0Ww5xVuXxinqB/telemetry --header "Content-Type:application/json"
  1. 测试结果

日志记录,打开日志规则详情 查看详情

在这里插入图片描述

正常数据

在这里插入图片描述

触发报警

使用Thingsboard为终端设备配置电子邮件、短信通知非常的简单,只需要配置简单的规则即可实现。在Thingsboard中 规则引擎是一个非常有用的特性。报警规则有以下属性组成:

  • 报警类型 - 报警类型在设备报警规则组内部必须唯一

  • 触发条件 - 定义报警触发的条件,触发条件由以下规则组成

    • 报警级别 - Thingsboard 依据报警级别降序验证触发条件。例如,一个报警同时达到严重、轻微、警告不同级别的要求,只会发出级别最高的报警。同一个规则中的两个条件不能具有相同的报警级别
    • 关键字过滤 - 用于属性值的逻辑判断。如“(temperature< 0 or temperature> 20) And softwareVersion = ‘2.5.5’”
    • 条件类型 - 支持简单、连续时间、重复等类型。如连续3次或者5分钟类。只要第一个匹配事件发生,即可触发报警。
    • 定时任务 - 定义规则处于启用状态的时间计划。一直启用、特定时间启用、用户自定义。
    • 报警明细 - 报警信息模板支持使用 ${attributeName} 语法来替换动态属性值
  • 清除条件 - 必要的时候清空报警条件

  • 高级设置 - 支持向不同租户、终端用户、其他实体进行报警传播

业务场景

假设需要对冰箱内部高价值的物品进行实时跟踪,现在来学习下如何使用报警规则满足不同的报警要求。

新增报警条件

  • 点击"设备配置" -> 选中 default 配置 -> 添加报警规则

在这里插入图片描述

  • 添加报警条件,这里设置温度 > 80

在这里插入图片描述

  • 选择报警级别

在这里插入图片描述

添加报警规则引擎

在这里插入图片描述

发送报警数据

curl -v -X POST -d "{\"temperature\": 120}" http://192.168.0.5:8080/api/v1/L26p17Z0Ww5xVuXxinqB/telemetry --header "Content-Type:application/json"

在这里插入图片描述

如上图已经触发报警。

邮件通知

我们在上面触发报警时,更进一步发送邮件通知,以此来完成更好的用户体验。

设置系统邮件

首先使用超级管理员账号,登录系统,点击系统 -> 发送邮件 设置邮箱基本信息,并进行测试。后续需要用到此项设置

在这里插入图片描述

Transform Script 引擎

metadata.temperature = msg.temperature;
return {msg: msg, metadata: metadata, msgType: msgType};

在这里插入图片描述

上面这一步非常重要 将温度数据放入到元数据中,后续邮件模板中 ${temperature} 可以引用元数据中的值,此外 该规则节点需要放置到报警规则节点前面。

To Mail 引擎

添加To Mail 引擎,关联之前校验引擎节点,返回False时 发送邮件。

在这里插入图片描述

Send Mail 引擎

在这里插入图片描述

整体规则链关联如下

在这里插入图片描述

发送异常数据

curl -v -X POST -d "{\"temperature\": 118}" http://192.168.0.5:8080/api/v1/L26p17Z0Ww5xVuXxinqB/telemetry --header "Content-Type:application/json"

验证结果

邮件规则日志

在这里插入图片描述

在这里插入图片描述

至此 邮件发送成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地表最强菜鸡

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值