Modbus转MQTT网关固件研发与共创计划

一、 项目愿景:让设备上云,像接线一样简单 新的一年,新的计划,我们致力于为工程师、创客及小团队,打造一套开箱即用、稳定可靠的工业物联网数据采集方案。你无需深究复杂的协议栈,只需聚焦业务,即可让传统设备轻松上云。 本项目的核心价值在于: 协议翻译官:打造一个高性能的“中间件”,将底层的Modbus协议(支持RS485/TTL)无缝转换为上层的MQTT协议,打通设备与云端的“最后一公里”。 软硬解耦:不绑定特定硬件。无论是WiFi环境(ESP32)还是4G环境(Cat.1模组),只要具备基本通信能力,软件就能赋予其“智能”,提供极大的硬件选型自由度。 解决技术断层:解决有业务需求但没有研发实力的小团队(如硬件工程师、创客、小厂),本项目提供了一种低成本解决方案。它只需通用开发板,就能实现数据采集和上云,花小钱办大事。 二、 技术架构:三位一体的全栈实现 为确保方案的极致稳定与高度可扩展,我们采用“固件 + 配置工具 + 演示端”的三位一体架构,确保方案的完整性与专业性。 核心固件(“翻译官” - 逻辑版) 固件架构:采用分层架构设计,硬件抽象层隔离具体芯片与通信接口(如RS485/TTL),实现核心逻辑与硬件的解耦;协议栈层实现完整的Modbus协议栈(主/从站,RTU/TCP),并进行高效、健壮的JSON封装;服务层内置MQTT客户端,负责可靠的数据上传、断线重连与本地缓存;配置管理层,通过Rust编写的PC工具下发设备配置,实现软件定义功能。 技术栈:采用C语言开发,优先实现裸机(No OS)逻辑版本,确保在资源受限的MCU上也能稳定运行,降低用户使用门槛。 功能:负责实时采集Modbus寄存器数据(如电压、电流),并根据配置的倍率进行数据转换,最后通过MQTT协议将数据打包上传。 PC配置工具(“指挥官” - Rust版) 技术栈:使用Rust语言开发,利用其内存安全特性,确保配置过程绝对可靠,工具长期运行不崩溃。 功能:提供图形化界面,用户可轻松配置通信模式、寄存器地址、倍率等参数。支持通过串口(USB转TTL) 进行固件刷新与参数下发,解决现场实施难题,无需复杂的网络配置。 数据演示端(“仪表盘”) 技术栈:微信小程序。 功能:扫码即可查看实时数据曲线与数值面板,直观验证数据上云效果,方便现场调试与演示。 三、 当前状态:诚邀你,成为“共创者” 项目正处于核心研发阶段,当前全力攻克裸机版本,实现通信方式支持WiFi和4G的Modbus RTU(串口)协议的稳定性与性能。它适合简单应用,保证运行稳定。我们相信,最好的产品源于真实场景的千锤百炼。 未来会研发通信方式支持LoRa、以太网的Modbus TCP,以及FreeRTOS多任务版,用于解决需要同时处理多路数据采集,复杂业务逻辑的高端场景。 因此,我们发起此次共创计划: 你的支持,将直接转化为测试硬件(ESP32、各类Modbus传感器),用于极限环境下的兼容性验证。 你的设备,可以寄来成为我们的“适配样本”,共同完善设备库。 你的反馈,将直接塑造产品的下一个版本。 四、未来承诺 当固件通过大量真实场景验证,达到工业级稳定标准后,我们将正式申请软著,并启动授权售卖。所有共创阶段的支持者,都将依据历史贡献,获得丰厚的升级折扣与永久优先支持权。 我入驻了爱发电,更多详情内容请查看:https://afdian.com/a/modujson

2026-02-24 · 1 min · Eagle

Mosquitto 安全加固指南:从匿名访问到多用户 ACL 细粒度权限控制

在 Mosquitto 实例上配置身份验证非常重要,这样未经授权的客户端就无法连接。 在 Mosquitto 2.0 及更高版本中,你必须明确选择身份验证选项,然后客户端才能连接。早期版本中,默认设置是允许客户端无需身份验证即可连接。 身份验证有三种选择:密码文件、身份验证插件和匿名访问。可以使用三个选项的组合。 在 Mosquitto2.0 及更高版本中,可以通过配置文件中将 per_listener_settings 设置为 true,让不同的侦听器使用不同的身份验证方法。 除了身份验证,您还应该考虑访问权限控制,以确定哪些客户端可以访问哪些主题。 密码文件设置 密码文件是一种将用户名和密码存储在单个文件中的简单机制。适合于有相对较少的静态用户。请注意,修改了密码文件后,需要重新加载 mosquitto。 创建密码文件,可以使用mosquitto_passwd工具,命令如下: mosquitto_passwd -c <password file> <username> 请注意,使用-c 标志将覆盖已存在的文件,如果向已存在文件添加,请去掉-c 标志。 要开始使用密码文件,需要配置 broker,在配置文件中,添加如下项: password_file <path to the configuration file> 密码文件必须能够被运行 mosquitto 的用户读取。 身份验证插件设置 如果你需要更多的控制来认证用户,你需要使用认证插件。具体的特性依赖于你使用的认证插件。 可使用的插件: mosquitto-go-auth ,它提供了各种后端来存储用户数据,例如 mysql,postgresql,jwt 或 redis 等。 Dynamic security,动态安全插件,仅适用于 2.0 及更高版本,可提供原创管理的灵活的代理客户端、组和角色。 配置身份验证插件依赖你的 Mosquitto 的版本。 版本 1.6.x 和以前的版本,使用auth_plugin选项。这个选项在版本 2.0 也被支持。 listener 1883 auth_plugin <path to plugin> 版本 2.0 及更高,使用plugin选项。 listener 1883 plugin <path to plugin> 匿名访问设置 配置匿名访问,请使用allow_anonymous选项。 ...

2025-11-01 · 1 min · Eagle