基于ARMxy实现ThingsBoard Gateway SNMP V3.0转MQTT实测!

2026-03-11 16:36:46 钡铼技术
工业物联网关

钡铼技术联合Thingsboard技术研讨会三月启航!

一、概述

ThingsBoard IoT Gateway 的 SNMP 连接器核心作用是从 SNMP 设备采集数据并上传至 ThingsBoard 平台。需要说明的是,SNMP 连接器本身并不直接支持 SNMP v3 到 MQTT 的协议转换,但可借助 ThingsBoard 生态中的 “SNMP 数据采集 + 内部转发” 机制间接实现该功能。若需启用 SNMP v3 的安全认证特性,需在相关配置中准确设置认证与加密参数。

本实测基于公司 BL410 硬件平台完成,该平台搭载 ARM 架构,性能稳定且兼容性强。实测结果表明,BL410 可完美支持 SNMP v3.0 转 MQTT 的转发功能,同时公司所有 ARMxy 系列硬件均具备该适配能力,可为相关项目提供灵活的硬件选型方案。

工业物联网关

二、前置条件

l基础环境:已安装 Python 3.8 及以上版本,且在 BL410 硬件平台成功部署 ThingsBoard Gateway;

l测试设备:通过 snmpd 在 BL410 平台搭建本地 SNMP v3 模拟代理(用于替代真实 SNMP 设备);

lMQTT客户端:安装 MQTTX 或 mosquitto_sub 工具(用于验证 MQTT 数据转发效果);

lSNMP测试工具:用于验证 SNMP v3.0 设备的网络可达性;

lThingsBoard 服务:为 MQTT 消息的接收端,需确保正常运行。

三、核心操作步骤(验证 SNMP v3.0 转 MQTT)

步骤1:搭建 SNMP v3 模拟代理(snmpd)

1. 安装 snmpd工具,执行以下命令完成 snmpd 及相关依赖的安装:

sudo apt update && sudo apt install -y snmpd snmp

工业物联网关

2.配置 SNMP v3 用户(关键步骤:创建认证+加密的 SNMP v3 用户)

执行以下命令创建SNMP v3用户,指定认证协议为 SHA、加密协议为AES并设置对应密钥:

sudo net-snmp-config --create-snmpv3-user -a SHA -A "AuthPass123!" -x AES -X "PrivPass123!"snmpv3user

工业物联网关

3. 修改 snmpd 配置文件

编辑sudo nano /etc/snmp/snmpd.conf 注释原有默认配置,添加以下内容:

工业物联网关
工业物联网关

4.重启 snmpd 并设置开机自启

sudo systemctl restart snmpd

sudo systemctl enable snmpd

工业物联网关

5.验证SNMP v3访问,执行以下命令验证 SNMP v3 代理是否正常工作,若返回系统描述信息则表示配置成功:

snmpget -v3 -l authPriv -u snmpv3user -a SHA -A "AuthPass123!" -x AES -X "PrivPass123!" 127.0.0.1 1.3.6.1.2.1.1.1.0

工业物联网关

步骤2:安装 MQTT 客户端(验证转发)

执行:sudo apt install -y mosquitto-clients

工业物联网关

步骤3:配置 ThingsBoard Gateway(实现SNMP v3 → MQTT转发)

1.修改 Gateway 主配置(tb_gateway.json),打开 config/tb_gateway.json,确保启用 SNMP 连接器:

工业物联网关

2.配置snmp.json文件,编辑config/snmp.json文件,按以下格式配置 SNMP v3 连接参数、数据采集规则等:

