【开源学习】TB-gateway -- 基本配置与使用
更新日志:
- 20240131 版本: - 新增 docker 安装部署时与版本相关的问题;- 全部配置文件替换为 tb-gateway 版本 3.4.2,更新配置详解: - 主配置文件由 yaml 格式改变为 json 格式配置,可配置内容增加;- mqtt 连接器配置内容增加;- modbus 连接器配置新增 slave 配置,删除 device 配置;- 全部内容重新测试,测试验证图片更新;- 新增自定义连接器官方示例的配置测试以及配置步骤总结;- 注:3.4 版本 modbus 协议存在问题;3.4.3、3.4.4 版本 opcua 协议存在问题!
tb-gateway 安装部署
官方为 ThingsBoard-Gateway 提供了多种安装部署方案,可以根据不同系统进行安装。
centOS 7 安装(不推荐)
采用 centOS 7 作为部署服务器,具体安装步骤如下(注:采用该方法安装2.7以上版本时存在问题,安装会失败):
- 下载 ThingsBoard-Gateway 安装包:
wget https://github.com/thingsboard/thingsboard-gateway/releases/latest/download/python3-thingsboard-gateway.rpm
- 使用 yum 工具安装 ThingsBoard-Gateway:
sudo yum install-y ./python3-thingsboard-gateway.rpm
- 完成后查看 ThingsBoard-Gateway 的运行状态:
systemctl status thingsboard-gateway
此时服务运行可能会报错,因为还没有对服务的相关配置进行更改。
Docker 安装(推荐)
服务器安装 docker 后,直接执行以下命令执行安装最新发行版本(本手册版本为 3.4):
docker run -d-it-v ~/.tb-gateway/logs:/thingsboard_gateway/logs -v ~/.tb-gateway/extensions:/thingsboard_gateway/extensions -v ~/.tb-gateway/config:/thingsboard_gateway/config --name tb-gateway -p60000-61000:60000-61000 --restart always thingsboard/tb-gateway
其中,-v 指令后冒号之前的文件路径为容器内部文件的挂载位置:
~/.tb-gateway/logs
:日志挂载路径;~/.tb-gateway/extensions
:网关扩展目录挂载路径(各种协议连接器);~/.tb-gateway/config
:配置文件挂载路径;
安装完成后,容器将自动启动,此时查看日志将看到网关连接存在错误,需要修改配置文件。
注:使用 docker 进行安装部署时,需要注意 docker 版本问题,不同版本的 docker 可拉取到的最新 tb-gateway 镜像的版本不同! 使用
docker --version
命令可查看 docker 版本。
- 使用 docker 版本为 18.03.1-ce 时,tb-gateway 最新版本镜像为 2.9;
- 使用 docker 版本为时,tb-gateway 最新版本镜像为 3.4.4(截至 2024-01-27);
【2024-01-27】注:版本 3.4.4\3.4.3 在使用 opcua 协议时存在问题。
建议使用 3.4.2 版本!,本文所有测试及配置内容均为 3.4.2 版本。
tb-gateway 通用配置文件
采用 rpm 安装包进行安装的配置文件路径为
/etc/thingsboard-gateway/config
,使用 docker 安装的配置文件则在宿主机的挂载路径
~/.tb-gateway/config
。该文件夹内包含有基础配置文件 tb_gateway.json,以及各种协议的配置文件,如 mqtt.json、modbus.json、opcua.json 等。
通用的基础配置文件 tb_gateway.json 用于配置到 thingsboard 平台的连接、存储模式以及各种协议连接器。
连接配置模块 thingsboard
该模块中主要配置网关到平台的连接参数,核心参数包括:
host
:配置 tb 平台服务器地址;port
:配置 tb 平台网关消息接收的端口,默认为 1883(即平台 MQTT 服务器端口);remoteShell
:官方未解释,与配置远程 shell 指令相关(后续补充),默认 false;remoteConfiguration
:官方未解释,配置是否使用远程配置(3.4.2 以后版本新功能),建议 false;statistics
:配置统计收集数据并发送 tb 作为网关设备的属性进行存储(若需要使用的话需要额外的配置文件对要采集的参数进行定义,此处暂不讲解);-enable
:配置是否启用该功能;-statsSendPeriodInSeconds
:配置统计收集数据的传输间隔,默认为 3600;-configuration
:配置采集数据配置文件;deviceFiltering
:该功能是可选的,用于配置设备筛选,可以配置筛选允许向 tb 发送数据的设备(若需要使用的话需要额外的配置文件定义筛选设备的规则,此处暂不讲解);-enable
:配置是否启用该功能;-filterFile
:配置设备过滤配置文件;maxPayloadSizeBytes
:官方未解释,最大的消息负载字节数,默认 1024;minPackSendDelayMS
:配置发送数据包之间的延迟,配置过小会导致 CPU 使用量上升;minPackSizeToSend
:官方未解释,配置最小的发送数据包大小,默认 500;checkConnectorsConfigurationInSeconds
:官方未解释,配置检查连接器配置的时间,默认 60 秒;handleDeviceRenaming
:官方未解释;security
:安全配置;-accessToken
:配置 tb 平台上网关设备对应的 token;qos
:mqtt 协议消息质量等级,默认为 1;checkingDeviceActivity
:该功能是可选的,用于配置监控设备的活动;如果对该部分内容进行了配置,网关将每个一段时间对设备的活动状态进行检查;-checkDeviceInactivity
:配置是否启用该功能;-inactivityTimeoutSeconds
:配置设备的活跃超时时间,超过该时间的没有响应的设备将被认为处于非活跃状态,默认 200 秒;-inactivityCheckPeriodSeconds
:配置设备活跃性检查的周期,默认 500 秒;
存储配置模块 storage
存储配置模块主要用于设置数据发送到 tb 平台之前如何进行保存,即采集数据的持久化配置,tb-gateway 提供了三种持久化的方式,分别为:
memory
:内存存储,将接收到的数据保存到 RAM 内存中;file
:文件存储,将接收到的数据保存到硬盘上;sqlite
:sqlite 存储,将接收到的数据保存到 .db 文件中;
通过
type
参数可以指定上述三种模式,并对各模式中的参数进行配置,网关默认设置为内存存储模式,其可配置参数包括:
read_records_count
:从存储中获取并发送至 tb 平台的消息数量;max_records_count
:存储中可存储的最大消息数量(超出的消息将丢失);
配置示例:
"storage":{
"type":"memory","read_records_count":100,"max_records_count":100000}
选用文件存储模式时,其可配置参数包括:
data_folder_path
:max_file_count
:max_read_records_count
:max_records_per_file
:
配置示例:
"storage":{
"type":"file","data_folder_path":"./data/","max_file_count":10,"max_read_records_count":10,"max_records_per_file":10000}
选用 sqlite 存储模式时,其可配置参数包括:
data_file_path
:messages_ttl_check_in_hours
:messages_ttl_in_days
:
配置示例:
"storage":{
"type":"sqlite","data_file_path":"./data/data.db","messages_ttl_check_in_hours":1,"messages_ttl_in_days":7}
远程调用配置模块 grpc
该模块目前未测试,官方文档未进行解释,待验证;
连接器配置模块 connectors
该模块用于配置要启动的连接器,每一个连接器需要执行下列 3 个参数:
useGRPC
:可选配置参数,用于配置当前连接器是否开启 rpc 功能,默认为 true;name
:指定连接器名称;type
:连接器类型;configuration
:连接器的配置文件名称;
配置示例:
"connectors":[{
"type":"mqtt","name":"MQTT Broker Connector","configuration":"mqtt.json"},{
"type":"modbus","name":"Modbus Connector","configuration":"modbus.json"},{
"type":"opcua","name":"OPC-UA Connector","configuration":"opcua.json"}]
tb-gateway 基础使用
gateway 连接至 tb
在修改通用配置文件 tb_gateway.yaml 之前,首先需要在 tb 平台上创建对应的网关设备,如下所示:
完成网关设备创建后,修改 tb_gateway.yaml 配置文件,配置 host、port 以及 accessToken 字段,分别为 tb 平台的服务地址、tb 平台 MQTT 端口号以及网关设备的访问令牌(设备详情中点击“复制访问令牌”按钮获取,也可自定义,详见 thingsboard 使用手册)。简单的配置示例如下:
{
"thingsboard":{
"host":"192.168.XX.XXX","port":1883,"remoteShell":false,"remoteConfiguration":true,"statistics":{
"enable":true,"statsSendPeriodInSeconds":3600},"deviceFiltering":{
"enable":false,"filterFile":"list.json"},"maxPayloadSizeBytes":1024,"minPackSendDelayMS":200,"minPackSizeToSend":500,"checkConnectorsConfigurationInSeconds":60,"handleDeviceRenaming":true,"security":{
"type":"accessToken","accessToken":"YqZ0moqfS1srMt4OXDWP"},"qos":1,"checkingDeviceActivity":{
"checkDeviceInactivity":false
版权归原作者 情绪大瓜皮丶 所有, 如有侵权,请联系我们删除。