工业数据架构模拟器

一个模拟现代工业数据架构的原型系统,通过MCP协议、MQTT和统一命名空间(UNS)实现工业环境与AI/LLM系统的自然语言交互。

  • by innovaassolutions
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 innovaassolutions/innovaas-mcp-server

使用说明

本项目目标

构建现代工业数据架构的实时模拟和工作原型,演示如何:

🏭 现实世界的工业环境
可以与
🤖 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

建筑

  1. 收到提示 /mcp
  2. 使用将其映射到主题 namespace_config.json
  3. 发布MQTT消息
  4. 未来:扩展LLM集成、语义主题匹配和响应

ISA-95命名约定和统一命名空间

该项目使用ISA-95命名约定以分层和标准化的方式构建MQTT主题,形成所谓的统一命名空间(UNS)。

ISA-95是什么?

ISA-95是开发企业和控制系统之间自动化接口的国际标准。它定义了一个一致的模型来表示制造操作,通常使用以下层次结构:

<enterprise>/<site>/<area>/<line>/<workcell>/<device>/<tag>

统一命名空间如何利用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主题,使您的统一命名空间能够用于演示和测试。

设置

  1. 激活您的虚拟环境:

    source venv/bin/activate
    
  2. 安装依赖项:

    pip install paho-mqtt python-dotenv
    
  3. (可选)在中设置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文档、体系结构图和操作运行手册

在考虑将系统用于生产或企业部署之前,应解决这些要求。