☰
openclaw 接入 Home assistant:小米、涂鸦、向日葵设备统一控制配置指南
2026/10/1 20:13:16 网站建设 项目流程

1. 为什么要把 openclaw 和 Home assistant 拼在一起

如果你手上同时有小米摄像头、涂鸦拇指机器人、向日葵智能插座,大概率经历过这种场面:米家一个 App、智能生活一个 App、向日葵再来一个 App,想看设备状态得来回切,想联动更是没门。Home assistant 能把这些设备收进一个面板,而 openclaw 负责用自然语言去驱动它们,两者组合起来才算真正“统一控制”。

这篇内容聚焦 openclaw 与 Home assistant 的本地集成,覆盖小米、涂鸦、向日葵三类智能硬件的接入配置。我会给出可复制的 configuration.yaml 片段、设备实体映射表与验证步骤,目标是在 Home assistant 面板里统一查看和控制三类设备状态,再让 openclaw 通过 skill 去调用。

先说清楚适合谁:已经有一台常开的 Ubuntu 机器(我用的是 Ubuntu 22),愿意用 Docker 跑服务,手上有至少一类上述智能硬件,并且想让 AI 帮你查状态、开关设备。不适合完全没接触过命令行、也不想折腾本地服务的人。

整体链路是这样的:Ubuntu 上跑 Home assistant 容器,容器里装三类设备的集成插件,设备变成 HA 里的实体(entity),openclaw 装上 home-assistant skill 后,通过 HA 的 API 读写这些实体。下面按这个顺序一步步来,每一步都给可复制的命令和配置。

2. 前置准备:Home assistant 容器与 openclaw 环境

2.1 用 Docker 跑起 Home assistant

Home assistant 官方推荐容器方案,先装 Docker:

curl -fsSL https://get.docker.com | sudo sh

然后启动 HA 容器。注意把MY_TIME_ZONE换成Asia/Shanghai,/PATH_TO_YOUR_CONFIG换成你宿主机上准备放配置的目录,比如/home/yourname/ha_config:

docker run -d \ --name homeassistant \ --privileged \ --restart=unless-stopped \ -e TZ=Asia/Shanghai \ -v /home/yourname/ha_config:/config \ -v /run/dbus:/run/dbus:ro \ --network=host \ ghcr.io/home-assistant/home-assistant:stable

确认容器在跑:

sudo docker ps

正常会看到类似输出,STATUS 是 Up:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b3e13d4cdb8 ghcr.io/home-assistant/home-assistant:stable "/init" 2 days ago Up 2 days homeassistant

2.2 找到访问地址并完成初始化

先确认 Ubuntu 的 IP。我的机器有两个:Docker 网桥172.17.0.1,无线网卡10.214.74.212。浏览器访问http://172.17.0.1:8123或http://10.214.74.212:8123,首次登录要注册管理员账号。

这里有个坑:后面小米认证会跳转到http://homeassistant.local:8123/...,这个域名在容器网络里往往解析不到,需要手动把homeassistant.local换成你实际能访问的 IP,比如172.17.0.1。我试过直接点跳转一直失败,改成 IP 就通了。

2.3 openclaw 侧的准备

openclaw 要调用 HA,需要先装 clawhub 这个 skill 管理能力,才会有clawhub命令,然后再装 home-assistant skill:

clawhub install home-assistant

安装完成后在 openclaw 里就能看到这个 skill。但光有 skill 还不够,它需要知道 HA 的地址和访问令牌,这部分放到第 3 节配置里讲。如果你还没拿到 openclaw 的 API Key,可以先去 TaoToken API Keys 生成一个,后面调用模型和 skill 都会用到。

3. 可复制配置:三类设备接入与实体映射

3.1 涂鸦设备:直接在面板添加

涂鸦是最省事的,不用改配置文件。在 HA 主页右上角点+添加设备,选 Tuya 集成,然后输入涂鸦 App「智能生活」里的用户码(在「账号与安全」里能找到),接着扫码登录,设备就出来了。拇指机器人这种能直接看到并控制。

3.2 小米设备:容器内装 ha_xiaomi_home

小米要走官方集成ha_xiaomi_home。关键点:一定要进入 Docker 容器内部执行,我在宿主机上直接跑卡了很久。

sudo docker exec -it homeassistant bash

进入容器后:

cd /config git clone https://github.com/XiaoMi/ha_xiaomi_home.git cd ha_xiaomi_home/ ./install.sh /config

看到Xiaomi Home installation is completed. Please restart Home Assistant.就成功了。重启 HA:

sudo docker restart homeassistant

重启后在添加设备里能看到Xiaomi Home,认证到最后跳转地址把homeassistant.local改成你的 IP 即可。

3.3 向日葵设备:同样容器内装插件

向日葵和小米类似,也要在容器里操作:

cd /config git clone https://github.com/cx3Y/sunlogin.git cd sunlogin/ cp custom_components/sunlogin ../custom_components/

重启后按小米的方式添加即可。

3.4 configuration.yaml 与实体映射

如果你想让 openclaw 稳定调用,建议在/config/configuration.yaml里显式声明要暴露的实体,避免它去猜。下面是我实际用的片段,路径就是容器里的/config/configuration.yaml:

