本文介绍一个开源项目 InduGate ------ 工业智能体协议网关,它解决了AI智能体与工业设备对接的最后一公里问题。支持 OPC UA、Modbus、MQTT、S7、BACnet 五大协议,内置模拟器零硬件依赖,通过标准 MCP 协议让任何 Agent 都能直接操控工业设备。
🎯 为什么要做这个项目?
做这个项目的起因很简单:我想让AI智能体(Agent)真正"落地"到工业场景,但发现第一步就卡住了。
工业场景的三座大山
做过工业互联网的朋友应该都有体会:
-
协议碎片化严重
- 西门子用S7、三菱用MC协议、欧姆龙用Fins
- 还有OPC UA、Modbus、MQTT、BACnet、Profinet...
- 每个协议的SDK、文档、调试方式都不一样
-
测试成本极高
- 一台PLC动辄几万,普通开发者根本买不起
- 想学习和开发工业应用,连测试环境都没有
- 开源项目几乎没有"开箱即用"的模拟器
-
AI Agent落地难
- 现在的Agent框架(Dify、FastGPT、LangChain)都很成熟
- 但一到工业场景,连设备都连不上,谈什么智能体?
- 每个项目都要从零开始写协议对接,重复造轮子
于是我决定自己做一个:把工业协议统一封装,通过标准MCP协议暴露给AI智能体,让Agent开发者不需要懂工业,也能操控工业设备。
🚀 InduGate 是什么?
InduGate = 工业智能体协议网关
你可以把它理解成"AI时代的工业翻译官":
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ AI Agent │────▶│ InduGate │────▶│ 工业设备 │
│ (大模型) │ │ (协议网关) │ │ (PLC/传感器)│
└─────────────┘ └─────────────┘ └─────────────┘
▲
│ MCP 标准协议
│
任何Agent都能接
核心价值:
- ✅ 协议统一:5种工业协议 → 一套标准MCP接口
- ✅ 零硬件测试:内置模拟器,Docker一键启动就能玩
- ✅ 开箱即用:Web管理面板 + REST API + MCP Server
- ✅ 企业级能力:RBAC、操作审计、告警、历史数据存储
✨ 核心特性
1. 五大工业协议支持
| 协议 | 说明 | 状态 |
|---|---|---|
| OPC UA | 工业互联网标准协议,广泛用于SCADA、MES | ✅ 已支持 |
| Modbus TCP | 最经典的工业协议,几乎所有设备都支持 | ✅ 已支持 |
| MQTT | 物联网消息协议,适合传感器数据采集 | ✅ 已支持 |
| Siemens S7 | 西门子PLC专用协议,S7-1200/1500/300/400 | ✅ 已支持 |
| BACnet/IP | 楼宇自动化协议,智能建筑常用 | ✅ 已支持 |
后续还计划支持:Modbus RTU、Profinet、EtherNet/IP、三菱MC协议等
2. 标准 MCP 协议接入
MCP(Model Context Protocol) 是 Anthropic 推出的Agent通信标准,正在成为事实标准。
InduGate 完整实现了 MCP Server,Agent 可以直接调用这些工具:
python
# 用 Python 调用 InduGate MCP 工具示例
from mcp import ClientSession
# 1. 列出所有设备
devices = await session.call_tool("list_devices", {"protocol": "opcua"})
# 2. 读取温度数据
temp = await session.call_tool("read_data", {
"device_id": "plc-001",
"node_id": "ns=2;s=Temperature"
})
# 3. 写入控制指令
await session.call_tool("write_data", {
"device_id": "plc-001",
"node_id": "ns=2;s=SetPoint",
"value": 25.5
})
不管你用的是 Claude、GPT、DeepSeek,还是 Dify、FastGPT,只要支持MCP,就能直接控制工业设备。
3. 内置模拟器,零硬件依赖
这是我最满意的功能------没有工业设备也能玩。
InduGate 内置了三种协议的软件模拟器:
- 🏭 OPC UA模拟器:模拟温度、压力、流量等工业数据点
- 🔌 Modbus模拟器:模拟寄存器、线圈、离散输入
- 📡 MQTT模拟器:模拟传感器周期性上报数据
启动方式极其简单:
bash
docker compose up -d --build
Docker 启动后模拟器自动运行,打开浏览器就能看到实时变化的工业数据,完全不需要任何硬件。
4. 完整的 Web 管理面板
基于 Vue 3 + Element Plus 打造的现代化管理界面,功能齐全:
| 功能 | 说明 |
|---|---|
| 📊 仪表盘 | 设备状态、告警概览、数据统计 |
| 📱 设备管理 | 增删改查、连接断开、批量操作 |
| 📈 实时数据 | 节点浏览、数据读写、订阅监控 |
| ⚠️ 告警管理 | 阈值告警、规则配置、事件确认 |
| 👥 用户权限 | RBAC角色、设备级ACL权限隔离 |
| 📝 操作审计 | 所有写操作留痕,可追溯 |
| 🎮 模拟器控制 | 启停模拟器、配置模拟参数 |
5. 企业级能力
- 🔐 JWT认证:API安全访问
- 📊 Prometheus指标:监控系统运行状态
- 💾 时序数据存储:InfluxDB存储历史数据
- 📦 高可用架构:支持集群部署(规划中)
- 🔌 插件化扩展:自定义协议驱动(规划中)
🏗️ 技术架构
整体架构图
┌─────────────────────────────────────────────────────────────┐
│ 接入层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web UI │ │ REST API │ │ MCP Server│ │ CLI工具 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 核心服务层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 设备管理 │ │ 数据引擎 │ │ 告警引擎 │ │ 用户权限 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 协议适配 │ │ 数据标准化│ │ 操作审计 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 协议驱动层 │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │OPC UA│ │Modbus│ │ MQTT │ │ S7 │ │BACnet│ ... │
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
├─────────────────────────────────────────────────────────────┤
│ 设备模拟器层 │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │OPC UA│ │Modbus│ │ MQTT │ ← 内置模拟器,零硬件依赖 │
│ │ Sim │ │ Sim │ │ Sim │ │
│ └──────┘ └──────┘ └──────┘ │
└─────────────────────────────────────────────────────────────┘
技术栈选型
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 后端语言 | Go 1.24+ | 性能强、并发好、适合网关类项目 |
| Web框架 | Gin | 轻量高性能Go Web框架 |
| ORM | GORM | Go生态最成熟的ORM |
| 配置管理 | Viper | 多格式配置支持 |
| 日志 | Zap | 高性能结构化日志 |
| 前端 | Vue 3 + TypeScript | 渐进式框架,生态成熟 |
| UI组件 | Element Plus | 企业级组件库 |
| 构建工具 | Vite | 极速构建体验 |
| 数据库 | SQLite / PostgreSQL | 默认SQLite,生产用PG |
| 时序库 | InfluxDB(可选) | 工业时序数据存储 |
| 部署 | Docker + Docker Compose | 容器化一键部署 |
⚡ 快速上手,3分钟体验
方式一:Docker 一键启动(推荐)
bash
# 克隆项目
git clone https://gitee.com/zhbdream/indugate-gateway.git
cd indugate-gateway
# 一键启动(包含 Gateway + Web UI + 内置模拟器)
docker compose up -d --build
方式二:本地开发运行
bash
# 后端
go run ./cmd/gateway
# 前端(新开终端)
cd web
npm install
npm run dev
访问地址
启动完成后,打开浏览器访问:
| 服务 | 地址 |
|---|---|
| Web管理面板 | http://localhost:8080 |
| API文档 (Swagger) | http://localhost:8080/swagger/index.html |
| MCP服务发现 | http://localhost:8080/mcp/.well-known/mcp.json |
| 健康检查 | http://localhost:8080/health |
| Prometheus指标 | http://localhost:8080/metrics |
🤖 AI Agent 对接演示
给大家看一个实际的例子:用 Claude + InduGate 实现工业设备的智能监控。
第一步:在 Claude 中配置 MCP
在 Claude Desktop 的配置文件中添加:
json
{
"mcpServers": {
"indugate": {
"url": "http://localhost:8080/mcp"
}
}
}
第二步:和 Claude 对话
我:帮我看看1号产线的温度传感器数据
Claude:好的,我来查看一下。
调用 list_devices 工具获取设备列表
调用 read_data 工具读取温度数据
Claude :1号产线OPC UA设备当前温度为 78.5°C ,过去一小时在 72-80°C 之间波动。这个温度有点偏高,需要我帮你设置高温告警吗?
我:好的,设置85度高温告警,超过就告警
Claude :调用告警规则创建API
已经为你创建了高温告警规则:
- 设备:产线1号PLC
- 监测点:ns=2;s=Temperature
- 阈值:> 85°C
- 级别:严重
- 通知方式:Webhook + MQTT
温度超过阈值时会自动触发告警。
这就是工业智能体的威力------用自然语言就能管理工业设备。
📁 项目结构
indugate-gateway/
├── cmd/gateway/ # 应用入口
├── internal/
│ ├── api/ # HTTP API 层
│ ├── mcp/ # MCP Server 实现
│ ├── protocol/ # 协议驱动层
│ │ ├── opcua/
│ │ ├── modbus/
│ │ ├── mqtt/
│ │ ├── s7/
│ │ └── bacnet/
│ ├── simulator/ # 内置模拟器
│ ├── service/ # 业务服务层
│ ├── model/ # 数据模型
│ ├── config/ # 配置管理
│ └── storage/ # 数据存储
├── web/ # Vue 3 前端
├── configs/ # 配置文件
├── examples/ # 使用示例
├── deployments/ # 部署配置
├── docs/ # 文档
└── docker-compose.yml # 一键启动
🌱 开源地址与参与方式
项目地址
🏠 Gitee: https://gitee.com/zhbdream/indugate-gateway
欢迎参与
- ⭐ Star:觉得有用请点个Star,这是对我最大的鼓励
- 🐛 Issue:发现Bug或有功能建议,欢迎提Issue
- 🔧 PR:欢迎提交代码贡献,一起完善项目
- 💬 讨论:有任何想法都可以在讨论区交流
后续规划
- 支持更多协议(EtherNet/IP、三菱MC、Modbus RTU等)
- 设备自动发现(局域网扫描)
- 数据流编排(可视化数据转换)
- 边缘端轻量化版本
- 集群高可用部署
🎯 写在最后
做这个项目的初衷很简单:降低AI智能体在工业场景的落地门槛。
工业互联网不应该是大厂的专利,每个开发者、每个小团队都应该能轻易地把AI能力带到工业现场。InduGate 就是想做这样一件事------把复杂的工业协议封装起来,让AI开发者专注于业务逻辑,而不是陷入协议细节的泥潭。
如果你也是:
- 🏭 工业互联网从业者
- 🤖 AI智能体开发者
- 📚 想学习工业协议的学生
- 💡 对工业AI感兴趣的技术人
欢迎来体验、来交流、来贡献代码!
愿我们一起,让AI真正走进工厂。
🔗 项目地址:https://gitee.com/zhbdream/indugate-gateway
⭐ 如果觉得不错,别忘了点个 Star 支持一下!