前言
作为智能家居玩家,你是否想过:用自然语言控制家里的设备?
“帮我打开客厅的灯”
“看看空调开没开”
“卧室温度多少?”
这篇文章教你如何用 OpenClaw + Home Assistant + 小米官方插件 打造一个 AI 智能家居控制中心。
架构概览
flowchart LR
A[用户] -->|自然语言| B[OpenClaw]
B -->|REST API| C[Home Assistant]
C -->|Mi Cloud| D[小米云端]
D -->|控制| E[米家设备]
核心组件说明:
| 组件 | 作用 | 官方地址 |
|---|---|---|
| Home Assistant | 智能家居控制中枢 | home-assistant.io |
| Xiaomi Home | 小米官方 HA 插件 | github.com/XiaoMi/ha_xiaomi_home |
| OpenClaw | AI Agent 平台 | openclaw.ai |
| homeassistant-skill | OpenClaw 控制技能 | 内置 Skill |
一、Home Assistant 部署
1.1 部署方式选择
flowchart TD
A[部署 Home Assistant] --> B{选择方式}
B -->|推荐| C[Docker 部署]
B -->|小白友好| D[HAOS 虚拟机]
B -->|NAS用户| E[群晖/飞牛套件]
1.2 Docker 部署(推荐)
1 | docker run -d \ |
NAS 用户推荐: 使用飞牛 NAS / 群晖 / 威联通的 Docker 套件,图形化部署更方便。
1.3 初始化配置
- 访问
http://你的IP:8123 - 创建管理员账号
- 跳过设备发现(稍后通过 HACS 安装小米插件)
1.4 配置外网访问(可选但推荐)
flowchart LR
A[用户] -->|HTTPS| B[反向代理<br/>Nginx/Caddy]
B -->|HTTP| C[Home Assistant<br/>:8123]
Nginx 配置示例:
1 | server { |
二、HACS 安装与配置
HACS (Home Assistant Community Store) 是 HA 的第三方插件商店,小米官方插件需要通过 HACS 安装。
2.1 安装 HACS
1 | # 进入 HA 配置目录 |
2.2 配置 HACS
- 重启后访问 Home Assistant
- 进入 设置 → 设备与服务 → 添加集成
- 搜索 “HACS” 并添加
- 按提示完成 GitHub 授权
sequenceDiagram
participant U as 用户
participant HA as Home Assistant
participant HACS as HACS
participant GH as GitHub
U->>HA: 添加 HACS 集成
HA->>HACS: 初始化
HACS->>GH: 请求授权
GH->>U: 显示授权页面
U->>GH: 确认授权
GH->>HACS: 返回 Token
HACS->>HA: 安装完成
三、安装小米官方插件
3.1 为什么选择官方插件?
| 对比项 | Xiaomi Home (官方) | Xiaomi Miot Auto (第三方) |
|---|---|---|
| 维护方 | 小米官方 | 社区开发者 |
| 稳定性 | ✅ 高 | ⚠️ 中等 |
| 新设备支持 | ✅ 及时 | ⚠️ 可能延迟 |
| 推荐度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
3.2 通过 HACS 安装
- 打开 HACS(左侧菜单)
- 点击 集成
- 点击 探索并下载存储库
- 搜索
Xiaomi Home - 点击 下载
flowchart LR
A[HACS] --> B[探索存储库]
B --> C[搜索 Xiaomi Home]
C --> D[下载安装]
D --> E[重启 HA]
E --> F[配置集成]
3.3 配置小米账号
- 重启 Home Assistant
- 进入 设置 → 设备与服务 → 添加集成
- 搜索 “Xiaomi Home”
- 选择登录方式:
- 账号登录:输入小米账号密码
- 扫码登录:用米家 APP 扫码
sequenceDiagram
participant U as 用户
participant HA as Home Assistant
participant X as Xiaomi Home
participant MC as 小米云端
U->>HA: 添加 Xiaomi Home 集成
HA->>X: 启动配置
X->>U: 选择登录方式
alt 账号登录
U->>X: 输入账号密码
else 扫码登录
X->>U: 显示二维码
U->>MC: 米家APP扫码
end
X->>MC: 获取设备列表
MC->>X: 返回设备数据
X->>HA: 创建实体
3.4 支持的设备类型
| 设备类型 | 示例 | 支持功能 |
|---|---|---|
| 灯具 | 智能灯泡、灯带、吸顶灯 | 开关、亮度、色温、颜色 |
| 空调 | 米家空调、空调伴侣 | 开关、温度、模式、风速 |
| 插座 | 智能插座、功率计 | 开关、电量统计 |
| 传感器 | 温湿度、人体感应、门窗传感器 | 状态读取 |
| 空气净化器 | 米家空气净化器 | 开关、风速、模式 |
| 扫地机器人 | 米家扫地机 | 开始清扫、回充 |
| 热水器 | 米家电热水器 | 开关、温度 |
| 风扇 | 米家风扇 | 开关、风速、摆风 |
四、OpenClaw 部署
4.1 部署架构
flowchart TD
subgraph 宿主机
A[Docker]
end
subgraph A
B[OpenClaw 容器]
C[Home Assistant 容器]
end
B -->|REST API| C
B -->|挂载卷| D[~/.openclaw/]
D --> E[skills/]
D --> F[workspace/]
4.2 Docker 部署
1 | docker run -d \ |
4.3 创建 Home Assistant Token
flowchart LR
A[HA 左下角头像] --> B[滚动到底部]
B --> C[长期访问令牌]
C --> D[创建令牌]
D --> E[命名: OpenClaw]
E --> F[复制 Token]
步骤:
- 打开 Home Assistant
- 点击左下角用户头像
- 滚动到底部 长期访问令牌
- 点击 创建令牌,命名 “OpenClaw”
- 复制 Token(只显示一次!)
五、配置 OpenClaw Skill
5.1 Skill 文件位置
OpenClaw 的 Skill 文件位于:~/.openclaw/skills/home-assistant/SKILL.md
flowchart TD
A[~/.openclaw/] --> B[skills/]
B --> C[home-assistant/]
C --> D[SKILL.md]
A --> E[workspace/]
E --> F[TOOLS.md]
5.2 配置凭证
在 TOOLS.md 中添加 Home Assistant 凭证:
1 | ## API 凭证 |
5.3 Skill 工作原理
sequenceDiagram
participant U as 用户
participant O as OpenClaw
participant S as homeassistant-skill
participant HA as Home Assistant
participant D as 米家设备
U->>O: "打开客厅的灯"
O->>O: 理解意图
O->>S: 调用 Skill
S->>S: 查找设备实体
S->>HA: POST /api/services/light/turn_on
HA->>D: 控制设备
D->>HA: 返回状态
HA->>S: 返回结果
S->>O: 返回响应
O->>U: "已打开客厅灯"
5.4 验证配置
1 | # 测试 API 连接 |
六、实际使用示例
6.1 查询设备状态
flowchart LR
A["用户: 看看我家设备状态"] --> B[OpenClaw]
B --> C["GET /api/states"]
C --> D[Home Assistant]
D --> E[返回所有实体]
用户: “看看我家的智能设备状态”
OpenClaw 执行:
1 | curl -s "$HA_URL/api/states" -H "Authorization: Bearer $HA_TOKEN" \ |
返回示例:
| 设备 | 状态 | 功率 |
|---|---|---|
| 电脑插座 | ✅ 开 | 156W |
| 热水器 | ✅ 开 | 0W |
| 风扇 | ❌ 离线 | - |
6.2 控制灯光
flowchart LR
A["用户: 打开客厅灯"] --> B[OpenClaw]
B --> C["POST /api/services/light/turn_on"]
C --> D[Home Assistant]
D --> E[客厅灯开]
用户: “打开客厅的灯”
OpenClaw 执行:
1 | curl -s -X POST "$HA_URL/api/services/light/turn_on" \ |
6.3 查询温湿度
用户: “卧室温度多少?”
OpenClaw 执行:
1 | curl -s "$HA_URL/api/states/sensor.bedroom_temperature" \ |
返回:
1 | { |
6.4 控制空调
flowchart LR
A["用户: 空调开到26度"] --> B[OpenClaw]
B --> C["POST /api/services/climate/set_temperature"]
C --> D[Home Assistant]
D --> E[空调设置26°C]
用户: “把空调开到 26 度”
OpenClaw 执行:
1 | curl -s -X POST "$HA_URL/api/services/climate/set_temperature" \ |
6.5 常用命令速查表
| 场景 | 用户指令 | API 调用 |
|---|---|---|
| 开灯 | “打开客厅灯” | POST /api/services/light/turn_on |
| 关灯 | “关掉卧室灯” | POST /api/services/light/turn_off |
| 调亮度 | “客厅灯亮度50%” | POST .../light/turn_on {"brightness_pct": 50} |
| 开插座 | “打开电脑插座” | POST /api/services/switch/turn_on |
| 查温度 | “卧室多少度” | GET /api/states/sensor.xxx_temperature |
| 控制空调 | “空调开到26度” | POST /api/services/climate/set_temperature |
七、进阶玩法
7.1 场景联动
flowchart TD
A["用户: 我要出门了"] --> B[OpenClaw]
B --> C[触发离家场景]
C --> D[关闭所有灯]
C --> E[关闭插座]
C --> F[关闭空调]
在 Home Assistant 中创建场景:
1 | # configuration.yaml |
用户: “我要出门了” → OpenClaw 触发 scene.li_jia_mo_shi
7.2 自动化联动
flowchart LR
A[时间: 23:00] --> B[触发自动化]
B --> C[关闭所有灯]
B --> D[降低空调温度]
B --> E[发送通知]
1 | # 自动化示例 |
7.3 多平台接入
flowchart TD
A[用户] --> B[微信]
A --> C[Telegram]
A --> D[网页聊天]
A --> E[钉钉]
B --> F[OpenClaw]
C --> F
D --> F
E --> F
F --> G[Home Assistant]
G --> H[米家设备]
OpenClaw 支持多种接入方式,详见 官方文档。
八、完整配置示例
8.1 目录结构
1 | ~/.openclaw/ |
8.2 TOOLS.md 完整示例
1 | # TOOLS.md - 本地配置笔记 |
九、常见问题
Q1: Token 无效或过期?
flowchart TD
A[Token 失效] --> B[HA 设置]
B --> C[用户头像]
C --> D[长期访问令牌]
D --> E[删除旧 Token]
E --> F[创建新 Token]
F --> G[更新 TOOLS.md]
Q2: 设备显示 unavailable?
flowchart TD
A[设备离线] --> B{检查原因}
B -->|网络问题| C[检查设备网络]
B -->|登录过期| D[重新登录小米账号]
B -->|设备故障| E[检查设备状态]
D --> F[设置 → 设备与服务]
F --> G[Xiaomi Home]
G --> H[配置 → 重新登录]
Q3: 外网访问不了?
- 确认反向代理配置正确
- 检查防火墙端口开放
- 使用 HTTPS 确保 Token 传输安全
Q4: OpenClaw 无法控制设备?
| 排查步骤 | 检查内容 |
|---|---|
| 1 | Token 是否正确 |
| 2 | URL 是否可达 |
| 3 | 实体 ID 是否正确 |
| 4 | HA 日志是否有报错 |
十、安全建议
⚠️ 重要安全提示:
| 风险 | 防护措施 |
|---|---|
| Token 泄露 | 定期轮换,不要提交到 Git |
| 中间人攻击 | 使用 HTTPS 加密传输 |
| 误操作 | 门锁/安防设备需要二次确认 |
| 暴力破解 | 启用 HA 双因素认证 |
总结
通过这套方案,你可以:
- ✅ 用自然语言控制所有米家智能设备
- ✅ 查询设备状态、传感器数据
- ✅ 创建场景和自动化联动
- ✅ 接入微信、Telegram 等多平台
这不仅仅是语音助手,而是真正理解你意图的 AI 管家。智能家居的未来,就是用最自然的方式与设备交互。
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 OOM实验室!
评论