homeassistant: name: Home unit_system: metric time_zone: Asia/Shanghai # 显式列出要交给 openclaw 控制的实体 group: openclaw_devices: name: Openclaw 可控设备 entities: - switch.sunlogin_socket_1 - switch.tuya_thumb_robot - camera.xiaomi_camera_livingroom # 允许 openclaw 通过 API 调用脚本 script: openclaw_all_off: alias: "一键关闭全部设备" sequence: - service: switch.turn_off target: entity_id: - switch.sunlogin_socket_1 - switch.tuya_thumb_robot

实体 ID 每个人不一样,去「开发者工具 → 状态」里搜关键字确认。对照表如下:

设备类型集成方式实体 ID 示例可控能力
小米摄像头ha_xiaomi_homecamera.xiaomi_camera_livingroom查看画面、开关
涂鸦拇指机器人Tuya 集成switch.tuya_thumb_robot开关、状态
向日葵智能插座sunlogin 插件switch.sunlogin_socket_1开关、功率

改完配置要检查语法再重启:

sudo docker exec -it homeassistant python -m homeassistant --script check_config -c /config sudo docker restart homeassistant

3.5 给 openclaw 的 HA 连接配置

openclaw 的 home-assistant skill 需要 HA 的长期访问令牌。在 HA 里点左下角用户头像 → 「长期访问令牌」→ 创建,复制出来。然后在 openclaw 的 skill 配置里填:

{ "home_assistant": { "base_url": "http://172.17.0.1:8123", "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "model_id": "claude-3-5-sonnet", "exposed_entities": [ "switch.sunlogin_socket_1", "switch.tuya_thumb_robot", "camera.xiaomi_camera_livingroom" ] } }

三件套要写全:Base URL 指向你的 HA 地址,Key 就是长期访问令牌,Model ID 是 openclaw 调用的模型。如果你用的是 Claude Code 那套,配置结构类似,把 base_url 和 token 对应填好即可。模型侧如果走 TaoToken,接入文档在 TaoToken 文档 里有完整说明。

4. 验证请求:从 HA 面板到 openclaw 调用

4.1 先用 curl 验证 HA API 通不通

在 Ubuntu 上直接打 HA 的 REST API,确认令牌有效:

curl -s -X GET \ -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." \ -H "Content-Type: application/json" \ http://172.17.0.1:8123/api/states/switch.sunlogin_socket_1

返回类似下面就说明通了:

{ "entity_id": "switch.sunlogin_socket_1", "state": "on", "attributes": { "friendly_name": "向日葵插座", "device_class": "outlet" }, "last_changed": "2025-01-01T10:00:00.000000+00:00" }

4.2 在 openclaw 里查设备数量与状态

skill 装好后,直接在 openclaw 里问:

帮我列出 Home assistant 里所有可控设备及当前状态

正常会返回三类设备的列表和 on/off 状态。再试一条控制指令:

把向日葵插座关掉,然后告诉我涂鸦拇指机器人现在是什么状态

openclaw 会调用 HA 的 service API 执行switch.turn_off,再读一次状态返回。如果这一步能成功,说明整条链路打通了。

4.3 面板统一查看

回到 HA 面板,把三类设备加到同一个仪表盘卡片里,就能一屏看到小米摄像头画面、涂鸦机器人状态、向日葵插座开关。openclaw 的调用结果也会实时反映到面板上,两边状态是一致的。

5. 常见报错排查:401、local proxy failed 与实体找不到

5.1 401 Unauthorized

最常见。原因基本是令牌问题:令牌复制时带了空格、令牌被删除、或者 base_url 写错导致请求打到别的服务。排查顺序:先用 4.1 的 curl 单独验证令牌,curl 通了再查 openclaw 配置里的 token 字段有没有多余字符。

5.2 local proxy failed

这个报错通常出现在 openclaw 通过本地代理访问 HA 时。检查两点:一是base_url用的是不是容器能访问到的地址,172.17.0.1和10.214.74.212在不同网络环境下可达性不同;二是 HA 容器用了--network=host,端口 8123 应该直接可达。如果 openclaw 跑在另一个容器里,172.17.0.1可能指向它自己的网桥,要换成宿主机实际 IP。

5.3 reading choices 相关报错

调用模型返回结构解析失败时会出现reading 'choices'这类错误,多半是模型侧返回了非预期格式,或者 Model ID 填错导致请求被拒。确认 Model ID 和你的 API Key 匹配,必要时换一个模型再试。

5.4 OAuth 认证卡住

小米认证跳转homeassistant.local失败就是典型。手动把域名替换成 IP。如果替换后仍失败,检查 HA 的configuration.yaml里internal_url和external_url是否配置正确。

5.5 实体找不到 / 设备不出现

先确认插件装在了容器内而不是宿主机,/config/custom_components/下应该有xiaomi_home和sunlogin目录。再看实体 ID 是否和配置里写的一致,去「开发者工具 → 状态」搜关键字核对。改完 configuration.yaml 记得跑 check_config 再重启。

6. 把 openclaw 当成智能家居的统一入口

走到这里,小米、涂鸦、向日葵三类设备已经在同一个 HA 面板里,openclaw 也能通过 skill 读写它们的状态。我的习惯是把常用操作固化成 HA 脚本,再让 openclaw 调用脚本名,比每次拼 service 调用稳定得多。

如果你还想让 openclaw 长期跑自动化、定时巡检设备状态,可以了解下 TaoToken Coding Plan,适合这种持续调用的场景。想先手动验证模型对设备指令的理解,去 TaoToken 模型对话 试几条自然语言指令就行。配置过程中卡在令牌或实体映射,直接翻 TaoToken 接入文档 对照参数。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询