Thingsboard开源平台(一)3.入门案例

Thingsboard开源平台(一)--入门案例

  • 概述
  • 1、以租户管理员登录
  • 2、创建设备和资产
    • 2.1 创建资产
    • 2.2 添加设备
  • 3、定义资产和设备关系
  • 4、从设备推送数据
    • 4.1 使用HTTP接口单点推送
    • 4.2 使用规则链连续推送
  • 5、创建实时用户仪表板
    • 5.1 创建示例仪表板
    • 5.2 新增仪表板状态
    • 5.3 创建警报组件
    • 5.4 建立状态关联
  • 6、定义阈值并触发警报
  • 7、通过邮件推送警报

概述

本章节将演示常用Thingsboard功能的基本用法,基于一个流行的设施监控案例, 展示如何监视建筑物不同部分的温度,如何在温度超过特定阈值时发出警报以及如何可视化收集的数据和警报。通过本章节体验一下Thingsboard的工作流程。

主要内容有了解如何使用MQTT,HTTP或CoAP收集IoT设备数据并在简单的仪表板上对其进行可视化,另外也提供了示例脚本,可以在PC或笔记本电脑上运行这些脚本来模拟设备。具体流程包括:

  • 在系统中创建资产和设备;
  • 定义资产和设备之间的关系;
  • 将数据从设备推送到ThingsBoard;
  • 建立实时的最终用户仪表板;
  • 定义阈值并触发警报;
  • 通过电子邮件推送有关新警报的通知。

1、以租户管理员登录

在Thingsboard开源平台(一)2.软件安装这一章节中,安装完Thingsboard服务之后,提供了用于登陆系统的临时用户,在本章中将以租户管理员([email protected] / tenant)的身份来完成入门操作。
Thingsboard开源平台(一)3.入门案例_第1张图片
登录成功后,进入到管理页面,在这里我们能够创建资产、设备和客户,以及自定义仪表盘实时展示数据。
Thingsboard开源平台(一)3.入门案例_第2张图片

2、创建设备和资产

2.1 创建资产

在主页面点击左侧栏 资产 项,进入资产管理页面,单击左上角 添加资产 =》 添加新资产 ,进入添加页面填写相关属性值:名称为 Building A ,资产类型为 Building
Thingsboard开源平台(一)3.入门案例_第3张图片
点击 添加 后,即可在所有资产页面看到新增的 Building A 资产;
Thingsboard开源平台(一)3.入门案例_第4张图片

2.2 添加设备

在主页面点击左侧栏 设备 项,进入设备管理页面,单击左上角 添加设备 =》 添加新设备 ,进入添加页面填写相关属性值:名称为 Thermometer A-1 ,设备类型为 thermometer
Thingsboard开源平台(一)3.入门案例_第5张图片
填写完成后,添加设备 Thermometer A-2,步骤和上面一致;
Thingsboard开源平台(一)3.入门案例_第6张图片
点击 添加 后,即可在所有设备页面看到新增的 Thermometer A-1Thermometer A-2 设备;
Thingsboard开源平台(一)3.入门案例_第7张图片

3、定义资产和设备关系

创建完设备和资产后,需要定义资产和设置之间的关联关系。在 资产管理页面 单击上述创建的 Building A 资产,弹出资产详情页面,切换到 关联 tab页;
Thingsboard开源平台(一)3.入门案例_第8张图片
点击 添加 按钮,进入 * 添加关联* 页面,关联类型为 Contains 实体类型为 设备,选择刚刚创建的设备***Thermometer A-1*** 、Thermometer A-2 分别添加;
Thingsboard开源平台(一)3.入门案例_第9张图片
Thingsboard开源平台(一)3.入门案例_第10张图片
设备添加完成后,即可在资产***关联***页面查看到 Thermometer A-1Thermometer A-2 设备;
Thingsboard开源平台(一)3.入门案例_第11张图片

4、从设备推送数据

设备创建完成后,我们可以模拟设备实时产生的数据,thingsboard支持HTTP、MQTT或者COAP协议。为了简化演示,将下面将使用HTTP(cURL)协议从本机电脑发送数据到设备。至于在实际生产应用中,请查看连接设备获取所有可用的硬件连接方案以及具体使用示例。

4.1 使用HTTP接口单点推送

安装cURL客户端
Windows 10 b17063 版本后,Windows系统内置了 cURL ;

NOTE: Starting Windows 10 b17063, cURL is available by default.
More info here: https://blogs.msdn.microsoft.com/commandline/2018/01/18/tar-and-curl-come-to-windows/
If you are using older version of Windows OS, you may find official installation guides here: https://curl.haxx.se/

模拟数据推送
HTTP协议api接口如下,其中 $ACCESS_TOKEN 需要替换成设备具体的访问令牌;

