热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Thingsboard开源IoT物联网平台入门

1.Thingsboard简介ThingsBoard是一个基于Java的开源的物联网平台,用于数据收集、处理、可视化和设备管理。它使用物联网行业的标准协议࿰

b5405579f8b3cdc06573442dd62cd6d6.png

1. Thingsboard 简介

ThingsBoard 是一个基于Java的开源的物联网平台,用于数据收集、处理、可视化和设备管理。它使用物联网行业的标准协议(MQTT、CoAP和HTTP)实现设备连接,并支持云和本地部署。ThingsBoard 具有可扩展性、容错性和高性能,因此永远不会丢失数据。

Thingsboard 分为专业版和社区版,社区版是开源的,专业版是收费的。thingsboard 提供了30多个可自定义的小部件,允许为大多数物联网用例构建最终用户自定义仪表板。官网地址:http://thingsboard.io/

70d08d566e943cf2b5fc945e75c5215f.png

2. Thingsboard 基本特点

提供设备、资产和客户,并定义它们之间的关系。

  • 警报管理:分析传入的遥测数据并通过复杂的事件处理触发警报。

  • 设备管理:使用远程过程调用(RPC)控制设备。根据设备生命周期事件,REST API 事件,RPC 请求等构建工作流

  • 可扩展性:可水平扩展的平台,使用领先的开源技术进行构建。

  • 数据可视化: 从设备和资产收集并可视化数据。提供了现成的30个可配置小部件,并能够使用内置编辑器创建自己的小部件。内置线图,数字和模拟仪表,地图等等。

  • 容错:没有单点故障,集群中的每个节点都是相同的。没有主人工人或热备用人员。自动检测到节点故障。可以在不停机的情况下更换故障节点。使用可靠的 NoSQL 数据库复制持久数据。

  • 强大而高效:单个服务器节点可以处理成千上万个设备,具体取决于用例。ThingsBoard 集群可以处理数百万个设备。

  • 可自定义的:通过可自定义的小部件和规则引擎节点,轻松添加新功能。使用可自定义的规则链,窗口小部件和传输实现来扩展默认平台功能。除了MQTT,CoAP和HTTP支持之外,ThingsBoard用户还可以使用自己的传输实现或自定义现有协议的行为。

  • 持久:永远不会丢失您的数据。

  • 遥测数据收集功能: 设计动态且响应迅速的仪表板,并向您的客户提供设备或资产遥测和见解。可以可靠地收集和存储遥测数据,以应对网络和硬件故障。使用可自定义的Web仪表板或服务器端API访问收集的数据。

3. Thingsboard架构

Thingsboard有两种架构形式,微服务架构和 Monolithic 架构,两个架构的基本功能一致,该文档主要介绍 Monolithic 架构,架构图如下:


Device端:数据采集,需要支持MQTT或HTTP等协议
通讯通道:数据采集监听
规则引擎:对数据进行过滤,处理核心业务规则服务侧 API 和 GW
用户端:用户和应用

88e666d48cbc2a7e5f4657d088e35649.png

1. 设备连接

支持MQTT、CoAP、HTTP(S) 等协议,通过以上协议设备可以连接到信息网络,比如4G、5G。

2. 引擎规则

TingsBoard Rule Engine 处理来自设备的信息,并触发称为插件的可配置模块。

3. 核心服务

  • TingsBoard包含一组允许管理管理以下实体的核心服务:

  • 设备及其凭据

  • 规则链及规则节点

  • 租户 Tenants,客户 Customers 和平台的关系是:平台 =>租户 =>客户

  • 小部件和仪表盘

  • 警报和事件

  • 规则能够调用此API的某个子集。例如,规则可以为某些设备创建报警

4. 服务端API网关

每个 ThingsBoard 服务器都为注册用户提供 REST API。system telemetry 服务允许使用REST API 和 websocket 管理属性并获取时间序列数据。系统 RPC 服务提供 REST API 以自定义命令推送到设备。

测量数据处理:

6da366eeb5b89f68f26091c3c8961327.png

RPC 过程:

根据发起者,Thinsboard RPC 功能可以分为两种类型:设备发起的 RPC 调用和服务器发起的 RPC 调用。为了使用更熟悉的名称,我们将源自设备的 RPC 调用命名为客户端 RPC 调用,将源自服务器的 RPC 调用命名为服务器端 RPC 调用。

cdac9a42cb6ebf2e0e7ecc24e7c102fb.png

服务器端RPC调用可以分为单向和双向:

  • 单向RPC请求没有发送确认就发送到设备,并且显然不提供设备的任何响应。仅当在可配置的超时时间内没有与目标设备的活动连接时,RPC调用才会失败。

929f8b61394de2c5cda112183b9638be.png
  • 双向RPC请求被发送到设备,并期望在特定的超时时间内接收到来自设备的响应。服务器端请求将被阻止,直到目标设备回复该请求为止。

8052422d3b4807a402729711e0f952d5.png

规则引擎:

9e278ec3485316111a722b9f84fbfe2d.png


规则:过滤器,处理器,Action
插件:处理消息,服务侧API请求,WebSocket和应用,持久化和查询事件,插件间RPC通信

929ce0aff1c7ab582e8d5e49e5b0b277.png

遥测插件-系统插件,负责处理与设备属性和遥测有关的各种请求。

