OpenClaw 与智能家居联动
「小渝,帮我把卧室灯关一下」——这不是语音助手的专利,OpenClaw 也能做到。这篇讲如何让 AI 助手真正控制你家的灯、空调、门锁。
痛点:App 太多,想用一个对话控制所有设备
智能家居的现状是:米家用米家 App,空调用遥控器或格力 App,门锁用另一个 App……设备一多,光是找到对应的 App 就很烦。
理想状态:一个对话界面,说句话就能控制家里所有设备。
OpenClaw + Home Assistant = 这个组合可以实现。
架构:OpenClaw 是大脑,Home Assistant 是神经
你(飞书/QQ/微信)
↓ 发送消息
OpenClaw AI 助手
↓ 理解意图,调用 API
Home Assistant
↓ 控制设备
米家/小米设备
(门锁、灯、空调、加湿器、摄像头、温湿度计)
Home Assistant 是目前最强大的开源智能家居平台,支持 2000+ 设备品牌,包括小米全系。
OpenClaw 充当大脑,理解你的自然语言指令,然后通过 Home Assistant 的 REST API 去实际控制设备。
第一步:连接 Home Assistant
准备 Home Assistant
确保 Home Assistant 已经安装并在内网运行,地址如 http://192.168.x.x:8123。
获取访问令牌
在 Home Assistant 网页端:
点击左下角用户名 向下滚动,找到 Long-Lived Access Tokens 点击「创建令牌」,输入名字(如 openclaw)复制生成的 token
在 OpenClaw 中配置
把 HA 地址和 token 记录到 TOOLS.md 中:
# Home Assistant 连接信息
HA_URL=http://192.168.5.20:8123
# token 保存在 ~/.openclaw/workspace/.ha_token
第二步:学会看设备状态
在动手控制之前,先学会查询设备状态。
获取所有设备
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"http://192.168.5.20:8123/api/states" | \
python3 -m json.tool | head -100
返回的是一个 JSON 数组,每个设备一条记录,包含 entity_id、state、attributes 等信息。
查询单个设备
# 查询卧室灯状态
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"http://192.168.5.20:8123/api/states/light.yeelink_cn_873937596_bslamp2_s_2_light"
返回示例:
{
"entity_id": "light.yeelink_cn_873937596_bslamp2_s_2_light",
"state": "on",
"attributes": {
"brightness": 255,
"color_temp": 368,
"friendly_name": "卧室床头灯"
}
}
第三步:控制设备
开灯/关灯
# 开灯
curl -s -X POST -H "Authorization: Bearer $HA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_id": "light.yeelink_cn_873937596_bslamp2_s_2_light"}' \
"http://192.168.5.20:8123/api/services/light/turn_on"
# 关灯
curl -s -X POST -H "Authorization: Bearer $HA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_id": "light.yeelink_cn_873937596_bslamp2_s_2_light"}' \
"http://192.168.5.20:8123/api/services/light/turn_off"
设置空调温度
# 设定为 26 度,制冷模式
curl -s -X POST -H "Authorization: Bearer $HA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_id": "climate.xiaomi_ac", "temperature": 26, "hvac_mode": "cool"}' \
"http://192.168.5.20:8123/api/services/climate/set_temperature"
查看门锁状态
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"http://192.168.5.20:8123/api/states/lock.xiaomi_lock_e30"
控制加湿器
# 打开加湿器
curl -s -X POST -H "Authorization: Bearer $HA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_id": "switch.xiaomi_humidifier_s"}' \
"http://192.168.5.20:8123/api/services/switch/turn_on"
第四步:用自然语言控制(OpenClaw 作为大脑)
上面的 curl 命令,普通用户不可能记住。这时候 OpenClaw 的价值就体现出来了——你只需要说人话,AI 来转成 API 调用。
在 OpenClaw 中封装 HA 控制
创建一个 Home Assistant 技能(SKILL.md),教 AI 怎么用 HA 的 API:
---
name: home-assistant
description: 通过 Home Assistant 控制智能家居设备
---
# Home Assistant 控制技能
## 获取所有设备状态
```bash
curl -s -H "Authorization: Bearer $HA_TOKEN" \
"http://192.168.5.20:8123/api/states"
常用控制命令
灯光
开灯: /api/services/light/turn_on+ entity_id关灯: /api/services/light/turn_off+ entity_id
空调
设置温度: /api/services/climate/set_temperature+ entity_id + temperature
插座
打开: /api/services/switch/turn_on关闭: /api/services/switch/turn_off
门锁
查看状态: /api/states/lock.<entity_id>注意:不要远程解锁,除非确认安全
HA Token
Token 保存在 ~/.openclaw/workspace/.ha_token
### 实际对话示例
你:帮我把卧室灯关一下 AI:正在关闭卧室床头灯... → curl POST /api/services/light/turn_off entity_id: light.yeelink_cn_xxx ✅ 已关闭
你:现在家里温度怎么样? AI:让我查一下... → curl GET /api/states/sensor.xiaomi_xxx_temperature → curl GET /api/states/sensor.xiaomi_xxx_humidity 返回:卧室 24°C / 客厅 25°C / 书房湿度 60%
你:出门了,帮我检查一下门锁 AI:当前门锁状态:已上锁 ✅ 所有门窗传感器:无异常 ✅
---
## 第五步:自动化场景
### 场景1:回家自动欢迎
当门锁检测到开锁时,自动执行:
1. 打开客厅灯
2. 空调调到舒适温度
3. 发送飞书消息给主人
这个自动化在 Home Assistant 里面配置:
```yaml
automation:
- trigger:
platform: state
entity_id: lock.xiaomi_lock_e30
to: "unlocked"
action:
- service: light.turn_on
data:
entity_id: light.living_room
- service: climate.set_temperature
data:
entity_id: climate.xiaomi_ac
temperature: 25
- service: notify.feishu
data:
message: "欢迎回家!客厅灯和空调已开启"
场景2:定时播报环境状态
每天早上 8 点,OpenClaw 自动查询家中环境数据,推送到飞书:
🌡️ 环境播报 — 2026-04-01 08:00
卧室:24°C / 湿度 55%
客厅:25°C / 湿度 52%
书房:26°C / 湿度 60%
门锁:已上锁 ✅
NAS 状态:运行中 ✅
场景3:异常告警
当门锁异常或摄像头检测到移动时,AI 主动发消息:
🚨 安全告警 — 2026-04-01 03:12
⚠️ 门锁异常触发!
位置:入户门
状态:暴力破解警告
📷 摄像头画面:[查看画面]
常见设备控制 Domain
Home Assistant 的设备通过不同的 Domain 来控制:
| Domain | 设备类型 | 常用服务 |
|---|---|---|
light |
灯 | turn_on, turn_off |
switch |
开关/插座 | turn_on, turn_off |
climate |
空调 | set_temperature, set_hvac_mode |
lock |
门锁 | lock, unlock |
cover |
窗帘 | open_cover, close_cover |
sensor |
传感器 | (只读) |
camera |
摄像头 | (只读/快照) |
注意事项
安全第一:门锁远程解锁是高级权限,操作前务必二次确认 内网访问:HA 默认在内网,远程控制需要 VPN 或内网穿透(如 Tailscale) Token 保护:HA token 不要硬编码在脚本里,用文件或环境变量存储 设备兼容:小米设备通过 miio 集成,控制命令可能因型号不同有差异
总结
用 OpenClaw 控制智能家居,分三层:
设备层:Home Assistant(通过米家集成连接所有设备) 控制层:Home Assistant REST API(标准 HTTP 调用) 大脑层:OpenClaw(理解自然语言,翻译成 API 调用)
核心就两条命令:
# 查状态
curl -H "Authorization: Bearer $TOKEN" http://HA:8123/api/states/<entity_id>
# 做动作
curl -X POST -H "Authorization: Bearer $TOKEN" \
-d '{"entity_id": "xxx"}' \
http://HA:8123/api/services/<domain>/<service>
剩下的,交给 OpenClaw 理解你说的话就行。
夜雨聆风