立即试用 商务报价
专业版
文档 > 规则引擎 > 入门

本页目录

规则引擎入门

什么是规则引擎?

规则引擎是基于事件开发的一个易于使用的工作流的框架;主要有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 规则节点放入链中并配置如下脚本:

One can use either TBEL (ThingsBoard expression language) or JavaScript to develop user defined functions. We recommend utilizing TBEL as it’s execution in ThingsBoard is much more efficient compared to JS.

We will use this script for data validation:

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

image

We will use this script for data validation:

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}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

image

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

image


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

1
curl -v -X POST -d '{"temperature":24}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

image

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

image

相关文档:

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



下一步

  • 安装指南 - 学习如何在各种操作系统上安装ThingsBoard。

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

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

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

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

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

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