手把手教你用 Docker 在 Windows 上搭建 Home Assistant(HA)并接入米家设备

手把手教你用 Docker 在 Windows 上搭建 Home Assistant(HA)并接入米家设备 最近在折腾智能家居想把家里的米家设备统一管理同时还要让我的 Go 程序能通过 API 控制它们。Home AssistantHA是开源家庭自动化的事实标准用 Docker 跑起来最干净。这篇文章记录了我在 Windows 下从零搭建 HA、接入米家、修复网络问题的全过程。一、为什么用 Docker 跑 HA方式优点缺点Windows 桌面版一键安装后台运行不稳定资源占用高虚拟机隔离性好资源消耗大配置复杂Docker轻量、隔离、易迁移Windows 下网络配置略折腾Docker 版最大的好处是配置目录挂载到本地重装/迁移不丢数据。二、准备工作2.1 安装 Docker Desktop去 Docker 官网 下载 Windows 版双击安装重启电脑启动 Docker Desktop确认右下角鲸鱼图标是绿色的2.2 创建 HA 配置目录powershellmkdir D:\DockerFiles\Dha_config目录可以自己改记住就行三、运行 HA 容器3.1 基础命令推荐powershelldocker run -d --name homeassistant --restart unless-stopped -p 8123:8123 -v D:\DockerFiles\Dha_config:/config --dns 114.114.114.114 --dns 223.5.5.5 homeassistant/home-assistant:latest参数解释-d后台运行--name容器名字--restart unless-stopped开机自启-p 8123:8123端口映射访问http://localhost:8123就能进 HA-v挂载配置目录数据持久化--dns指定国内 DNS解决小米登录时的域名解析问题关键3.2 验证容器是否启动powershelldocker ps看到homeassistant状态为Up就成功了。四、初始化 Home Assistant浏览器打开http://localhost:8123你会看到 HA 的欢迎界面。创建管理员账户本地账户和米家无关设置家庭位置可选进入主界面五、安装 HACSHome Assistant Community StoreHACS 是 HA 的“应用商店”装小米集成必须用它。5.1 下载 HACS访问 HACS 发布页下载hacs.zip文件解压到D:\DockerFiles\Dha_config\custom_components\hacs最终目录结构textD:\DockerFiles\Dha_config\ ├── custom_components\ │ └── hacs\ │ ├── __init__.py │ └── ... ├── configuration.yaml └── ...5.2 重启 HApowershelldocker restart homeassistant5.3 添加 HACS 集成进 HA →设置→设备与服务→ 右下角添加集成搜索hacs→ 安装按提示授权 GitHub 账号免费的六、安装小米官方集成6.1 通过 HACS 安装打开 HACS → 右上角“…” →自定义仓库仓库地址填https://github.com/XiaoMi/ha_xiaomi_home.git类型选集成点击添加然后搜索Xiaomi Home→ 下载重启 HA6.2 登录小米账号HA →设置→设备与服务→添加集成搜索Xiaomi Home→ 点击点Click here to login→ 用小米账号登录授权后选择你家导入设备常见问题如果登录时报 DNS 错误就是你在运行容器时没加--dns参数。用下面的命令重建容器即可powershelldocker stop homeassistant docker rm homeassistant docker run -d --name homeassistant --restart unless-stopped -p 8123:8123 -v D:\DockerFiles\Dha_config:/config --dns 114.114.114.114 --dns 223.5.5.5 homeassistant/home-assistant:latest七、验证设备登录成功后HA 的“概览”页面会自动出现你米家里的设备。电视通常是media_player.xiaomi_tv实体小爱音箱media_player.xiaoai灯泡/插座light.xxx/switch.xxx点一下开关如果能控制说明 HA 到米家的链路通了。八、让 Go 程序控制 HAHA 提供完整的 REST API你的 Go 程序发 HTTP 请求就能控制所有设备。8.1 获取长期访问令牌HA 界面 → 左下角用户名 → 拉到最下面 →长期访问令牌→ 创建令牌复制令牌保存好8.2 Go 代码示例gopackage main import ( bytes fmt io net/http ) const ( haURL http://localhost:8123/api haToken 你的长期访问令牌 ) func turnOnTV() { url : haURL /services/media_player/turn_on body : {entity_id: media_player.xiaomi_tv} req, _ : http.NewRequest(POST, url, bytes.NewBuffer([]byte(body))) req.Header.Set(Authorization, Bearer haToken) req.Header.Set(Content-Type, application/json) client : http.Client{} resp, _ : client.Do(req) defer resp.Body.Close() result, _ : io.ReadAll(resp.Body) fmt.Println(string(result)) }九、常见问题Q1容器跑起来了但http://localhost:8123打不开检查容器状态docker ps确保是Up检查端口映射docker port homeassistant应该显示8123/tcp - 0.0.0.0:8123Q2小米登录报 DNS 错误重建容器时加上--dns 114.114.114.114Q3设备同步不全小米官方集成只支持部分设备可以再装一个第三方集成hass-xiaomi-miot在 HACS 搜Xiaomi Miot作为补充十、总结用 Docker 跑 HA 的好处是配置目录挂载重装不丢数据一条命令迁移到任何电脑和你的 Go 程序无缝对接你现在拥有了一个能统一管理米家设备的 HA 平台能通过 REST API 控制的开放接口随时可扩展的智能家居核心下一步你可以写个 Go 程序把 HA 的 API 包装成自己的智能助手——比如“打开电视”、“调高音量”甚至让它根据你的语音指令自动操作。资源链接Home Assistant 官网小米官方 HA 集成HACS 官方文档如果你在搭建过程中遇到问题欢迎在评论区留言。