项目简介

空气监测界面系统 (AMI) 是一个基于Django框架构建的Web应用,主要功能是接收、存储、可视化和导出环境传感器(如温度、湿度、CO2、PM1.0、PM2.5、PM10.0)的数据。作为一个特色功能,它集成了一个AI聊天机器人,该机器人利用 Model Context Protocol (MCP) 与AMI系统的MCP服务器组件通信。MCP服务器将AMI系统的部分核心功能(如数据查询、问题报告、用户配置管理)封装成标准化的工具(Tools),供LLM客户端调用,从而实现通过自然语言与系统交互的能力。

主要功能点

  • 传感器数据接收与存储: 提供API端点接收来自各种环境传感器的数据,并将数据持久化存储。
  • 传感器数据查询与可视化: 提供RESTful API查询存储的数据,支持按时间范围过滤。Web界面通过图表展示数据趋势。
  • 数据导出: 允许用户将指定时间范围和传感器类型的数据导出为CSV或JSON格式文件。
  • 用户认证与管理: 实现用户注册、登录、登出、个人资料和密码修改等基本用户管理功能。
  • 阈值邮件通知: 用户可设定传感器读数阈值,当超过阈值时系统会发送邮件提醒。
  • 数据分析与推荐: 提供当前和历史传感器数据的分析报告,并基于数据提供改善室内环境的建议。
  • AI聊天机器人 (LLM集成): 集成外部LLM(如DeepSeek AI),用户可以通过聊天界面查询传感器数据、获取分析结果、报告系统问题或更新个人设置。这些高级交互通过LLM调用MCP服务器提供的工具实现。
  • MCP服务器组件: 作为AMI系统的一部分,暴露了访问传感器数据和用户相关操作的工具接口,遵循MCP标准,与LLM客户端通信。

安装步骤

本项目是一个完整的Web应用,包含MCP服务器组件。MCP服务器通常需要通过MCPO工具作为代理运行。

  1. 克隆仓库:
    git clone https://github.com/panhyer36/sensor_monitor.git
    cd sensor_monitor
  2. 创建并激活Python虚拟环境:
    python -m venv venv
    # 在 Linux/macOS 上:
    source venv/bin/activate
    # 在 Windows 上:
    venv\Scripts\activate
  3. 安装依赖:
    pip install -r requirements.txt
    请确保已安装 'mcpo' ('pip install mcpo'),这是运行MCP服务器所必需的代理工具。
  4. 设置邮箱环境变量: 创建 '.env' 文件在项目根目录下(与 'manage.py' 同级),并添加以下变量用于邮件通知功能:
    EMAIL_HOST_USER=你的Gmail邮箱地址
    EMAIL_HOST_PASSWORD=你的Gmail应用密码
    请参考Google文档创建应用密码。
  5. 创建管理员用户和迁移数据库: 运行以下命令设置数据库和创建默认管理员用户:
    python create_admin.py
    # 或使用 Django 命令:
    # python manage.py createsuperuser
    python manage.py makemigrations
    python manage.py migrate
    # 可选:运行管理命令为现有用户创建UserProfile(通常新用户注册时会自动创建)
    # python manage.py create_user_profiles
  6. 运行Django Web服务器: 在一个终端窗口中运行:
    python manage.py runserver
  7. 运行MCP服务器 (通过MCPO代理): 在一个新的终端窗口中运行MCPO工具,启动AMI的MCP服务器脚本:
    mcpo --host 127.0.0.1 --port 8002 -- python MCP_server/mcp_server.py
    注意: '--host' 和 '--port' 参数是MCPO监听的地址和端口,LLM客户端(例如项目自带的Chatbot或外部客户端)将连接到这个地址来调用MCP服务器提供的工具。'-- python MCP_server/mcp_server.py' 是实际启动MCP服务器进程的命令及其参数。

服务器配置 (供MCP客户端使用)

本项目中的MCP服务器是 'MCP_server/mcp_server.py' 脚本,它设计为通过Stdio传输协议与MCPO代理通信。MCPO作为中间层,负责将外部请求(例如来自Chatbot的HTTP请求或来自其他MCP客户端的JSON-RPC over Stdio/WebSocket/SSE请求)转发给 'mcp_server.py' 进程。

对于希望连接到此MCP服务器的MCP客户端,需要知道如何启动并连接到这个特定的服务器进程。通常这通过配置客户端连接参数实现,这些参数描述了如何找到或启动服务器进程。

以下是 MCP 客户端可能需要配置的关键信息:

  • 服务器名称 (Server Name): 'sensor_data_mcp' (在 'MCP_server/mcp_server.py' 中定义)
  • 服务器启动命令 (Command): 'python' (执行Python脚本的解释器)
  • 命令参数 (Args): 'MCP_server/mcp_server.py' (MCP服务器脚本的路径)
  • 传输协议 (Transport): 'stdio' (项目 MCP 服务器默认使用的协议)
  • 连接地址 (Address): 通常由MCPO代理负责,如果MCPO配置为监听特定网络端口,客户端可能需要配置相应的地址(例如 'http://127.0.0.1:8002')。本项目自带的Chatbot客户端使用了一种内部机制来管理MCPO代理进程,并直接或间接与其通信。

请注意: MCP客户端的实际配置格式和方式取决于所使用的客户端库或框架。上述信息是启动和连接到AMI系统MCP服务器的核心要素。

基本使用方法

  1. 确保Django Web服务器和MCPO代理(以及其启动的MCP服务器)都在运行。
  2. 通过浏览器访问Django Web服务器地址(通常是 'http://127.0.0.1:8000')。
  3. 注册并登录AMI系统。
  4. 通过导航菜单访问不同的页面:
    • 仪表板/主页: 查看最新传感器数据(需要传感器数据写入)。
    • 数据导出: 导出历史传感器数据。
    • 数据分析: 查看传感器数据的统计分析和环境建议。
    • 个人资料: 修改个人信息、设置邮件通知和传感器阈值、配置LLM API Key。
    • 报告问题: 提交系统问题或建议。
    • Chatbot/DeepSeek Chat: 与AI聊天机器人互动,通过自然语言查询传感器数据或执行工具操作。
  5. (可选)实现一个传感器数据发送客户端,向 '/api/sensor/' 端点发送POST请求,以填充数据库并看到数据可视化和分析结果。

信息

分类

AI与计算