立即试用 商务报价
云服务
文档 > 规则引擎 > 入门

本页目录

规则引擎入门

什么是规则引擎?

规则引擎是基于事件开发的一个易于使用的工作流的框架;主要有3个组成部分:

  • Message - 事件接收;它可以来自设备、设备生命周期事件、REST API事件、RPC请求等传入的数据。
  • Rule Node - 消息处理;对接收的数据进行过滤、转换或者执行。
  • Rule Chain - 关联消息;接收上一节点的出站消息将其发送至下一个节点。

典型实例

ThingsBoard规则引擎是一个高度可定制的框架用于复杂事件的处理。以下是一些可以通过ThingsBoard规则链配置的常见用例:

  • 在保存到数据库之前对接收的遥测数据或属性进行验证和修改。
  • 将遥测或属性从设备复制到相关资产以便可以汇总遥测。例如:可以将多个设备中的数据汇总到相关资产中。
  • 根据定义的条件对alarms进行创建、更新、清除。
  • 根据设备生命周期事件触发操作。例如:如果设备处于在线/离线状态,则创建警告。
  • 加载所需的其他处理数据。例如:在客户设备或租户属性中定义的设备的playload温度阈值。
  • 调用外部系统的REST API。
  • 发生复杂事件时发送电子邮件并使用“电子邮件模板”中其他实体的属性。
  • 在事件处理期间要考虑用户的偏好。
  • 根据定义的条件进行RPC调用。
  • 集成第三方消息队列例如:Kafka,Spark,AWS等。

Hello World 实例

你可以使用ThingsBoard平台将DHT22温度传感器采集的-40°C至+ 80°C温度值进行收集。

在此教程中我们将配置ThingsBoard规则引擎来存储-40至80°C范围内的所有温度,并将所有数据记录到系统日志中。

添加温度并验节点

进入Thingsboard UI中Rule Chains转到Root Rule Chain.

image

拖动Script Filter 规则节点放入链中并配置如下脚本:

使用TBEL(ThingsBoard表达式语言)或JavaScript进行用户定义函数的开发, 建议使用TBEL在ThingsBoard中的执行效率比JS更高。

数据验证脚本:

1
2
return msg.temperature == null
|| (msg.temperature >= -40 && msg.temperature <= 80);

image

数据验证脚本:

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

image

如果未定义温度属性或温度有效则脚本将返回True,否则将返回False。如果脚本返回True则传入消息将被关联到与True关系连接的下一个节点。

我们希望所有的telemetry requests都通过此脚本进行验证. 删除Message Type Switch节点和Save Telemetry节点之间的Post Telemetry关系节点。

image

Message Type Switch节点和将Script Filter使用Post Telemetry进行连接:

image

image

Script Filter节点与Save Telemetry节点使用关系True进行连接:

image

Script Filter节点与Log Other节点使用关系False进行连接这样无效数据将被记录在系统日志中:

image

点击保存按钮应用更新。

验证结果

创建设备并将遥测提交到Thingsboard,点击Devices并创建新的设备:

image

发布设备遥测数据使用Rest API需要从设备DHT22复制设备访问令牌。

image


使用终端发送temperature=99的消息将$ACCESS_TOKEN替换为实际的设备令牌。

1
curl -v -X POST -d '{"temperature":99}' https://thingsboard.cloud/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

image

我们将看到设备最新遥测选项卡并没有遥测:

image


提交temperature=24可以看见遥测数据保存成功。

1
curl -v -X POST -d '{"temperature":24}' https://thingsboard.cloud/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

image

我们将看到遥测已成功保存。

image

相关文档:

你可以通过以下链接了解Thingsboard规则引擎的更多信息:



下一步

  • 连接设备 - 学习如何根据你的连接方式或解决方案连接设备。

  • 可 视 化 - 学习如何配置复杂的ThingsBoard仪表板说明。

  • 数据处理 - 学习如何使用ThingsBoard规则引擎。

  • 数据分析 - 学习如何使用规则引擎执行基本的分析任务。

  • 硬件样品 - 学习如何将各种硬件平台连接到ThingsBoard。

  • 高级功能 - 学习高级ThingsBoard功能。