前言:为什么需要 AI 家居中枢?
智能家居设备越来越多——灯光、空调、窗帘、摄像头、音箱……每个设备都有自己的 App,管理起来反而成了负担。OpenClaw 作为一款强大的 AI 网关,可以将这些设备统一管理,通过自然语言命令实现真正的”一句话控制全屋”。本文将详细介绍如何用 OpenClaw 搭建智能家居中枢。
一、整体架构概览
OpenClaw 本身不直接驱动硬件,但它可以:
- 通过 MQTT 协议 连接 Home Assistant、HomeBridge 等家居平台
- 通过 HTTP API 调用各大厂商开放接口(如小米、涂鸦)
- 通过 Shell 脚本 执行本地命令(如红外遥控)
- 作为大脑,用自然语言理解用户意图,调度各类技能完成任务
二、连接 Home Assistant
Home Assistant 是目前最流行的开源智能家居平台,支持数千种设备。我们通过 OpenClaw 的 HTTP 请求能力与其交互。
2.1 获取 Home Assistant 访问令牌
登录 Home Assistant Web 界面,进入”个人资料”页面,找到”长期访问令牌”选项,创建一个新令牌并妥善保存。这个令牌将用于 OpenClaw 与 Home Assistant 之间的认证通信。
2.2 在 OpenClaw 中配置 Home Assistant
在 OpenClaw 的配置文件中添加 HA 连接信息:
{
"skills": {
"home-assistant": {
"enabled": true,
"config": {
"url": "http://192.168.1.100:8123",
"token": "your_long_lived_access_token_here",
"entities": {
"living_room_light": "light.living_room",
"bedroom_ac": "climate.bedroom_ac",
"front_door": "lock.front_door"
}
}
}
}
}
2.3 编写控制技能
创建一个自定义技能文件来实现自然语言控制:
// skills/home-assistant/skill.js
module.exports = {
name: 'home-assistant',
description: 'Control smart home devices via Home Assistant',
async handle(context) {
const { ha, userMessage } = context;
const msg = userMessage.toLowerCase();
// 灯光控制
if (msg.includes('开灯') || msg.includes('关灯')) {
const isOn = msg.includes('开');
const room = this.extractRoom(msg);
const entityId = 'light.' + room;
await ha.callService('light', isOn ? 'turn_on' : 'turn_off',
{ entity_id: entityId });
return '已' + (isOn ? '开启' : '关闭') + room + '的灯光';
}
// 空调控制
if (msg.includes('空调')) {
if (msg.includes('开')) {
const temp = this.extractTemp(msg) || 26;
await ha.callService('climate', 'set_temperature',
{ entity_id: 'climate.bedroom_ac', temperature: temp });
return '空调已开启,设定温度 ' + temp + '度';
} else {
await ha.callService('climate', 'turn_off',
{ entity_id: 'climate.bedroom_ac' });
return '空调已关闭';
}
}
return null;
}
};
三、自然语言控制示例
配置完成后,你可以这样与 OpenClaw 交互:
用户:我出门了
助手:正在执行离家模式...
已关闭所有灯光
已关闭空调
已开启安防摄像头
门锁已上锁
离家模式已启动,祝您外出愉快!
用户:晚上8点把客厅灯打开
助手:已设置定时任务,将在今天 20:00 开启客厅灯光。
用户:现在室温多少度?
助手:当前室内温度 24度,湿度 58%。空调处于关闭状态。
四、进阶:多平台设备联动
4.1 小米设备接入
通过小米的 HTTP API 可以实现设备控制:
// skills/xiaomi/skill.js
module.exports = {
async callXiaomi(deviceCommand) {
const response = await fetch('http://xiaomi-hub.local:8080/execute', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(deviceCommand)
});
return response.json();
}
};
4.2 场景自动化
结合 OpenClaw 的 cron 功能,可以设置丰富的自动化场景:
{
"cron": [
{
"id": "morning-routine",
"schedule": "0 7 * * *",
"task": "执行早安模式",
"actions": [
"逐渐开启卧室灯光",
"播放轻音乐",
"播报今日天气和日程",
"开启咖啡机"
]
},
{
"id": "movie-mode",
"schedule": "0 21 * * 6",
"task": "周末影院模式",
"actions": [
"关闭客厅主灯",
"开启氛围灯(暖色)",
"关闭窗帘",
"开启家庭影院"
]
}
]
}
五、安全注意事项
- 内网隔离:智能家居系统不应直接暴露在公网,使用 VPN 或内网穿透时务必加密
- 令牌保管:HA 访问令牌、厂商 API Key 等敏感信息不要硬编码在配置文件中,建议使用环境变量
- 权限控制:为不同用户设置不同的设备访问权限
- 日志审计:定期检查 OpenClaw 日志,确保没有异常控制命令
六、性能优化建议
- 使用 MQTT 而非 HTTP 轮询,减少延迟和服务器压力
- 对高频操作(灯光开关)使用本地直连,复杂场景(跨设备联动)走云端
- 利用 OpenClaw 的模型路由,为简单控制指令分配轻量模型,降低响应延迟
- 启用设备状态缓存,避免每次查询都访问 Home Assistant API
总结
OpenClaw 作为智能家居的中枢神经,可以将分散的 IoT 设备统一管理,用自然语言实现”所想即所得”的控制体验。无论是简单的开关灯,还是复杂的全屋场景联动,都能轻松实现。配合定时任务和自动化脚本,让你的家真正”聪明”起来。
