首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实战 | 我的智慧工厂搭建之路:边缘计算 + MQTT,打通设备“最后一公里”

实战 | 我的智慧工厂搭建之路:边缘计算 + MQTT,打通设备“最后一公里”

原创
作者头像
Echo_Wish
发布2025-07-21 21:19:57
发布2025-07-21 21:19:57
23600
举报
文章被收录于专栏:云社区活动云社区活动
运行总次数:0

实战 | 我的智慧工厂搭建之路:边缘计算 + MQTT,打通设备“最后一公里”

还记得第一次踏进工厂车间,机器轰鸣、PLC在“眨眼”、看板一片红黄绿,那场面真的让我有种“现代工业的浪漫”——但这种浪漫,很快就被现实拍得粉碎。

因为设备数据取不出来,通信协议五花八门,厂区网络不稳定,采集端CPU负载高,最后搞个平台还只能看个“数字大屏”……说白了,我们不是没数据,而是“不会用”“拿不到”“传不上”

所以今天这篇文章,我就想和你聊聊——我是怎么一步步用边缘计算 + MQTT,搭建起一个可跑、可扩展、能上线的工业物联网平台原型系统,帮企业真正走上“智能制造”的第一步。


一、思路:设备千奇百怪,通信必须“去中心+解耦”

这项目一开始老板就说:“数据一定要实时,不能全靠云;工厂断网还得能采集本地数据。”这就明确一个事儿:

云平台只是展示,核心要靠“边缘”来抗压。

于是我锁定的架构模型是:

代码语言:txt
复制
设备层(PLC/传感器)
      ↓ Modbus、CAN、485
边缘计算网关(边缘容器+MQTT Client)
      ↓ 本地计算、缓存、协议转换
MQTT Broker(Eclipse Mosquitto)
      ↓ Pub/Sub 解耦
云端 IIoT 平台(Web可视化 + MongoDB)

关键点:

  • 本地部署边缘网关,降低对云依赖
  • 全部设备数据用 MQTT 解耦发布订阅;
  • 边缘端支持缓存、规则计算,先处理再上传

二、第一步:MQTT Broker 上线,搭建通讯心脏

我这里选用的是轻量级、易部署、社区成熟的 Eclipse Mosquitto,部署在一台树莓派上(也可以是边缘主机),启动超简单:

代码语言:bash
复制
sudo apt install mosquitto mosquitto-clients
sudo systemctl enable mosquitto

然后用客户端测试一下发布订阅:

代码语言:bash
复制
mosquitto_pub -t factory/temp -m "36.5"
mosquitto_sub -t factory/temp

只要你能在订阅端看到 "36.5",恭喜,你已经有了数据流的心跳线


三、第二步:边缘设备“翻译官”上线(Python + Paho-MQTT)

我们工厂的设备协议五花八门,有 Modbus、OPC-UA、甚至自定义串口协议。我的做法是写了个边缘采集脚本,用 Python 做数据采集,用 paho-mqtt 负责“发布”。

👇 举个 Modbus RTU 的例子:

代码语言:python
代码运行次数:0
运行
复制
import minimalmodbus
import paho.mqtt.client as mqtt

# 建立串口连接
instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 1)
instrument.serial.baudrate = 9600

# 连接 MQTT Broker
client = mqtt.Client()
client.connect("localhost", 1883)

# 循环采集并发布
while True:
    temp = instrument.read_register(100, 1)  # 读取温度
    client.publish("factory/temperature", temp)

这个脚本的好处是:

  • 非常轻量,可以跑在网关或者嵌入式板上;
  • MQTT 的 QoS 和 Retain 功能可以保障数据可靠性;
  • 你可以扩展到多个设备同时采集。

四、第三步:云端数据落地与可视化

MQTT 上来的数据,咱不能让它“漂浮不定”,得落地。这里我用了 Node.js + MQTT 客户端 + MongoDB 把数据写入数据库:

代码语言:javascript
代码运行次数:0
运行
复制
const mqtt = require('mqtt');
const MongoClient = require('mongodb').MongoClient;

const client = mqtt.connect('mqtt://localhost');
const url = 'mongodb://localhost:27017';

client.on('connect', () => {
  client.subscribe('factory/temperature');
});

client.on('message', async (topic, message) => {
  const temp = parseFloat(message.toString());
  const now = new Date();

  const mongo = await MongoClient.connect(url);
  const db = mongo.db('iot_data');
  db.collection('temperature_logs').insertOne({ temp, time: now });
});

前端我用了简单的 Echarts 折线图,把温度曲线实时渲染出来。虽然不高级,但 足够清晰、够实时、能跑起来


五、一点“失败的教训”,也得讲出来

项目中也踩了不少坑,分享几个血泪经验:

  • 🌐 工厂内网很复杂,MQTT 一定要配置心跳机制与断线重连,否则网络闪断就全掉线;
  • 🔌 不要指望每个PLC都有开放协议,你得准备好“抓协议+写转换”的苦活;
  • 🧠 边缘计算不能只“转发数据”,你要加点规则、缓存、甚至异常报警,比如:
代码语言:python
代码运行次数:0
运行
复制
if temp > 80:
    client.publish("factory/alert", f"温度异常:{temp}°C")

这才叫“智能”工厂,不是“傻转”工厂。


六、总结:智能制造的门槛不在于设备,而在于连接

很多人以为“智能制造”就得买MES、SCADA、AI模型,其实真不是。

我一直的观点是:

智慧工厂,不是买出来的,而是“连出来”的。

设备是死的,协议是旧的,环境是乱的,但我们用 MQTT + 边缘计算 + 开源组件,就能搭建一个可用、可扩展、能上线的 IIoT 系统。

哪怕你没几百万预算,也可以一步步迭代,把“黑灯工厂”做出来。


Echo_Wish 的碎碎念

有时候我觉得,做 IIoT 的人不光要懂技术,更要有点“折腾精神”。

你要敢去问厂长:“这台设备能不能暴露Modbus接口?”

你要敢去追踪报文:“这玩意儿到底是BigEndian还是LittleEndian?”

你要愿意深夜改脚本,第二天早上去看设备上了线、数据流起来,那一刻,你就会觉得这一切都值了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实战 | 我的智慧工厂搭建之路:边缘计算 + MQTT,打通设备“最后一公里”
    • 一、思路:设备千奇百怪,通信必须“去中心+解耦”
    • 二、第一步:MQTT Broker 上线,搭建通讯心脏
    • 三、第二步:边缘设备“翻译官”上线(Python + Paho-MQTT)
    • 四、第三步:云端数据落地与可视化
    • 五、一点“失败的教训”,也得讲出来
    • 六、总结:智能制造的门槛不在于设备,而在于连接
    • Echo_Wish 的碎碎念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档