课程导入:学习目标、适用人群、课程结构、实战环境准备

MQTT边缘网关是工业物联网、智慧园区、车联网和能源管理项目中承上启下的关键设备。它一端通过Modbus、OPC UA、BACnet、CAN等工业协议采集现场设备数据,另一端通过MQTT协议将数据发布到云平台或本地数据中心。本课程不讲解抽象的理论模型,而是围绕“真实网关设备+真实传感器/PLC模拟器+真实云平台”的实战链路,带你从零搭建一套可运行的MQTT边缘网关通信系统。本章作为全课程的第1/30章,将明确学习目标、界定适用人群、拆解课程结构,并指导你准备一套完整的硬件、软件与网络实验环境。

边缘网关硬件 CPU/内存/存储 RS485/RS232/网口 4G/WiFi/Ethernet GPIO/DI/DO/AI (树莓派/工控机/专用网关) 软件协议栈 Linux + Docker Mosquitto / EMQX Node-RED / Python Modbus TCP/RTU 驱动 (协议转换 + 规则引擎) MQTT Broker/云平台 EMQX 公共/本地 Broker 阿里云IoT / 腾讯云IoT 数据可视化 Dashboard 规则引擎 / 告警 (MQTT over TLS/WS) Modbus/ OPC UA MQTT QoS 0/1/2 课程实战路径 ① 环境搭建 ② 协议采集 ③ 数据转换 ④ MQTT发布 ⑤ 云端验证 每章包含:原理讲解 → 操作演示 → 排障复盘 → 课后练习

1.1 学习目标:从“能连通”到“会调优”

本课程的核心目标不是让你仅仅学会“用MQTT发一条消息”,而是建立一套完整的边缘网关通信工程思维。完成全部30章学习后,你将具备以下能力:

  • 协议级理解:掌握MQTT 3.1.1/5.0协议核心(CONNECT/CONNACK/PUBLISH/SUBSCRIBE报文、QoS语义、遗嘱消息、保留消息、会话续传),能通过抓包工具分析协议交互过程。
  • 网关配置能力:熟练配置Mosquitto、EMQX等Broker,以及Node-RED、Python脚本实现Modbus RTU/TCP到MQTT的字段映射、数据类型转换、单位换算。
  • 工程排障能力:面对“设备离线”“数据乱码”“QoS消息丢失”“网络抖动导致重连风暴”等高频问题,能快速定位是硬件、网络、协议还是配置层面的原因。
  • 安全加固意识:掌握MQTT over TLS双向认证、用户名密码鉴权、ACL访问控制列表配置,避免裸奔上云。
  • 性能调优方法:理解Keep Alive、Clean Session、消息队列深度、Broker最大连接数等参数对系统稳定性的影响,能针对低带宽、高并发场景做参数调优。
实战验收标准:课程结束时,你将独立完成一个“模拟温湿度传感器+Modbus RTU转MQTT+云端Dashboard显示+告警规则触发”的完整项目,并输出一份网关部署文档。

1.2 适用人群:三类学员的差异化学习路径

本课程面向工业物联网、边缘计算、智慧建筑领域的工程师与架构师,具体分为三类人群,每类人群的学习侧重点略有不同:

人群类型背景特征学习重点建议章节
嵌入式/硬件工程师熟悉单片机、RS485、传感器,但对TCP/IP协议栈和云平台不熟MQTT报文细节、Broker部署、网络通信原理第2-8章、第15-20章
软件/后端工程师熟悉Java/Python/Node.js,但对工业现场总线陌生Modbus协议、网关驱动开发、数据映射规则第9-14章、第21-25章
运维/技术支持负责现场部署与维护,需要快速定位问题环境搭建、日志分析、抓包排障、安全配置第1-5章、第26-30章

无论你属于哪类人群,建议按照课程顺序学习,因为每章都会复用前面章节搭建的环境和代码。如果你时间有限,可以跳过第6章(Docker高级网络)和第24章(Broker集群),但第1章的环境准备和第30章的完整项目实战不可跳过。

1.3 课程结构:五阶段递进式设计

