智能家居聊天机器人

Woow HA MCP Chatbot 是一款基于 Home Assistant 的 AI 聊天面板,通过自然语言控制智能家居设备,支持多轮对话和历史记录。

  • by WOOWTECH
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 WOOWTECH/Woow_ha_mcp_chatbot

使用说明

Woow HA MCP Chatbot

AI-Powered Smart Home Chat Panel for Home Assistant
Natural language control of 800+ entities via n8n + MiniMax M3 AI Agent

Features • Architecture • Screenshots • Installation • Configuration • API Reference • Testing • Changelog • 中文文件


概述

Woow HA MCP聊天机器人增加了一个专用 AI聊天面板 转到您的家庭助理侧栏。它连接到一个 n8n工作流程 运行一个 MiniMax M3人工智能代理 与 15个家庭助理工具节点,实现对整个智能家居的自然语言控制——灯光、气候、覆盖物、场景、自动化、媒体播放器等。

与内置语音助手不同,这种集成提供了完整的 聊天界面 有对话历史、多回合背景和对所采取的每一个行动的详细反馈。


特性

AI聊天面板

  • 专用侧边栏面板(“AI聊天“)集成到家庭助理中
  • 具有搜索和自动标题功能的多对话管理
  • 存储在HA记录器数据库中的持久对话历史记录
  • 响应式设计——适用于台式机、平板电脑和移动设备
  • 从家庭助理父帧同步暗/亮主题

通过自然语言实现智能家居控制

  • 15个HA工具节点 n8n覆盖所有主要域
  • 查询实体状态、控制灯光/气候/盖子、触发场景和自动化
  • 用于高级查询(计数、过滤器、聚合)的Jinja2模板渲染
  • 带有参数(亮度、颜色、温度、位置)的服务电话
  • 日志、事件历史、错误日志和摄像头截图访问

企业级可靠性

  • 消息持久性优先 --调用AI前将用户消息保存到数据库
  • Cloudflare超时弹性 — asyncio.shield() 保护长时间运行的操作
  • n8n webhook重新连接 --吊舱重启后自动重新激活
  • UTC时间戳标准化,以便跨时区正确显示

建筑学

系统流程

┌─────────────────────────────────────────────────────────────┐
│                    Home Assistant                            │
│                                                             │
│  ┌──────────┐    ┌──────────┐    ┌───────────────────┐     │
│  │  Chat    │───▶│ views.py │───▶│  n8n_proxy.py     │     │
│  │  Panel   │    │ REST API │    │  (HTTP + BasicAuth)│     │
│  │ (iframe) │◀───│          │◀───│                   │     │
│  └──────────┘    └──────────┘    └─────────┬─────────┘     │
│       │               │                     │               │
│       │          ┌──────────┐               │               │
│       │          │ recorder │               │               │
│       │          │ (SQLite) │               │               │
│       │          └──────────┘               │               │
└───────│─────────────────────────────────────│───────────────┘
        │                                     │
        │                                     ▼
        │                        ┌────────────────────┐
        │                        │   n8n Workflow      │
        │                        │                    │
        │                        │  Webhook (POST)    │
        │                        │       │            │
        │                        │       ▼            │
        │                        │  AI Agent          │
        │                        │  (MiniMax M3)      │
        │                        │       │            │
        │                        │       ▼            │
        │                        │  15 HA Tool Nodes  │
        │                        │  + Simple Memory   │
        │                        └────────────────────┘
        │
        ▼
   ┌──────────┐
   │ Browser  │  (Desktop / Mobile / Tablet)
   └──────────┘

美人鱼图

sequenceDiagram
    participant User as User (Browser)
    participant HA as Home Assistant
    participant DB as SQLite (Recorder)
    participant n8n as n8n Webhook
    participant AI as MiniMax M3
    participant Tools as HA Tools (15)

    User->>HA: POST /api/ha_mcp_client/.../messages
    HA->>DB: Save user message (immediate)
    HA->>n8n: POST /webhook/ha-chat (Basic Auth)
    n8n->>AI: Process with system prompt
    AI->>Tools: Call HA tools (state, service, template...)
    Tools-->>AI: Tool results
    AI-->>n8n: AI response JSON
    n8n-->>HA: {"output": "response text"}
    HA->>DB: Save AI response (shielded)
    HA-->>User: {"ai_response": "...", "user_message": "..."}

数据流图

