12月16日,小米开源了官方的 Home Assistant 插件。Home Assistant(业内喜欢称它为HA)是目前全球兼容性极高的开源智能家居平台,支持国内外众多品牌的设备。官方亲自下场推出插件,相比于现有的第三方集成,在安全性和稳定性方面优势明显。它采用官方 OAuth2.0 登录机制,保证用户信息安全,无需再向第三方泄露账号密码,免去信息泄露的隐患。同时,该集成支持多账号登录,纵使你有数以千计的设备,照样能够轻松管理,满足多样化需求。不得不说,这波操作格局直接拉满。
我是最近才开始接触 HA 的,因为布置了家庭机柜嘛,机柜的整体功耗需要监测一下,于是就购入了一款小米智能插座3,实际功耗和我之前通过UPS监测的数据差不多一致,但它会统计得更精细化。因为想着通过HA生态可以延展更多的可玩性,让我的机柜控制更加智能化,于是开始折腾HA之路。
配合着之前的异地组网打通了回家的路,随时随地本地化控制家里的联网设备。本篇简单针对米家的插件进行部署,先把服务跑起来,后续再优化,分享更多的干货知识。
按照惯例,一般会将家庭正式使用的服务加入waf和统一traefik网关入口,后文会有所体现。访问链路如下:
首先找一台内网机器,我这里选取核心业务区,该区域可访问家庭设备接入 WIFI 的网段。
docker compose 编排内容如下
services:
app:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./config:/config
- /run/dbus:/run/dbus:ro
ports:
- "4443:4443"
先拉起容器,使配置文件落地到宿主机,以便配置
docker compose up -d
接下来我们配置监听服务,服务拉起成功后会出现文件 config/configuration.yaml
在它的末尾添加如下内容
http:
server_port: 4443
base_url: https://ha.evling.tech
ssl_certificate: ha.crt
ssl_key: ha.key
use_x_forwarded_for: true
trusted_proxies:
- 10.32.0.2
- 10.32.0.3
- 127.0.0.1
- ::1
由于我的 HA 服务前置有两级代理,所以需要提前配置好信任代理 IP 地址,以便取到真实客户端地址,另外还配置tls证书,监听服务协议为https,访问域名为 ha.evling.tech
接着配置tls证书文件,先创建自签发证书,我这里是自动生成的,各位可能需要自行签发一下即可
将得到的证书和私钥分别填充至 config/ha.crt 和 config/ha.key 下面。 重启 HA 容器
docker compose restart
接着进入容器按照官方的指引安装小米插件,安装好后重启容器。
docker exec -it homeassistant /bin/bash
git clone https://github.com/XiaoMi/ha_xiaomi_home.git
cd ha_xiaomi_home
./install.sh /config
exit
docker compose restart
至此,HA后端服务已安排妥当。
接下来接上 WAF ,进入 WAF 管理后台,配置站点 ha.evling.tech
然后接上 Traefik ,新增一个入口配置下
最后配置家庭内网 dns 服务,将 ha.evling.tech 解析到网关 traefik
当然如上域名接入访问仅供参考,各位也可以直接使用IP形式适当配置进行访问。
接下来是我们配置HA应用的环节了,打开首页地址: https://ha.evling.tech
点击“创建我的智能家居”按钮开始创建用户
选择一个离家近的区域
匿名共享保持默认,都不开
到这里,就已经是初始化完成了,可以登录系统了。
返回首页进行登录刚刚创建的用户。
登录首页后,映入眼帘的是HA的概览面板,呈现出了当时的天气信息
当然,设置栏里有一项告警事项需要我们关注,发现是关于tls配置的提示。
按照提示要求,找到“设置-设备与服务-网络”进行相应配置,然后点击忽略那条消息即可。
接下来是配置米家官方集成插件的环节。在控制台点击左侧的“设置”,选择右侧的“设备与服务”
点击右下角的“添加集成”,搜索框内搜索 xiaomi ,选取第二个“Xiaomi Home”进行添加。
接着会弹出风险告知,勾选同意并进行下一步
基础配置保持默认,直接点击下一步
此时会进行小米登录认证,点击提示链接的地方
采用手机验证码进行登录
登录成功后,默认会连的地址是 homeassistant.local:8123 其实并不存在,将替换为自己部署的域名回车即可,我这里是https://ha.evling.tech
选择家庭与设备,勾选导入设备的家庭
至此,已完成米家设备的导入操作
查看主页
通过访问日志,发现是能顺利取到客户端真实 IP 的,说明符合预期。
通过手机侧也能通过域名顺利登录成功。