30章内容被划分为五个阶段,每个阶段解决一类核心问题,阶段之间环环相扣:

  1. 基础篇(第1-6章):环境搭建、MQTT协议精讲、Mosquitto/EMQX部署、MQTT客户端开发。目标是让数据“发得出去、收得回来”。
  2. 采集篇(第7-12章):Modbus RTU/TCP、OPC UA、BACnet等工业协议接入,以及PLC、传感器模拟器的使用。目标是让网关“听得懂设备的话”。
  3. 处理篇(第13-18章):Node-RED与Python脚本实现数据清洗、单位转换、阈值告警、边缘计算。目标是让数据“变得有价值”。
  4. 上云篇(第19-24章):MQTT over TLS、鉴权认证、阿里云/腾讯云IoT平台接入、数据可视化。目标是让数据“安全到达云端”。
  5. 实战篇(第25-30章):完整项目部署、性能压测、常见故障排查手册、项目复盘。目标是让你“独立交付项目”。
学习建议:每章末尾的“排障复盘”模块是精华,建议准备一个实验笔记本,记录你遇到的每一个报错信息、解决步骤和最终效果。这些记录将成为你后续工作中的“排障字典”。

1.4 实战环境准备:硬件、软件与网络

本课程所有实验均可在“真实硬件+虚拟机”或“纯软件模拟”两种模式下完成。如果你手头没有物理网关设备,可以使用树莓派或普通PC安装Ubuntu Server 22.04作为替代。以下是详细清单:

1.4.1 硬件清单(最低配置)

设备规格要求用途替代方案
边缘网关主机树莓派4B (4GB RAM) 或 x86工控机运行Linux、Mosquitto、Node-REDVMware/VirtualBox虚拟机(2核4GB)
传感器/PLC模拟器支持Modbus RTU/TCP的温湿度传感器或PLC产生真实工业数据Modbus Slave模拟软件(ModRSsim2)
USB转RS485模块CH340/FT232芯片,带自动收发切换连接Modbus RTU设备无(纯TCP模拟时不需要)
网络交换机/路由器普通家用路由器即可组建局域网,连接网关与PC无
调试PCWindows/Mac/Linux均可,安装MQTT客户端工具订阅消息、发送指令、抓包分析无

1.4.2 软件清单(全部免费)

  • 操作系统:Ubuntu Server 22.04 LTS(网关端)、Windows 10/11(PC端)
  • MQTT Broker:Mosquitto 2.0.x(轻量)或 EMQX 5.x(支持Dashboard)
  • MQTT 客户端工具:MQTTX(跨平台桌面工具)、MQTT Explorer(可视化订阅)
  • 协议模拟工具:ModRSsim2(Modbus Slave模拟)、Modbus Poll(Modbus Master模拟)
  • 抓包工具:Wireshark 4.x(分析MQTT报文)
  • 开发环境:Node.js 18.x + Node-RED 3.x、Python 3.10 + paho-mqtt库
  • 容器环境:Docker Engine 24.x + Docker Compose v2

1.4.3 网络规划建议

为了避免实验过程中出现IP冲突或防火墙拦截,建议按以下拓扑规划网络:

网关主机(静态IP:192.168.1.100/24)
    ├── 连接路由器LAN口(网关:192.168.1.1)
    ├── 通过USB转RS485连接Modbus Slave设备(波特率9600, 8N1)
    └── 通过WiFi或网线连接调试PC(192.168.1.50/24)

调试PC(静态IP:192.168.1.50/24)
    ├── 安装MQTTX、Wireshark、Modbus Poll
    └── 通过浏览器访问网关的Node-RED编辑器(http://192.168.1.100:1880)
重要提醒:如果你使用虚拟机作为网关,请将虚拟机网络模式设置为“桥接模式”,确保虚拟机能与物理网络中的其他设备互通。NAT模式下,外部设备无法主动连接虚拟机内的MQTT Broker。

1.4.4 环境验证三步法

环境搭建完成后,不要急于开始实验,先执行以下三步验证:

  1. 网络连通性:在调试PC上执行 ping 192.168.1.100,确认网关主机可达。
  2. Broker状态:在网关主机执行 systemctl status mosquitto,确认服务运行中;在调试PC使用MQTTX连接 mqtt://192.168.1.100:1883,发布一条测试消息。
  3. Modbus通信:启动ModRSsim2模拟一个从站(Slave ID=1,保持寄存器地址0-9),在网关主机使用 modpoll 命令读取数据,确认能读到非零值。
案例拆解:一次典型的“环境不通”排障
某学员反馈“MQTTX连接不上Broker”。排查过程:
① 在网关主机执行 ss -tlnp | grep 1883,发现Mosquitto监听在127.0.0.1而非0.0.0.0,导致外部无法访问。
② 修改 /etc/mosquitto/mosquitto.conf,添加 listener 1883 0.0.0.0,重启服务。
③ 再次连接成功。复盘:默认配置仅监听本地回环地址,这是新手最常踩的坑。