graph TB
    subgraph "Frontend (app.js)"
        A[Chat Panel iframe] -->|fetch POST| B[HA REST API]
    end

    subgraph "Backend (Python)"
        B -->|Step 1| C[record_single: save user msg]
        C -->|Step 2| D[asyncio.shield]
        D -->|send_chat| E[n8n_proxy.py]
        D -->|record_single| F[save AI response]
    end

    subgraph "n8n Workflow"
        E -->|HTTP POST| G[Webhook Node]
        G --> H[AI Agent - MiniMax M3]
        H --> I[15 HA Tool Nodes]
        I -->|HA REST API| J[Home Assistant API]
    end

    subgraph "Storage"
        C --> K[(SQLite via Recorder)]
        F --> K
    end

n8n工作流——15个HA工具节点

n8n工作流程 [HA Chat] AI 管家 v2 包含以下工具节点:

# 工具节点 资源 操作 说明
1 HA_State_Get State Get 查询单个实体状态
2 HA_State_GetMany State getAll 列出多个实体状态(最多100个)
3 HA_State_Upsert State upstart 覆盖实体状态值(谨慎使用)
4 HA_Service_Call Service Call 简单服务调用(打开、关闭、切换)
5 HA_Service_Call_Ex Service Call 带有额外参数(亮度、颜色、温度)的服务调用
6 HA_Service_GetMany Service getAll 列出域的可用服务
7 HA_Template_Render 模板 Render 渲染Jinja2模板(最强大的查询工具)
8 HA_Logbook_GetMany log getLogbookEntries 查询事件记录
9 HA_ErrorLog_GetMany log getErrorLogs 查询系统错误日志
10 HA_Event_Create 事件 创建 火灾自定义事件
11 HA_Event_GetMany Event getAll 列出可用的事件类型
12 HA_Config_Get Config Get 获取系统配置
13 HA_Config_Check Config Check 验证配置文件
14 HA_CameraProxy_Screenshot CameraProxy getScreenshot 捕获相机截图
15 HA_History_GetMany History getAll 查询历史状态变化

AI系统提示

AI代理以“E&L”的身份运行智慧宅 AI 管家“(智能家居AI管家)有以下行为规则:

  • 先询问,后行动 --在执行命令之前,始终验证实体ID
  • 行动后验证 --在服务调用后检查状态,报告特定值
  • 直接执行 --未经确认执行的可逆操作(灯光、场景)
  • 安全防护装置 — HA_State_Upsert 始终需要用户确认
  • 保持在范围内 --仅处理家庭助理操作

截图

桌面--欢迎屏幕

桌面——AI对话

移动端--聊天视图

移动设备——侧边栏导航


安装

HACS(推荐)

  1. 在HACS中,请访问 集成 → ⋮ (溢出菜单)→ 自定义仓库
  2. 加 WOOWTECH/Woow_ha_mcp_chatbot 作为类型 集成
  3. 搜索 “HA MCP客户端” 然后单击 下载
  4. 重新启动家庭助理
  5. 首选 设置→ 设备和服务→ 添加集成→ HA MCP客户端

手册

  1. 复制 custom_components/ha_mcp_client/ 致您的HA config/custom_components/ 目录
  2. 重新启动家庭助理
  3. 首选 设置→ 设备和服务→ 添加集成→ HA MCP客户端

配置

先决条件

在配置HA集成之前,您需要:

  1. n8n实例 随着 [HA Chat] AI 管家 v2 工作流已部署并处于活动状态
  2. MiniMax API密钥 (适用于AI Agent节点)
  3. HA长期访问令牌 (适用于15个HA工具节点)
  4. 基本身份验证凭据 在n8n Webhook节点上配置

安装向导(3个步骤)

步骤 字段 描述
1.n8n连接 基本URL,API密钥(可选) n8n实例URL。API密钥可自动查找聊天工作流
2.Webhook Path Webhook Path 生产Webhook Path(例如。, webhook/ha-chat)
3.身份验证 用户名、密码 与n8n Webhook节点匹配的基本身份验证凭据

n8n连接注释

场景 要使用的n8n URL
n8n位于同一K8s集群中 http://n8n.<namespace>.svc.cluster.local:5678
n8n在同一局域网上 http://<node-ip>:<nodeport> (例如。, http://192.168.2.191:30678)
n8n通过Cloudflare https://n8n.yourdomain.com (⚠️ 100秒超时限制)

API 参考

对话

