前言¶
在 DSH 里给 AI 配工具时,如果想控制米家 App 里的灯、空调、风扇,常见做法是找直连小米云的脚本或模拟 App 点击。米家没有对个人开放的 API,主流第三方库(python-miio + micloud)的登录流程已被小米改动,实测会返回 MiCloudAccessDenied,密码正确也登不上。下面介绍社区插件 dsh-homeassistant:它不直连米家,而是把请求转发到本机或局域网内的 Home Assistant,再经 Xiaomi Miot Auto 集成间接控制设备。配好后,对话里可以用自然语言开关灯、调亮度、设空调温度,不靠手机、不靠模拟点击,底层是一条 HTTP 请求打到 HA 的 REST API。
这是什么¶
dsh-homeassistant 是 DeepSeek Harness 的联网工具类插件,维护者为 huhuai-ni,当前版本 0.2.1,许可证 MIT,源码在 GitHub,社区目录页见 SkillHub。
插件由两半组成:
| 半边 | 作用 |
|---|---|
后端(index.js) |
注册 ha_* 工具,转发到 Home Assistant REST API;提供 /api/ha/* 供设置页使用 |
前端(client.js) |
在 DSH 设置 → 插件 中增加「家庭助理」:填地址、令牌、看设备列表、直接开关、拖亮度 |
小米账号密码只填在 Home Assistant 的 Xiaomi Miot 集成里,本插件不保存账号密码;地址、长期令牌和别名保存在本机 ~/.dsh/homeassistant/config.json。
能控制什么¶
控制范围取决于 HA 里已接入的实体,README 中与米家相关的说明如下:
| 类型 | 能力概要 |
|---|---|
| 米家灯 | 开关、亮度、色温 |
| 插座 / 开关面板 | 开关 |
| 空调(含空调伴侣 / 红外) | climate:开关、温度、模式 |
| 风扇(含红外款) | fan:开关、档位 |
| 窗帘电机 | cover:开 / 关 |
| 场景 / 自动化 | 经 ha_service 触发 scene / script |
| 小爱音箱 | 部分:media_player 开关、音量;不能让它开口说话 |
| 门锁 / 摄像头 | 不提供相关操作 |
架构概览¶
数据流可以概括为:
DSH 插件 ──HTTP(Bearer 令牌)──▶ Home Assistant :8123 ──Xiaomi Miot──▶ 小米云 / 局域网 ──▶ 设备
▲
└── 设置页(client.js)经 /api/ha/*
对话侧会调用 ha_status、ha_entities、ha_state、ha_control、ha_light、ha_all_off、ha_service 等工具;设置页通过同一后端路由管理连接与设备表格。
安装与启用¶
插件 README 把 Home Assistant 与 Xiaomi Miot 列为前置。下面按官方文档顺序说明;路径示例来自 README(Windows 为 F:/deepseek/ha,Linux / macOS 请换成自己的目录)。
环境要求¶
- Windows / macOS / Linux(项目在 Windows 上开发测试)
- Docker
- DSH 桌面版或 Web 版
- Node 22+
1、Docker 与 Home Assistant 容器¶
安装并启动 Docker Desktop 后,可验证:
docker info --format "{{.ServerVersion}}"
国内拉官方 ghcr.io 镜像可能较慢,README 推荐南京大学镜像:
docker pull ghcr.nju.edu.cn/home-assistant/home-assistant:stable
创建配置目录并启动容器(Linux / macOS 示例,请把卷路径改成你的实际路径):
mkdir -p /path/to/ha
docker run -d \
--name homeassistant \
--restart=unless-stopped \
-v /path/to/ha:/config \
-e TZ=Asia/Shanghai \
-p 8123:8123 \
ghcr.nju.edu.cn/home-assistant/home-assistant:stable
等待 1–3 分钟后在浏览器打开 http://localhost:8123,创建 HA 管理员账号。
2、安装 Xiaomi Miot 集成¶
方式 A(推荐,不依赖 HACS):将 hass-xiaomi-miot 的 custom_components/xiaomi_miot 复制到 HA 配置目录下的 custom_components/,然后 docker restart homeassistant。确认存在 .../custom_components/xiaomi_miot/manifest.json。
方式 B:通过 HACS 搜索 Xiaomi Miot Auto 安装并重启 HA。
在 HA 设置 → 设备与服务 → 添加集成 中搜索 Xiaomi Miot,选择添加小米账号并填写账号密码,等待设备同步。
3、创建长期访问令牌¶
在 HA 左下角用户名 → 安全 → 长期访问令牌 → 创建令牌,复制以 eyJ 开头的字符串。该令牌等同于控制家中设备的钥匙,勿公开传播。
4、安装 DSH 插件¶
官方安装命令:
dsh plugin --profile desktop add dsh-homeassistant
本地开发可链接目录:
dsh plugin --profile desktop add link:F:/deepseek/dsh-homeassistant
5、在 DSH 中填写连接¶
打开 设置 → 插件 → 家庭助理,填写:
HA 地址 http://localhost:8123
长期令牌 eyJ...
保存后点 测试连接。成功时会显示 HA 版本与实体数量,并出现设备表格。
典型用法¶
设置页¶
可按分页筛选全部 / 灯 / 开关 / 风扇 / 空调 / 窗帘;表格中可开 / 关,灯支持亮度滑条;顶部提供 全部关闭。
对话与工具¶
配好后可直接说例如「把卧室的灯关了」「灯调暗一点」「空调调到 26 度」「现在有啥设备开着」,AI 会调用对应工具执行。
工具与参数示例(摘自 README):
| 工具 | 说明 |
|---|---|
ha_status |
检查连通性 |
ha_entities |
列实体,如 { domain: "light" } |
ha_state |
查状态,如 { entity: "灯" } |
ha_control |
开 / 关 / 切换 |
ha_light |
开关、亮度、色温,如 { entity: "灯", brightness: 60 } |
ha_all_off |
一键关闭可控设备 |
ha_service |
调用任意 HA 服务 |
实体名解析顺序:aliases 配置别名 → 完整 entity id → 友好名称包含 → entity id 包含。固定口语映射可编辑 ~/.dsh/homeassistant/config.json:
{
"url": "http://localhost:8123",
"token": "eyJ...",
"aliases": {
"卧室灯": "light.yeelink_mbulb3_92ae_light",
"客厅灯": "light.xxx"
}
}
适用场景与注意¶
适合谁:已经在用或愿意部署 Home Assistant,且米家设备已通过 Xiaomi Miot Auto 接入 HA;希望在 DSH 对话和设置页里统一控制,而不是再维护一套直连小米云的方案。
成本:多一个 Docker 容器(README 提到约 1.5 GB 镜像、首次配置约十几分钟);收益是跟随 Xiaomi Miot Auto 维护登录,设备增减在 HA 里完成即可,插件侧不必改。
安全与权限:插件以当前 DSH 进程权限运行,持有 HA 长期令牌即可通过 REST API 操作已暴露的实体。安装前请阅读源码与 MIT 许可证;配置仅写本机 JSON,README 说明不上传、不写日志。
生态说明:DSH 社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;本文安装命令与配置项均以 项目 README 为准。
结尾¶
dsh-homeassistant 把 DSH 的 ha_* 工具与「家庭助理」设置页接到 Home Assistant,在米家直连不可行的前提下,用 Xiaomi Miot Auto 作为稳定中间层,实现灯、空调、风扇、红外遥控等设备的语音化控制。