本项目目标
构建现代工业数据架构的实时模拟和工作原型,演示如何:
🏭 现实世界的工业环境\ 可以与\ 🤖 AI/LLM系统\ 通过结合以下内容的架构:\ MCP(模型上下文协议)+MQTT+NS(统一命名空间)
______________________________________________________________________
👷♂️ 简单地说
您正在以下两者之间建立一座工作桥梁:
| 从 | 到 | 到 |
|---|---|---|
| 机器数据、操作员意图、SCADA/OT系统 | 解释自然语言+通过MQTT | LLM(如GPT)、仪表板或代理路由消息的MCP服务器 |
______________________________________________________________________
✅ 示威的目的是
- 接受自然语言提示\
例如:“检查1号线上的温度”或“启动混合器3”\ 通过FastAPI端点 /mcp
- 翻译成MQTT\
处理提示并将其映射到MQTT主题\ 消息通过EMQX MQTT代理发布
- 可视化+监控系统\
使用MQTTX观察数据流\ 可选择插入点火开关、HighByte或仪表板
- 可选择添加真实LLM(GPT或Claude)\
解读意图\ 路由消息\ 最终发布控制逻辑或见解
- 模拟真实的统一命名空间\
按照标准层次结构组织主题(例如,站点/区域/线路/设备/标签)\ 启用对上下文感知消息的订阅
______________________________________________________________________
🔁 为什么这很重要
这是实现以下目标的基础步骤:
- 工程师和操作员用自然语言发出命令
- AI根据实时机器数据做出决策
- 工厂的统一命名空间支持预测模型、可视化仪表板或智能助手
______________________________________________________________________
innovaas mcp服务器
项目结构
innovaas-mcp-server/
├── app/
│ ├── __init__.py
│ ├── main.py
│ ├── mqtt_client.py
│ └── namespace_config.json
├── .env
├── .env.example
├── requirements.txt
├── service/
│ └── innovaas-mcp.service
├── README.md
├── venv/- 所有源代码和配置现在都位于
app/. .env和.env.example用于环境变量(例如MQTT_BROKER)。- 服务文件和要求保持不变。
设置
git clone https://github.com/your-org/innovaas-mcp-server.git
cd innovaas-mcp-server
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt创建一个 .env 文件基于 .env.example 并定义 MQTT_BROKER.
跑步
uvicorn main:app --reload --host 0.0.0.0 --port 8000建筑
- 收到提示
/mcp - 使用将其映射到主题
namespace_config.json - 发布MQTT消息
- 未来:扩展LLM集成、语义主题匹配和响应
ISA-95命名约定和统一命名空间
该项目使用ISA-95命名约定以分层和标准化的方式构建MQTT主题,形成所谓的统一命名空间(UNS)。
ISA-95是什么?
ISA-95是开发企业和控制系统之间自动化接口的国际标准。它定义了一个一致的模型来表示制造操作,通常使用以下层次结构:
///
///统一命名空间如何利用ISA-95
统一命名空间(UNS)是一种中央、实时和上下文数据结构,它使用ISA-95层次结构组织所有工业数据。在这个项目中,所有MQTT主题都遵循这种结构,这使得以下操作变得容易:
- 查找并订阅组织中的任何数据点
- 维护所有实时和历史数据的单一真实来源
- 启用上下文感知分析、仪表板和AI/LLM集成
对项目目标的价值
- 可扩展性: 可以在不改变整体结构的情况下添加新的设备、线路或站点。
- 互操作性: 标准化的主题名称使不同的系统(SCADA、MES、AI、仪表板)易于交互。
- 清晰: 任何人都可以通过它的名字来理解一个主题代表什么。
- 可扩展性: 该结构支持未来的扩展,例如添加新的传感器或与其他企业系统集成。
通过利用ISA-95和统一命名空间,该项目展示了一种现代、可扩展和面向未来的工业数据架构方法。
本项目中的模拟
目前,该项目的模拟是 按需 并位于FastAPI服务器中:
- 自然语言提示: 这
/mcp端点通过HTTP POST接受提示(例如“检查第1行的温度”)。 - 提示主题映射: 提示使用简单的逻辑映射到MQTT主题
namespace_config.json文件。 - MQTT发布: 映射的消息被发布到EMQX MQTT代理,模拟发送数据/事件的设备或系统。
- 统一命名空间: 主题结构
namespace_config.json模拟真实的工业统一命名空间。
尚未模拟的内容:
- 没有自动或定期的设备数据发布。
- 没有使用MQTT消息的模拟仪表板或LLM。
- API调用不会触发基于时间或事件驱动的模拟。
要扩展模拟,请执行以下操作: 您可以添加后台任务、脚本或服务来模拟设备、仪表板或AI代理。
设备模拟器
一个独立的Python脚本(device_simulator.py)用于模拟制造环境中的机器和传感器。此脚本将真实的传感器数据(如温度、振动)发布到MQTT主题,使您的统一命名空间能够用于演示和测试。
设置
- 激活您的虚拟环境:
source venv/bin/activate- 安装依赖项:
pip install paho-mqtt python-dotenv- (可选)在中设置MQTT代理信息
.env:
MQTT_HOST=localhost
MQTT_PORT=1883
MQTT_USERNAME=
MQTT_PASSWORD=运行模拟器
从项目根目录运行:
python device_simulator.py --site site1 --area areaA --line line1 --interval 5- 这将每5秒发布一次每台机器和传感器的模拟数据。
- 您可以调整
--site,--area,--line,以及--interval必要的争论。
扩展模拟器
- 通过编辑添加更多机器或传感器
DEFAULT_MACHINES脚本中的列表。 - 通过订阅控制主题来模拟控制命令(未来功能)。
- 从文件加载配置以进行更复杂的设置。
EMQX企业MQTT代理
此项目使用EMQX Enterprise 5.9.0作为MQTT代理。
- 服务名称:
emqx(通过systemd管理) - 仪表板: http://localhost:18083
- 默认MQTT端口: 1883
- 许可证: 在内部环境中免费使用单个节点。有关完整的许可证详细信息,请参阅EMQX输出。
要管理经纪人:
sudo systemctl status emqx
sudo systemctl restart emqx
sudo systemctl stop emqx待办
- \[\]真正的NLP解析
- \[\]订阅+阅读支持
- \[\]模型上下文协议合规性
- \[\]单元测试
- \[\]设计和实现流中OEE(整体设备效率)处理器:
- 通过MQTT从机器和传感器数据实时计算OEE - 监控OEE阈值并发出警报 - 将OEE指标发布到MQTT和/或存储在TimescaleDB中 - 与MCP和LLM集成,以支持自然语言查询(例如,“1号线的当前OEE是多少?”,“OEE降至85%以下时提醒我”)和警报设置
完整路线图
本节概述了该项目的计划和建议功能:
- 设备仿真
- 模拟多台机器和传感器(温度、振动等) - 将真实数据发布到MQTT主题 - 支持控制命令和动态配置
- MCP服务器(FastAPI)
- 通过接受自然语言提示 /mcp 端点 - 将提示映射到MQTT主题和发布命令 - 与LLM集成,实现高级意图识别和响应
- 统一命名空间(UNS)
- 在标准层次结构(站点/区域/线路/设备/标签)中组织MQTT主题 - 启用上下文感知的消息传递和订阅
- 流中处理和OEE
- 实现数据收集器/处理器以订阅MQTT主题 - 实时计算OEE(整体设备效率) - 监控OEE阈值并发出警报 - 将OEE指标发布到MQTT和/或存储在TimescaleDB中 - 与MCP和LLM集成,用于自然语言查询和警报设置
- TimescaleDB集成
- 存储历史传感器和事件数据 - 启用分析、趋势分析和仪表板 - 支持从MCP/LLM查询历史上下文
- 仪表板和可视化
- 与MQTTX、Grafana或其他工具集成,以可视化实时和历史数据 - 可选择连接到Ignition、HighByte或其他工业平台
- 安全性和稳健性
- 添加API和MQTT的身份验证和授权 - 优雅地处理错误和边缘情况
- 测试和文件
- 添加单元和集成测试 - 提供示例API请求、响应和使用场景 - 新设备、传感器和分析的文档可扩展性
______________________________________________________________________
该路线图将随着项目的发展而演变。欢迎提出意见和建议!
企业就绪要求
为了将该项目从原型阶段转移到生产阶段,必须解决以下问题:
- 安全
- 为所有API和MQTT实施身份验证和授权 - 对所有网络流量强制执行TLS/SSL - 使用安全的机密管理(而不仅仅是.env文件)
- 可靠性和稳健性
- 添加全面的错误处理和日志记录 - 实施健康检查和监测 - 确保弹性(重新连接、重试、优雅关机)
- 可扩展性
- 服务水平扩展设计 - 执行负载和压力测试
- 可观测性
- 集中和结构化日志 - 公开系统和业务指标(例如,通过Prometheus) - 添加分布式跟踪
- 部署和运营
- 容器化所有服务(Docker/Kubernetes) - 设置CI/CD管道 - 记录备份和恢复程序
- 测试和代码质量
- 添加单元、集成和端到端测试 - 强制执行代码过滤和类型检查 - 进行代码审查
- 文档
- 提供API文档、体系结构图和操作运行手册
在考虑将系统用于生产或企业部署之前,应解决这些要求。
