ThingsBoard 如何发送告警邮件
正文与配图来自原稿。案例:设备上报温度过高 → 触发告警 → 按模板发邮件。
上一篇:ThingsBoard 配置发送邮件(系统层 SMTP;本篇侧重租户层规则链发信)
1、概述
很多时候,我们使用 ThingsBoard 的时候,会遇到比如一个设备触发了告警,如何将设备的告警消息定义成邮件模板,然后通知租户或者客户管理员,管理员进行处理——这样的需求是非常重要的。
2、实现的步骤
要实现这个需求,总结了几步:
- 设备上报的参数与阈值进行判断
- msg 参数转换到 metadata
- 触发告警
- 定义邮件模板
- 配置邮件服务器
- 发送邮件
3、具体实现
设备上报的参数与阈值进行判断
假设一个温度检测传感器检测到温度(temperature)异常了,设备上报了这个异常数据。这个 temperature 字段是在 msg 中携带传输的,首先就需要将当前上报的值与用户设置的阈值进行判断,是否达到阈值。
使用规则节点:


msg 参数转换到 metadata
由于需要触发告警,要求需要将默认的消息数据(msg)转换到元数据(metadata)中,因为中间需要使用 Create Alarm 节点。如果你不将 msg 中需要的字段转到 metadata 中,后续需要动态取值就没办法取到。
如图,将 msg 中的 temperature 字段赋值到 metadata 中:

触发告警
使用 Create Alarm 节点来创建告警。这里直接使用默认的,不做自定义的一些处理,取个名字叫 alarm:

定义邮件模板
下面就是使用设备传的值,动态地来编写邮件内容:


发送邮件
现在使用 Send Email 节点来发送邮件:

第一种:使用系统层配置的 SMTP 邮箱服务器,直接勾选即可。前提是你在系统层配置了,可以参考上一节讲解的配置。

第二种:使用自己配置(租户侧自定义 SMTP)。

步骤里的「配置邮件服务器」即对应这里:要么沿用系统层 SMTP,要么在本节点填租户自己的 SMTP。系统层配置见 配置发送邮件。
4、测试
本地使用 MQTT 模拟设备:

点击发送,电脑右下角弹出了告警邮件推送,成功了。

补充(辅)
- 规则链大致顺序:判断阈值 → msg 转 metadata → Create Alarm → 组邮件(模板)→ Send Email。
- 模板里要用到的字段,务必先放进 metadata(或告警详情能取到的路径),否则邮件内容取不到动态值。
- Send Email 勾选「使用系统 SMTP」前,请先按上一篇完成测试邮件验证。
- 租户配置里的「最大电子邮件发送数」可能限制发信次数,见 租户配置。
