易雾君
Published on 2024-12-24 / 23 Visits
0
0

智能家居系列:喜大普奔,小米官方开源HA米家集成新体验(一)

12月16日,小米开源了官方的 Home Assistant 插件。Home Assistant(业内喜欢称它为HA)是目前全球兼容性极高的开源智能家居平台,支持国内外众多品牌的设备。官方亲自下场推出插件,相比于现有的第三方集成,在安全性和稳定性方面优势明显。它采用官方 OAuth2.0 登录机制,保证用户信息安全,无需再向第三方泄露账号密码,免去信息泄露的隐患。同时,该集成支持多账号登录,纵使你有数以千计的设备,照样能够轻松管理,满足多样化需求。不得不说,这波操作格局直接拉满。

我是最近才开始接触 HA 的,因为布置了家庭机柜嘛,机柜的整体功耗需要监测一下,于是就购入了一款小米智能插座3,实际功耗和我之前通过UPS监测的数据差不多一致,但它会统计得更精细化。因为想着通过HA生态可以延展更多的可玩性,让我的机柜控制更加智能化,于是开始折腾HA之路。

配合着之前的异地组网打通了回家的路,随时随地本地化控制家里的联网设备。本篇简单针对米家的插件进行部署,先把服务跑起来,后续再优化,分享更多的干货知识。

按照惯例,一般会将家庭正式使用的服务加入waf和统一traefik网关入口,后文会有所体现。访问链路如下:

f41c970f-29ca-4605-8048-a42d750de268.png

首先找一台内网机器,我这里选取核心业务区,该区域可访问家庭设备接入 WIFI 的网段。

52a95abd-864e-43ad-9e23-0bbf6e09c7a9.png

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证书文件,先创建自签发证书,我这里是自动生成的,各位可能需要自行签发一下即可

9e100c69-943b-49c2-9135-d62e4c435c72.png

将得到的证书和私钥分别填充至 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后端服务已安排妥当。

f668c514-b58d-48bf-9c5d-43027522df6e.png

接下来接上 WAF ,进入 WAF 管理后台,配置站点 ha.evling.tech

42dfbdcf-d437-4a4b-bd89-9f4e0c6384d1.png

然后接上 Traefik ,新增一个入口配置下

0f12ef37-5b0c-4847-9613-7c87400193dc.png

最后配置家庭内网 dns 服务,将 ha.evling.tech 解析到网关 traefik

6d45df80-d074-4358-b1e7-5e67be5ea840.png

当然如上域名接入访问仅供参考,各位也可以直接使用IP形式适当配置进行访问。

接下来是我们配置HA应用的环节了,打开首页地址: https://ha.evling.tech

fe377d58-6746-45b4-a90b-c739f8281019.png

点击“创建我的智能家居”按钮开始创建用户

f276c8c6-4146-4e6b-97ce-de24c7538485.png

选择一个离家近的区域

4dd9bce6-46ef-4bf8-8dad-1a999fcde583.png

匿名共享保持默认,都不开

396be39b-f3b2-49e8-badc-cbcc41da2046.png

到这里,就已经是初始化完成了,可以登录系统了。

a9bd45c3-cf61-4d72-b9f8-1359cac1fd98.png

返回首页进行登录刚刚创建的用户。

d5706ecf-e8c6-440e-b617-59aa5b78bcd9.png

登录首页后,映入眼帘的是HA的概览面板,呈现出了当时的天气信息

a0ab8bf0-43c3-437e-bed2-e0bb0f337f2f.png

当然,设置栏里有一项告警事项需要我们关注,发现是关于tls配置的提示。

9e13aef7-11b0-4aa2-8700-bb877c38c0a7.png

按照提示要求,找到“设置-设备与服务-网络”进行相应配置,然后点击忽略那条消息即可。

a51b8425-1729-4419-8b99-fdf151eb3ac9.png

接下来是配置米家官方集成插件的环节。在控制台点击左侧的“设置”,选择右侧的“设备与服务”

f54ca6f8-b13e-424c-96f2-b7db4003682a.png

点击右下角的“添加集成”,搜索框内搜索 xiaomi ,选取第二个“Xiaomi Home”进行添加。

176a631a-d367-46e9-beac-d17d5eae296e.png

接着会弹出风险告知,勾选同意并进行下一步

265a7098-f5db-4d09-a786-581ca2b85218.png

基础配置保持默认,直接点击下一步

5420333d-0a44-4a0e-9851-c9abc8e26f7b.png

此时会进行小米登录认证,点击提示链接的地方

c46a9f0a-614e-4b0d-86a0-b664a14d8dac.png

采用手机验证码进行登录

90329e8d-702d-432d-8534-447f6cabb55c.png

登录成功后,默认会连的地址是 homeassistant.local:8123 其实并不存在,将替换为自己部署的域名回车即可,我这里是https://ha.evling.tech

753dd5b0-b3da-4a6e-ba7a-b792a0cd2341.png

选择家庭与设备,勾选导入设备的家庭

09872a77-1571-4daf-908b-4a228aae7da8.png

至此,已完成米家设备的导入操作

7559ce87-e48f-49be-bcd7-792fe74fb820.png

查看主页

05e49737-c2ce-45df-bd4c-991eab4e8a5a.png

通过访问日志,发现是能顺利取到客户端真实 IP 的,说明符合预期。

b7e7c7ad-ccba-484d-8819-295027d5e1b3.png

通过手机侧也能通过域名顺利登录成功。

e3d2ee6f-cfbc-49d1-a9d7-11a7c3bdeed6.jpeg


Comment