项目介绍

ThingsBoard IoT Gateway是一个由ThingsBoard官方原创且开源的物联网软网关,使用且仅使用MQTT协议与TB平台(ThingsBoard IoT Platform)进行通讯,为TB平台提供支持更多协议的数据收集功能和可能的设备管理功能,允许各类设备提交数据至TB平台。

简介

Thingsboard IoT Gateway是一个开源的解决方案,它允许你将连接到传统系统和第三方系统的设备与Thingsboard集成。

Thingsboard是一个开源的物联网平台,用于数据收集、处理、可视化和设备管理。

TB官方常用"Thingsboard"指代TB平台("Thingsboard IoT Platform"),虽然自称开源,但部分重要功能并不开源

成果展示

MQTT连接器:用于控制、配置和收集来自使用现有协议连接到外部MQTT Broker的物联网设备的数据。 OPC-UA连接器:从连接到OPC-UA服务器的物联网设备收集数据。 Modbus连接器:从通过Modbus协议连接的物联网设备中收集数据。 BLE连接器:从使用Bluetooth Low Energy协议连接的物联网设备中收集数据。 Request连接器:从具有HTTP(S)API端点的物联网设备中收集数据。 CAN连接器:从通过CAN协议连接的物联网设备中收集数据。 BACnet连接器:从通过BACnet协议连接的物联网设备中收集数据。 ODBC连接器:从ODBC数据库收集数据。 REST连接器:创建端点并从传入的HTTP请求中收集数据。 SNMP连接器:从SNMP管理器收集数据。 FTP连接器:从FTP服务器收集数据 自定义连接器:从通过不同协议连接的物联网设备 [^从通过不同协议连接的物联网设备]收集数据。(你可以为需要的协议创建你自己的连接器)。 持久收集数据:保证在网络或硬件故障的情况下的数据交付。 自动重新连接到ThingsBoard集群。 将传入的数据和消息映射到统一格式,简单而强大。 从通过不同协议连接的物联网设备: 默认的自定义连接器仅支持串口(Serial)通信,不符合实际需要。

架构

物联网网关是一个软件组件,旨在运行在支持Python 3.5以上的基于Linux的微型计算机上 [基于Linux的微型计算机上]。ThingsBoard物联网网关的主要组件如上所示。 基于Linux的微型计算机上: 并不是仅基于Linux。由于Python这一编程语言的特性,我们既可以在各操作系统上直接使用Python运行网关代码,也可以在各操作系统中运行被打包成容器的网关。

连接器

该组件的目的是连接到外部系统(如MQTT代理或OPC-UA服务器)或直接连接到设备(如Modbus、BLE或CAN)。一旦连接,连接器要么从这些系统中轮询数据,要么订阅更新。轮询与订阅取决于协议的能力。例如,我们对MQTT连接器使用订阅模式,对Modbus和CAN使用轮询。连接器也能够直接或通过外部系统 [直接或通过外部系统]向设备推送更新。 直接或通过外部系统: 取决于协议、网关连接器的实现、对应协议的设备本身是否支持这么做。

转换器

转换器负责将数据从特定协议格式转换为ThingsBoard格式。转换器是由连接器调用的。转换器通常是针对连接器支持的协议,有上行链路和下行链路[^上行链路和下行链路]转换器。上行链路转换器用于将数据从特定协议转换为ThingsBoard格式。下行链路转换器用于将信息从ThingsBoard格式转换为特定的协议格式。 上行链路和下行链路: 各协议的转换器不一定同时具备上行链路转换器和下行链路转换器。

事件存储

事件存储用于临时存储由连接器产生的遥测和其他事件,直到它们被传递到 ThingsBoard。事件存储支持两种实现方式:内存队列和持久性文件存储。这两种实现方式都能确保在网络中断的情况下,你的设备数据最终能得到传递。内存队列最大限度地减少了IO操作,但在网关进程重新启动的情况下可能会丢失信息。 持久性文件存储在进程重启后仍然存在,但会对文件系统执行IO操作。

网关服务

网关服务负责连接器、事件存储和ThingsBoard客户端的启动。该服务收集并定期向ThingsBoard报告有关传入信息和连接设备的统计数据。网关服务保存连接设备的列表,以便在网关重新启动的情况下能够重新订阅设备配置更新。

官方的架构图有诸多细节未被提到甚至与实际不符,经常导致人在阅读时发生理解错误甚至被误导。对于这些细节,以下是更真实也更实际的网关架构图: