1 概述
ThingsBoard IoT Gateway 的 SNMP 连接器核心作用是从 SNMP 设备采集数据并上传至 ThingsBoard 平台。需要说明的是,SNMP 连接器本身并不直接支持 SNMP v3 到 MQTT 的协议转换,但可借助 ThingsBoard 生态中的 “SNMP 数据采集 + 内部转发” 机制间接实现该功能。若需启用 SNMP v3 的安全认证特性,需在相关配置中准确设置认证与加密参数。
本实测基于公司 BL410 硬件平台完成,该平台搭载 ARM 架构,性能稳定且兼容性强。实测结果表明,BL410 可完美支持 SNMP v3.0 转 MQTT 的转发功能,同时公司所有 ARMxy 系列硬件均具备该适配能力,可为相关项目提供灵活的硬件选型方案。
2 前置条件
- 基础环境:已安装 Python 3.8 及以上版本,且在 BL410 硬件平台成功部署 ThingsBoard Gateway;
- 测试设备:通过 snmpd 在 BL410 平台搭建本地 SNMP v3 模拟代理(用于替代真实 SNMP 设备);
- MQTT客户端:安装 MQTTX 或 mosquitto_sub 工具(用于验证 MQTT 数据转发效果);
- SNMP测试工具:用于验证 SNMP v3.0 设备的网络可达性;
- ThingsBoard 服务:为 MQTT 消息的接收端,需确保正常运行。
3 核心操作步骤(验证 SNMP v3.0 转 MQTT)
步骤1:搭建 SNMP v3 模拟代理(snmpd)
- 安装 snmpd工具,执行以下命令完成 snmpd 及相关依赖的安装:
sudo apt update && sudo apt install -y snmpd snmp
- 配置 SNMP v3 用户(关键步骤:创建认证+加密的 SNMP v3 用户)
执行以下命令创建SNMP v3用户,指定认证协议为 SHA、加密协议为AES并设置对应密钥:
sudo net-snmp-config --create-snmpv3-user -a SHA -A "AuthPass123!" -x AES -X "PrivPass123!" snmpv3user
- 修改 snmpd 配置文件
编辑sudo nano /etc/snmp/snmpd.conf 注释原有默认配置,添加以下内容:
4.重启 snmpd 并设置开机自启
sudo systemctl restart snmpd
sudo systemctl enable snmpd
- 验证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 Gateway MQTT 转发的 SNMP 数据主题:
mosquitto_sub -h 127.0.0.1 -p 1883 -t "v1/gateway/telemetry" -v
4 ThingsBoard 云平台连接说明
ThingsBoard云平台连接与SNMP设备连接为两个独立模块,基于 BL410 平台的配置如下:
1.SNMP连接器 → 路由器设备(SNMP v3 通信)
- 连接地址:使用路由器的本地网络IP
- 通信端口:161
- 协议版本:SNMPv3
2.SNMP连接器 → ThingsBoard云平台(MQTT通信)
- 连接地址:thingsboard.cloud(ThingsBoard 云平台域名)
- 通信端口:1883(MQTT默认端口)
- 功能用途:将BL410设备采集到的SNMP数据上传至云平台
5 硬件适配说明
1. 实测硬件型号
本次实测选用公司 BL410 硬件平台,该平台核心参数如下:
- 架构:ARM aarch64
- 设备:BL410设备
- 兼容性:完美支持 Python 3.8+、ThingsBoard Gateway 及 snmpd 工具部署
2. 系列硬件适配性
除 BL410 外,公司所有 ARMxy 系列硬件(如 BL330、BL340 等)均具备同等适配能力:
- 统一基于 ARM 架构,系统环境兼容性一致;
- 硬件性能满足 SNMP 数据采集、协议转换及 MQTT 转发的资源需求;
- 支持 Ubuntu 等主流 Linux 发行版,可直接复用本次配置流程。
6 验证结果说明:
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设备:
成功采集到关键字对应的表格数据,包含设备网络接口等相关信息,数据更新时间与采集周期一致: