之前我们已经学习了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"

验证结果

邮件规则日志

至此 邮件发送成功!

ThingsBoard 规则引擎-邮件通知相关推荐

  1. Thingsboard规则引擎详解,TB规则引擎如何使用

    一.规则引擎是什么? 官方解释:"规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业 ...

  2. thingsboard 规则引擎结点功能总结

    1. 概述 本文结合官方文档和v2.4.3版本源码总结了各规则引擎结点的功能. 官方文档的有些描述不太清楚,需要结合源码理清. 2. 核心概念 规则引擎是一个事件处理系统. 能对由设备和资产上传的消息 ...

  3. 【我的物联网成长记11】8招带你玩转规则引擎

    [摘要] 华为云物联网平台提供的规则引擎包括数据转发和设备联动等多种能力,这些能力都要怎么使用?本文教您8招最常用的用法,带您玩转规则引擎. 规则引擎是华为云物联网平台提供的一种能力,用户对接入平台的 ...

  4. 使用 Drools 规则引擎实现业务逻辑,可调试drl文件

    http://www.srcsky.com/tech/arts/389.html 代码下载http://download.csdn.net/detail/zhy011525/2462313 使用 Dr ...

  5. 规则引擎:大厂营销系统资格设计全解

    业务进行营销活动目的是用最少的钱实现更好的营销效果,此时就需要针对营销活动的资格进行控制,其中就包括了用户身份.用户所处的环境等等一系列因素的考虑,且为了防止恶意套取营销费用和做到营销效果的持续性,会 ...

  6. 有关Drools业务规则引擎的完整教程

    与往常一样,我们在配套存储库EmailSchedulingRules中共享本教程中提供的代码. 业务规则很好地表现了某些领域的逻辑. 它们之所以有效,是因为它们可以直观直观地接近许多类型的领域专家的思 ...

  7. 复杂风控场景下,如何打造一款高效的规则引擎

    | 在互联网时代,安全已经成为企业的命脉.美团信息安全团队需要采用各种措施和手段来保障业务安全,从而确保美团平台上的用户和商户利益不会受到侵害. 本文主要介绍了美团在打造自有规则引擎Zeus(中文名& ...

  8. drools规则引擎技术指南_物联网规则引擎技术

    物联网应用程序设计与典型的IT解决方案大不相同,因为它将物理操作技术(OT)与传感器.致动器和通信设备连接起来,并将数字信息技术(IT)与数据.分析和工作流连接起来. 在企业环境中,物联网非常复杂,这 ...

  9. 关于物联网规则引擎技术,你想要知道的都在这儿!

    摘要:本文将从设备联动的触发条件和执行动作,以及数据转发的触发事件和转发目标两大部分,具体阐述规则引擎的原理. 规则引擎就是指用户在华为云平台对接入的设备设定相应的规则,然后在条件满足响应的规则后,平 ...

最新文章

  1. tomcat限速_WEB服务的下载限速(二)(限速模块安装与配置)
  2. 如何 Credit Hold 客户
  3. oracle9i用expdp导出全库,Linux下Oracle 11g数据库全库自动备份(EXPDP)
  4. ASP.NET中PostBack和ViewState
  5. UriComponentsBuilder 拼接URL、解析URL
  6. 记录一下在mac上做一个usb linux安装盘
  7. 第三次学JAVA再学不好就吃翔(part106)--字符流
  8. asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)
  9. 深入理解 JVM Class文件格式(一)
  10. VS2010 C# 4.0新特性一览
  11. vue组件之间的数据共享
  12. 油猴脚本(Tampermonkey)的简介
  13. 有负数c语言除法,C语言负数的除法和求余运算
  14. 如何在华为应用市场上传APP
  15. Java 解析epub格式电子书,helloWorld程序,附带源程序和相关jar包
  16. 如何设计USB TYPE-C接口的显示器和电视机,形态三独立功能的双USB-C接口 +一个HDMI接口的显示器
  17. C++学习笔记——非静态成员函数的非法调用错误
  18. 对基于ubuntu18.04搭建双线adsl路由器和私有云服务器(samba、ftp和http)一文的更正2
  19. Elasticsearch API接口介绍
  20. 使用Canvas实现网页鼠标签名效果

热门文章

  1. SWUST OJ 954单链表的链接
  2. 【读书随记】周末充电,学习Java更轻松(文末送书)
  3. 上交凯原|法学大陆天花板,本外校录取比1:9,双非含量高达12% | 上海交通大学凯原法学院2022届推免大数据
  4. 录制PPT课件哪个录屏软件好?这3款值得收藏
  5. 专访腾讯云谢岳峰:只做连接器,五大措施支持渠道伙伴成长
  6. 大吉大利今晚吃鸡——枪械篇
  7. 3译码器与半加器的学习
  8. 14个SpringBoot优化小妙招
  9. AutoCAD 2012安装错误,与.net framework (1603错误)以及ms2005vc++的问题。
  10. 我对软件应聘学生的建议