方法 端点 描述
GET /api/ha_mcp_client/conversations 列出所有对话(按updated_at desc排序)
POST /api/ha_mcp_client/conversations 创建新对话
PATCH /api/ha_mcp_client/conversations/{id} 重命名或存档对话
DELETE /api/ha_mcp_client/conversations/{id} 软删除对话

消息

方法 端点 描述
GET /api/ha_mcp_client/conversations/{id}/messages 获取消息(支持 ?limit=50&offset=0)
POST /api/ha_mcp_client/conversations/{id}/messages 发送消息并获得AI响应

发送消息--请求和响应

// POST /api/ha_mcp_client/conversations/{id}/messages
// Request:
{"message": "把客廳的燈打開亮度50%"}

// Response:
{
  "user_message": "把客廳的燈打開亮度50%",
  "ai_response": "已完成 ✅ 客廳燈已打開,亮度設定為 50%。",
  "conversation_id": "uuid-..."
}

服务

服务 描述
ha_mcp_client.clear_conversation_history 清除用户的所有对话历史记录
ha_mcp_client.export_conversation_history 将历史记录导出为JSON或Markdown

项目结构

Woow_ha_mcp_chatbot/
├── README.md                    # English documentation
├── README_zh-TW.md              # 繁體中文文件
├── LICENSE                      # MIT License
├── hacs.json                    # HACS integration metadata
├── .gitignore                   # Git ignore rules
│
├── custom_components/ha_mcp_client/
│   ├── __init__.py              # Integration setup, panel registration, services
│   ├── config_flow.py           # 3-step configuration wizard
│   ├── const.py                 # Constants and configuration keys
│   ├── n8n_proxy.py             # n8n webhook HTTP client (Basic Auth)
│   ├── views.py                 # REST API endpoints (6 routes)
│   ├── conversation_recorder.py # SQLite-based conversation history
│   ├── manifest.json            # Integration metadata (v1.0.0)
│   ├── services.yaml            # Service definitions
│   ├── strings.json             # Default UI strings
│   │
│   ├── brand/                   # Brand assets
│   │   ├── icon.png / icon@2x.png
│   │   └── logo.png / logo@2x.png
│   │
│   ├── frontend/                # Chat panel UI
│   │   ├── index.html           # Panel HTML template
│   │   ├── app.js               # Frontend logic (vanilla JS)
│   │   └── styles.css           # CSS with HA theme sync
│   │
│   └── translations/            # Localization
│       ├── en.json              # English
│       └── zh-Hant.json         # Traditional Chinese
│
└── docs/
    ├── screenshots/             # README images
    └── plans/                   # Design & planning documents

测试

测试结果(50对话AI代理测试)

类别 测试 通过 比率
基本查询(实体、配置、区域) 5 5 100%
灯光控制(开/关/亮度/颜色) 5 5 100%
气候/覆盖率 5 4 80%
场景/自动化 5 4 80%
模板查询(Jinja2) 5 5 100%
多参数服务调用 5 4 80%
错误处理(无效实体) 5 5 100%
多回合上下文 5 5 100%
日志/事件 5 4 80%
边缘案例(表情符号,长文本) 5 3 60%
总计 50 44 88%

API等级测试(24项测试)

小组 测试 通过
身份验证(401/403) 3 3
对话CRUD 8 8
消息API 8 8
边缘案例 5 5
总计 24 24 (100%)

更新日志

v1.0.0(2026-07)

主要重构:n8n webhook集成

  • 用n8n Webhook+MiniMax M3替换内置AI服务(OpenAI、Anthropic、Ollama)
  • 删除了MCP服务器、nanobot/cron模块、62个工具注册表
  • 添加 n8n_proxy.py 对于单个JSON请求/响应
  • 三步配置流程:n8n URL→ webhook路径→ 基本认证
  • 消息持久性:n8n调用前保存的用户消息
  • Cloudflare 524具有超时弹性 asyncio.shield()
  • UTC时间戳规范化(Z后缀)
  • 服务呼叫拆分: HA_Service_Call (简单)+ HA_Service_Call_Ex (带参数)
  • 50会话企业测试套件

v0.1.0(2026-03)

  • 首次发布,内置AI提供商
  • 62智能家居工具
  • MCP SSE服务器
  • 带有对话历史记录的聊天面板

支持


许可证

MIT 许可证 --有关详细信息,请参阅LICENSE文件。


Built with ❤️ by WOOWTECH · Powered by Home Assistant + n8n + MiniMax M3