# For example, $HOST_NAME in case of local installation:
curl -v -X POST -d "{\"temperature\": 25}" http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

单击设备 Thermometer A-1复制访问令牌,替换掉如上 $ACCESS_TOKEN
Thingsboard开源平台(一)3.入门案例_第12张图片
打开命令行工具,输入HTTP访问接口,发送模拟数据;

C:\WINDOWS\system32>curl -v -X POST -d "{\"temperature\": 25}" http://localhost:8080/api/v1/FYzr6Div7oW7O6UeVRRO/telemetry --header "Content-Type:application/json"

Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> POST /api/v1/FYzr6Div7oW7O6UeVRRO/telemetry HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.55.1
> Accept: */*
> Content-Type:application/json
> Content-Length: 19
>
* upload completely sent off: 19 out of 19 bytes
< HTTP/1.1 200
< Vary: Origin
< Vary: Access-Control-Request-Method
< Vary: Access-Control-Request-Headers
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< Content-Length: 0
< Date: Mon, 13 Jul 2020 02:09:33 GMT
<
* Connection #0 to host localhost left intact

在设备 Thermometer A-1 =》最新遥测 Tab页,可以看到刚刚发送的温度数据;
Thingsboard开源平台(一)3.入门案例_第13张图片

4.2 使用规则链连续推送

在主页面点击左侧栏 规则链库 项,进入规则链管理页面,单击 添加规则 =》添加新规则,弹出添加规则页面填写属性值,名称为 Temperature emulation
Thingsboard开源平台(一)3.入门案例_第14张图片
添加完成后,单击 Open rule chain 打开 Temperature emulation 规则,进入编辑页面,添加 generator 节点,填写相关属性值如下所示;
Thingsboard开源平台(一)3.入门案例_第15张图片
图中生成脚本如下:

var msg = { temperature: +(Math.random()*5 + 25).toFixed(1)};
var metadata = {};
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

拖入 rule chain 节点到编辑面板,规则链选择已存在的 Root Rule Chain 规则,点击添加;
Thingsboard开源平台(一)3.入门案例_第16张图片
链接 Temperature generatorRoot Rule Chain 节点,条件为 Success
Thingsboard开源平台(一)3.入门案例_第17张图片
添加完成后点击 应用更改 ,在设备 Thermometer A-1 最新遥测 tab页面即可看到实时变化的温度数据;
Thingsboard开源平台(一)3.入门案例_第18张图片

5、创建实时用户仪表板

有了上述模拟产生的实时数据之后,即可创建用户仪表板动态的展示设备Temperature A-1温度的变化。

5.1 创建示例仪表板

在主页面点击左侧栏 仪表板库 项,进入规则链管理页面,单击 添加仪表板 =》添加新的仪表板,弹出添加页面填写属性值,名称为 Demo Dashboard
Thingsboard开源平台(一)3.入门案例_第19张图片
添加完成后,单击***打开仪表板*** 进入编辑页面,点击右下角***进入编辑模式*** =》找到右上角 实体别名 =》添加别名
Thingsboard开源平台(一)3.入门案例_第20张图片
点击 添加别名,弹出添加别名页面,名称为 Thermometers,过滤类型为 设备搜索查询,详细信息参考如下页面;
Thingsboard开源平台(一)3.入门案例_第21张图片
点击 保存 按钮;
Thingsboard开源平台(一)3.入门案例_第22张图片
单击 添加新的部件 添加部件,当前包选择 Cards,切换到 最新值 Tab页,选择 实体 这一组件;
Thingsboard开源平台(一)3.入门案例_第23张图片
为部件添加实体数据源,参数选择 Thermometers 关键字选择 Temperature ,以及在 高级 填写实体表格名称为 Thermometers
Thingsboard开源平台(一)3.入门案例_第24张图片
Thingsboard开源平台(一)3.入门案例_第25张图片
完成后效果图如下,可以实时看到温度值在变化:
Thingsboard开源平台(一)3.入门案例_第26张图片

5.2 新增仪表板状态

点击右下角 编辑 进入Demo Dashboard编辑模式,单击左上角 仪表板状态管理 =》 添加仪表板状态,填写状态名 $(entityName): Temperature details 和状态ID temperature_details
Thingsboard开源平台(一)3.入门案例_第27张图片
点击左上角切换仪表板到刚才新增的 Temperature details ,添加实体别名,步骤和上面类似;
Thingsboard开源平台(一)3.入门案例_第28张图片
添加别名,名称为 Current thermometer,过滤类型 实体(仪表板状态)
Thingsboard开源平台(一)3.入门案例_第29张图片
点击 添加新的部件,设置当前包为 Digital gauges,选择倒数第三个;
Thingsboard开源平台(一)3.入门案例_第30张图片
设置部件数据源为刚刚创建的 Current thermometer,同时修改 高级 =》 Mininum value 值为0;
Thingsboard开源平台(一)3.入门案例_第31张图片
Thingsboard开源平台(一)3.入门案例_第32张图片
添加温度值历史可视化组件,添加新的部件 =》 创建新部件,当前包设为 Charts,选择
Timeseries-Flot
Thingsboard开源平台(一)3.入门案例_第33张图片
设置部件数据源为刚刚创建的 Current thermometer,同时修改 设置 =》 标题Temperature history,在 ***高级***中勾选 Display smooth (curved) lines
Thingsboard开源平台(一)3.入门案例_第34张图片
Thingsboard开源平台(一)3.入门案例_第35张图片
Thingsboard开源平台(一)3.入门案例_第36张图片
完成后,调整大小如下所示;
Thingsboard开源平台(一)3.入门案例_第37张图片

5.3 创建警报组件

创建警报组件,添加新的部件 =》 创建新部件,当前包设为 Alarm widgets,单击 警告 组件填写属性值,高级 中名称填写 $(entityName): Alarms
Thingsboard开源平台(一)3.入门案例_第38张图片
Thingsboard开源平台(一)3.入门案例_第39张图片
完成后结果图:
Thingsboard开源平台(一)3.入门案例_第40张图片

5.4 建立状态关联

警报组件创建完成后,进入Demo Dashboard编辑模式,点击 编辑部件 找到 动作 Tab页;
Thingsboard开源平台(一)3.入门案例_第41张图片
添加动作,弹出属性值填写页面, 动作源 选择 点击行名称to_temperature_detail,类型选择 切换到新仪表板状态
Thingsboard开源平台(一)3.入门案例_第42张图片
设置完成后,在Demo Dashboard页面点击Thermometer A-1 设备,将会自动导航到Current thermometer页面;
Thingsboard开源平台(一)3.入门案例_第43张图片
Thingsboard开源平台(一)3.入门案例_第44张图片

6、定义阈值并触发警报

在本节中,我们将为温度设置阈值,模拟高温数据,触发警报;
在主页面点击左侧栏 规则链库 项,进入规则链管理页面,单击 添加规则 =》创建新的规则链,弹出添加页面填写属性值,名称为 Create alarm
Thingsboard开源平台(一)3.入门案例_第45张图片
点击 Open rule chain 进入编辑页面,拖入 script 到容器中,填写名称为 Temperature check,阈值设为 ***msg.temperature > 50 ***;
Thingsboard开源平台(一)3.入门案例_第46张图片
动作 中找到 create alarm 节点,拖入节点并编辑属性值,名称为 Create alarm,类型为 Critical Temperature,并勾选 Propagate 选项;
Thingsboard开源平台(一)3.入门案例_第47张图片
建立节点链接,完成后保存;
Thingsboard开源平台(一)3.入门案例_第48张图片
把新建的 Create alarm 规则链添加到 Root Rule Chain,进入Root Rule Chain编辑页面,添加一个 rule chain 节点,选择规则链为刚刚创建的 Create alarm
Thingsboard开源平台(一)3.入门案例_第49张图片
链接 Save Timeseries 节点到 Create alarm,规则为 Success
Thingsboard开源平台(一)3.入门案例_第50张图片
使用HTTP接口推送超过阈值的温度数据,模拟危险触发警报,代码如下:
注:要把 $ACCESS_TOKEN 替换成设备 Temperature A-1 的访问令牌;

curl -v -X POST -d "{\"temperature\": 55}" http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
C:\WINDOWS\system32>curl -v -X POST -d "{\"temperature\": 55}" http://localhost:8080/api/v1/FYzr6Div7oW7O6UeVRRO/telemetry --header "Content-Type:application/json"

Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> POST /api/v1/FYzr6Div7oW7O6UeVRRO/telemetry HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.55.1
> Accept: */*
> Content-Type:application/json
> Content-Length: 19
>
* upload completely sent off: 19 out of 19 bytes
< HTTP/1.1 200
< Vary: Origin
< Vary: Access-Control-Request-Method
< Vary: Access-Control-Request-Headers
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< Content-Length: 0
< Date: Mon, 13 Jul 2020 06:42:31 GMT
<
* Connection #0 to host localhost left intact

在Demo Dashboard中可以看到,一旦出现超过阈值的温度,将会触发警报;
Thingsboard开源平台(一)3.入门案例_第51张图片

7、通过邮件推送警报

触发警报自动将信息发送到邮件,这一功能我在尝试的时候一直没成功,暂时就不写了。

你可能感兴趣的:(Thingsboard开源平台,java,物联网,Iot)