{

"timeout":5,

"retries":3,

"devices":[

{

"deviceName":"SNMPv3_Router",

"deviceType":"snmp",

"ip":"192.168.1.XXX",// SNMP设备IP

"port":161,

"pollPeriod":5000,

"version":"3",//指定SNMP版本为v3

"community":"public",

"security":{// SNMPv3 认证加密配置

"username":"snmp_user_XXX",

"securityLevel":"authPriv",

"authProtocol":"SHA",

"authKey":"Auth_Key_XXX@123",// 认证密钥

"privProtocol":"AES",

"privKey":"Priv_Key_XXX@123"// 加密密钥

},

"attributes":[

{

"key":"设备型号描述",

"method":"get",

"oid":"1.3.6.1.2.1.1.1.0",

"timeout":6

}

],

"telemetry":[// 采集设备遥测数据

{

"key":"设备系统信息",

"method":"table",

"oid":"1.3.6.1.2.1.1"

}

]

}

],

"logLevel":"INFO",

"name":"SNMP",

"enableRemoteLogging":false,

"id":"XXX-XXX-XXX-XXX-XXX", // 连接器唯一ID

"configVersion":"3.8.1"

}

3.验证SNMP连接有效性,再次执行SNMP v3访问命令,确认Gateway与SNMP模拟代理的连接正常:

snmpget -v3 -l authPriv -u snmpv3user -a SHA -A "AuthPass123!" -x AES -X "PrivPass123!" 127.0.0.1 1.3.6.1.2.1.1.1.0

步骤4:测试MQTT基本功能

1.订阅测试主题

mosquitto_sub -h 127.0.0.1 -p 1883 -t "test/#" -v

工业物联网关

2.发布测试主题

mosquitto_pub -h 127.0.0.1 -p 1883 -t "test/hello" -m "world"

工业物联网关

步骤5:监听 MQTT 主题(验证转发)

打开新终端,执行以下命令监听ThingsBoard GatewayMQTT 转发的 SNMP 数据主题:

mosquitto_sub -h 127.0.0.1 -p 1883 -t "v1/gateway/telemetry" -v

工业物联网关

四、ThingsBoard 云平台连接说明

ThingsBoard云平台连接与SNMP设备连接为两个独立模块,基于 BL410 平台的配置如下:

1.SNMP连接器 → 路由器设备(SNMP v3 通信)

l连接地址:使用路由器的本地网络IP

l通信端口:161

l协议版本:SNMPv3

2.SNMP连接器 → ThingsBoard云平台(MQTT通信)

l连接地址:thingsboard.cloud(ThingsBoard 云平台域名)

l通信端口:1883(MQTT默认端口)

l功能用途:将BL410设备采集到的SNMP数据上传至云平台

五、硬件适配说明

1. 实测硬件型号

本次实测选用公司 BL410 硬件平台,该平台核心参数如下:

l架构:ARM aarch64

l设备:BL410设备

l兼容性:完美支持 Python 3.8+、ThingsBoard Gateway 及 snmpd 工具部署

2. 系列硬件适配性

除 BL410 外,公司所有 ARMxy 系列硬件(如 BL330、BL340 等)均具备同等适配能力:

l统一基于 ARM 架构,系统环境兼容性一致;

l硬件性能满足 SNMP 数据采集、协议转换及 MQTT 转发的资源需求;

l支持 Ubuntu 等主流 Linux 发行版,可直接复用本次配置流程。

六、验证结果说明:

ThingsBoard平台中,SNMP 连接器显示为“SYNC”状态,表明BL410设备已成功连接至ThingsBoard平台,配置版本为v3.8.1,且SNMP v3的认证与加密功能已生效:

工业物联网关

SNMPv3_Router设备:

成功采集到 “设备型号描述”(OID:1.3.6.1.2.1.1.1.0),数据值为设备系统描述字符串:

工业物联网关

通过“table”方式采集到设备系统信息表格数据,关键字为 “设备系统信息”,数据更新时间正常:

工业物联网关

SNMPv3_Router_Custom设备:

工业物联网关

成功采集到关键字对应的表格数据,包含设备网络接口等相关信息,数据更新时间与采集周期一致:

工业物联网关


标签: BL410 ARMxy
微信公众号

首页
产品
案例
联系钡铼