RPC 插件-允许使用 REST API 对设备执行 RPC 调用。RPC 调用将使用支持的网络协议传递到设备。
设备消息传递插件-允许分配给相同客户交换事件的设备。
发送邮件插件-允许发送电子邮件。您可以指定邮件服务器属性。有关更多详细信息,请参见插件文档。
Kafka插件-允许将遥测消息推送到Apache Kafka。有关更多详细信息,请参见插件文档。
RabbitMQ插件-允许将遥测消息推送到RabbitMQ。有关更多详细信息,请参见插件文档。
REST API呼叫插件-允许使用REST API将遥测消息推送到外部服务器。有关更多详细信息,请参见插件文档。时间RPC插件-允许从设备发送RPC请求以获取当前服务器端时间戳。

IoT网关:

在所有的物联网中,IOT 网关是非常重要的一环,大部分(60%-80%)设备都属于哑终端设备(不支持 IP),这些设备都需要通过网关才能够接入到云平台。因此 Thingsboard 支持通过 IOT 网关进入到平台,下面是 IOT 网关的整体架构图。

db2ee9e71c96d48ea5bed9d79c9c39c3.png


目前网关支持:

  • MQTT扩展,用于控制,配置和收集使用现有协议连接到外部MQTT代理的IoT设备的数据。

  • OPC-UA扩展,用于从连接到OPC-UA服务器的IoT设备收集数据。

  • Sigfox扩展,用于从连接到Sigfox Backend的IoT设备收集数据。

  • Modbus扩展,用于从通过Modbus协议连接的物联网设备收集数据。

4. Thingsboard简单应用

4.1 Thingsboard的安装部署

开发环境要求:
JDK 1.8版本,官方下载地址:oracle.com/java/technol
Node.js,官网地址:nodejs.org/en/download/
Maven 3.6以上, 下载地址:maven.apache.org/download/

4.2 Thingsboard的数据推送

以租户管理员(tenant@thingsboard.org / tenant)的身份来完成入门操作

d54a64fefd0a5d77d9b87f9dde5e32c2.png

登录成功后,进入到管理页面,在这里我们能够创建资产、设备和客户,以及自定义仪表盘实时展示数据。

563dfe85e7452afc556c390454c3bda2.png

4.2.1 创建资产

在主页面点击左侧栏 资产 项,进入资产管理页面,单击左上角 添加资产 添加新资产 ,进入添加页面填写相关属性值:名称为 Building A ,资产类型为 Building;

f31364edd16f20ed19ee6e334d7e4500.png

4.2.2 添加设备

在主页面点击左侧栏 设备 项,进入设备管理页面,单击左上角 添加设备 添加新设备 ,进入添加页面填写相关属性值:名称为 Thermometer A-1 ,设备类型为 thermometer;填写完成后,添加设备 Thermometer A-2,步骤和上面一致;点击 添加 后,即可在所有设备页面看到新增的 Thermometer A-1 、Thermometer A-2 设备;

b9101b6870956b860ef92e4abd24a1cb.png

4.2.3 定义资产和设备

创建完设备和资产后,需要定义资产和设置之间的关联关系。在 资产管理页面 单击上述创建的 Building A 资产,弹出资产详情页面,切换到 关联 tab页;点击 添加 按钮,进入添加关联页面,关联类型为 Contains 实体类型为 设备,选择刚刚创建的设备Thermometer A-1 、Thermometer A-2 分别添加;

ede4a1c859789e3dd2128bd3ac73e9a5.png

4.2.4 从设备推送数据

使用规则链连续推送数据,在主页面点击左侧栏 规则链库 项,进入规则链管理页面,单击 添加规则 添加新规则,弹出添加规则页面填写属性值,名称为 Temperature emulation;

b48266db073e67b5863c36a844f48c5d.png

添加完成后,单击 Open rule chain 打开 Temperature emulation 规则,进入编辑页面,添加 generator 节点,填写相关属性值如下所示;

8a93418383a3541528b0619b1482ad2c.png

拖入 rule chain 节点到编辑面板,规则链选择已存在的 Root Rule Chain 规则,点击添加;

266c8f1aab6b57ea284786f4bd3924ff.png

链接 Temperature generator 和 Root Rule Chain 节点,条件为 Success ;

1c5162bf413d2f3e37056e5713593d6f.png

添加完成后点击 应用更改 ,在设备 Thermometer A-1 最新遥测 tab页面即可看到实时变化的温度数据;

d271129861a90f7026f74729faeaa4da.png

往期推荐

1、HarmonyOS 到底是不是Android套壳?

2、5G将是一个彻底失败的通信技术吗?

3、AWS IoT 物联网平台 MQTT 通讯模式

4、2021中国 IoT物联网平台对比报告

78a176783620398e2d3c35fa905e4196.gif


推荐阅读
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • MQTT协议:轻量级消息传输的基石
    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种基于发布/订阅模式的轻量级通信协议,适用于低带宽、高延迟或不可靠的网络环境。该协议基于TCP/IP构建,由IBM在1999年首次推出,旨在通过最小化网络流量和代码量,为远程设备提供高效、可靠的消息传输服务。 ... [详细]
  • 本文详细记录了作者从7月份的提前批到9、10月份正式批的秋招经历,包括各公司的面试流程、技术问题及HR面的常见问题。通过这次秋招,作者深刻体会到了技术积累和面试准备的重要性。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • STM32代码编写STM32端不需要写关于连接MQTT服务器的代码,连接的工作交给ESP8266来做,STM32只需要通过串口接收和发送数据,间接的与服务器交互。串口三配置串口一已 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
author-avatar
呼和浩特-时尚范儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有