The IoT Gateway 是一个基于 Linux 的支持 Python 3.7+ 的微机上运行的软件组件。
为了将物联网网关连接到 ThingsX 服务器,首先需要提供网关凭据。我们将使用访问令牌凭证作为最简单的凭证。有关详细信息,请参阅设备身份验证选项。
版本说明:以 3.0.1 版本进行演示。
功能点分析
功能说明
- OPC-UA 连接器,从连接到 OPC-UA 服务器的设备收集数据。
- MQTT 连接器来收集发布到外部 MQTT 代理的数据。
- Modbus 连接器从 Modbus 服务器和从服务器收集数据。
- BLE 连接器从 BLE 设备收集数据。
- 请求连接器从 HTTP API 收集数据。
- CAN 连接器采用 CAN 协议进行数据采集。
- BACnet 连接器从使用 BACnet 协议的设备收集数据。
- ODBC 连接器从 ODBC 数据库收集数据。
- 从自定义协议收集数据的自定义连接器。
- 收集到的数据的持久性,以保证在网络和硬件故障情况下的数据传输。
- 自动重新连接到 ThingsX 集群。
- 简单而强大的传入数据和消息到统一格式的映射。
- 远程日志记录功能,通过 ThingsX WEB 接口监视网关状态。
- RPC 网关通过 ThingsX WEB 接口控制和获取网关信息的方法。
网关架构
架构物联网网关是一个基于组件的软件工程,设计用于运行在基于 Linux 的支持 Python 3.7+ 的微型计算机上。ThingsX 物联网网关的主要组件如下。
连接器
此组件的用途是连接到外部系统(例如 MQTT 代理或 OPC-UA 服务器)或直接连接到设备(例如 Modbus、 BLE 或 CAN)。一旦连接,连接器就是来自这些系统的轮询数据或订阅更新。轮询与订阅取决于协议能力。例如,我们对 MQTT 连接器使用订阅模型,对 Modbus 和 CAN 使用轮询。连接器还可以直接或通过外部系统将更新推送到设备。可以使用自定义指南定义自己的连接器。
转换器
转换器负责将数据从协议特定格式相互转换为 ThingsX 格式。转换器由连接器调用。转换器通常特定于连接器支持的协议。有上行和下行转换器。上行转换器用于将特定协议的数据转换为 ThingsX 格式。下行转换器用于将来自 ThingsX 的消息转换为特定的协议格式。可以使用自定义指南定义自己的转换器。
事件存储
事件存储用于临时存储连接器生成的遥测和其他事件,直到它们被传送到 ThingsX。事件存储支持两种实现: 内存中队列和持久文件存储。这两种实现都确保在网络中断的情况下最终交付设备数据。内存中队列使 IO 操作最小化,但是在网关进程重新启动的情况下可能会丢失消息。持久性文件存储在进程重新启动后仍然存在,但是会对文件系统执行 IO 操作。
ThingsX 客户端
网关通过 MQTT 协议与 ThingsX 通信,并使用这里描述的 API。ThingsX 客户端是一个单独的线程,它在与 ThingsX 的连接处于活动状态时轮询 Event Storage 并传递消息。ThingsX 客户端支持监视连接、批处理事件以提高性能和许多其他特性。
网关服务
网关服务负责连接器、事件存储和 ThingsX 客户端的引导。此服务收集并定期向 ThingsX 报告有关传入消息和已连接设备的统计数据。网关服务持久化连接的设备列表,以便在网关重新启动时能够重新订阅设备配置更新。
thingsboard 网关快速安装
通过 docker 安装
Windows 用户运行
docker run -it ^
-v %HOMEPATH%\tb-gateway\config:/thingsboard_gateway/config ^
-v %HOMEPATH%\tb-gateway\extensions:/thingsboard_gateway/extensions ^
-v %HOMEPATH%\tb-gateway\logs:/thingsboard_gateway/logs ^
--name tb-gateway ^
-p 5000:5000 ^
--restart always thingsboard/tb-gateway
运行(使用 ENV 变量)
docker run -it
-e host=thingsboard.cloud
-e port=1883
-e accessToken=ACCESS_TOKEN
Linux or Mac 用户也是同理。
通过 Linux 安装包的方式进行安装
根据是 ubuntu 还是 CentOS 系统,拿到对应平台的安装包文件进行安装。
通过 pip 进行安装
通过源码搭建环境
Linux 系统通过源代码安装
以 Ubuntu 系统进行操作,从源代码安装 ThingsX 网关,见以下步骤:
1. 使用 apt 将所需的库安装到系统中:
sudo apt install python3-dev python3-pip libglib2.0-dev git
2. 克隆指定版本的网关源代码:
克隆最新版本
git clone --depth 1 --recurse-submodules https://github.com/thingsboard/thingsboard-gateway.git
或者 curl 特定版本
curl -LJO https://github.com/ThingsX/ThingsX-gateway/archive/refs/tags/3.0.1.tar.gz
3. 进入 ThingsX-gateway 目录:
cd ThingsX-gateway
4. 进入项目根目录,使用 setup.py 脚本安装 python 模块:
python3 setup.py install
5. 创建“日志”文件夹:
mkdir logs
6. 将网关配置为与您的 ThingsX 平台实例一起使用
这一步需要自行配置 connector 连接器。
7. 运行网关,检查安装结果:
python3 ./ThingsX_gateway/tb_gateway.py
问题记录
运行报错 AttributeError: module ‘google.protobuf.descriptor’ has no attribute ‘_internal_create_key’
解决方案:尝试升级 protobuf 包 pip install --upgrade protobuf
参考文档
https://thingsboard.io/docs/iot-gateway/what-is-iot-gateway/