将米家设备接入苹果家庭 Homekit

安装 HomeAssistant

安装方式

HomeAssistant 安装有四种方式,分别为:

  • Home Assistant Operating System (HAOS)
  • Home Assistant Container (Docker 容器)
  • Home Assistant Core (通过 pip 安装内核)
  • Home Assistant Supervised

这里我们使用第一种 HAOS 的方式安装,这是官网最推荐的一种方式,同时也是支持功能最完整的一种方式,不同方式的区别详见下图:

如果还不是很清楚具体的细节差别和不同安装方式的应用场景,可以参考这个视频,讲解的很清楚。

下载 HAOS 镜像

前往这个地址下载合适的镜像,官方提供的镜像支持的平台非常多,可以看到除源码外有多达 44 种镜像类型:

这里我使用 ESXi 创建虚拟机,可以直接下载 ova 格式的包直接导入虚拟化平台使用,理论上桌面端的 Vmware 也是可以直接导入 ova 的,感兴趣可以自行测试。截止本文编写时最新版本为 13.2:ova 包下载

安装 HAOS

本文基于 Vmware ESXi 安装,实际根据自己情况选择不同系统平台安装即可。

下载好后我们进入 ESXi 平台创建新虚拟机,创建类型选择通过 OVF 或 OVA 文件部署:

下一步输入虚拟机名字同时上传刚刚下载好的 OVA 包:

后续步骤根据自己的情况一路下一步完成创建即可:

需要注意的是在 OVA 包上传完成前不能刷新浏览器页面:

创建完成后启动虚拟机,正常情况就可以看到欢迎页面的 banner 信息了:

如果当前网络环境下存在可用的 DHCP 服务器则可以直接获取到 IP 地址,使用分配到的 IP:8123 即可进入 HomeAssistant 初始化页面,而如果没有 DHCP 服务器则需要手动在控制台配置网络信息,包括 IP 地址、子网掩码、网关、DNS 服务器,需要注意的是,网络最好可以访问 GitHub 通畅,否则后续初始化以及安装插件等步骤会问题层出不穷抑或非常煎熬,网络配置命令格式为:

1
2
net update [网卡名称] --ipv4-address [IP(CIDR 格式)] --ipv4-gateway [网关] --ipv4-method static --ipv4-nameserver [DNS]
# 获取网卡名称:net info

系统初始化

首次进入 HomeAssistant 页面需要进行初始化,网络通畅的情况下大约需要 20 分钟左右,若一切顺利可以看到下面的界面:

点击创建我的智能家居设置账号密码以及地区等信息便可进入主界面:

刚安装好的系统是没有设备的,这里我截的图片是已经安装配置好的,会有很多设备,我们暂且忽略。

而如果看到如下界面大部分原因都是网络问题造成的,图中就是因为无法访问 ghcr.io 镜像而导致初始化失败,一般来说更换通畅的网络(OpenWrt 作为网关代理等方式)都可以解决问题,具体还要根据报错日志信息具体分析。

开局配置

安装加载项插件

按照图示指示找到加载项商店:

分别找到文件编辑器和 SSH 终端进行安装:

安装好后就可以在左侧侧边栏使用:

安装 HACS

HACS(Home Assistant Community Store)是 Home Assistant 的一个社区驱动的扩展商店,用于管理第三方自定义组件、卡片、主题和其他自定义资源。通过 HACS,可以轻松地安装、更新和管理 Home Assistant 的各种扩展功能,而无需手动下载和放置文件,我们接入米家最重要的 Xiaomi Miot Auto 插件就在这里。

安装命令:

1
wget -O - https://get.hacs.xyz | bash -

在上一步打开的终端直接粘贴上述命令,网络通畅的情况下便可直接完成安装,此时需要重启系统,可以在开发者工具中重启,也可以按照安装完成后的页面提示重启:

重启完成后就可以添加 HACS 服务了,进入设置中找到设备与服务:

点击右下角的添加集成:

搜索 HACS,进入后按照页面提示进行配置:

其中需要使用 GitHub 进行授权,按提示操作就可以:

如果看到如下界面就完成了 HACS 的配置:

安装米家插件 Xiaomi Miot Auto

通过左侧边栏进入 HACS,搜索 xiaomi,找到 Xiaomi Miot Auto:

我这里已经下载过了,正常应该在 Available for download 这栏里,进入后下载该插件,完成后同样需要重启,之后就可以回到设备与集成登陆小米账号添加设备了:

注意是选 Xiaomi Miot Auto 而不是 Xiaomi,我们选择账号集成,其他方法我没有测试:

输入账号密码其他设置不动进入下一步:

登陆后就能显示出账号下的所有设备,可以根据需要选择排除模式或包含模式将设备添加到 HomeAssistant,到这一步回到首页概览应该就可以看到自己的设备了:

禁用非必要实体

在将米家设备桥接到 HomeKit 之前,建议禁用一些不必要的实体。否则可能会出现以下情况:当将小米智能插座添加到 HomeKit 时,插座会被识别为三个设备,除了开关之外,其中插座的指示灯被识别为灯具,插座温度也被误认为环境温度传感器,这可能不是我们期望看到的结果。

以我的厨房插座为例,对应指示灯的实体就是“厨房插座 Indicator Light”,按下图步骤进入实体注册表找到对应的实体:

点击右上角的设置按钮,将“已启用”的开关关闭:

以此类推,可以禁用掉其他不必要的实体,一般来说我们不会去直接控制指示灯的开关,所以所有的指示灯实体都可以禁用。

接入 HomeKit

到目前为止,我们已经成功将米家设备接入 HomeAssistant 家庭网关了,距离接入 HomeKit 也只差一步!

安装 HomeKit Bridge 插件

下面我们就开始对接 HomeKit,首先需要到设备与服务中添加 Apple 集成:

这一步选择要包含的域可以按需要设置,第一次也可以全选上,后续根据自己情况慢慢调整:

移动端添加桥接设备

添加成功后左边侧栏会多出一条通知,展示出一个二维码,在相同网络环境下使用 HomeKit 扫描这个二维码就可以将 HomeAssistant 下的所有设备添加进 HomeKit,在加入过程中,可能会提示“未认证设备”,点击“仍要添加”即可。然后完成剩余步骤,逐个添加设备:

这里需要注意的是,手机必须和 HomeAssistant 服务器在相同网络环境下,因为涉及到 mDNS 多播通信故必须要在同一个网段中,若在核心交换机上划分了网段且 HomeAssistant 服务器与终端设备(IOT 设备和移动终端设备)不在同一网段的情况下就必须要交换机支持 mDNS 中继功能,否则无法正常添加桥接设备,具体表现为添加超时,找不到设备等。

展示一张完成效果图:

后续设备变更

若后续使用过程中新添置、移除或更换了设备,HomeKit 中不会自动更新,需要手动在 HomeAssistant 进行一下更新,首先需要进入 Xiaomi Miot Auto 这个插件,点击配置:

重新登陆账号更新一下当前账号下的设备信息:

完成后再到 HomeKit Bridge 插件进行配置:

对需要添加到 HomeKit 中的实体进行变更后提交就可以了:

海康摄像机/录像机接入 HomeKit

有细心的朋友可能会发现,在上面 HomeKit 的图片中我还接入了一些摄像头,而这些摄像头并不是米家中的设备,它们是海康录像机通过 scrypted 这个插件接入的,接入后就可以在 HomeKit 中进行实时预览、对讲(需要摄像头支持)等功能。

另外需要提一下的是不仅是海康,只要是支持 RTSP 取流的摄像机或录像机都可以用这个方法添加进 HomeKit。

安装 Scrypted 插件

还是进入到加载项商店:

点击右上角三个点进入仓库选项:

添加存储库地址:https://github.com/koush/scrypted

静待一会添加完成后刷新页面,划到最底部就可以看到 Scrypted Home Assistant Addon 插件分类,我们要安装的就是最后一个:

安装完成后启动插件并开启侧边栏,若默认已开启则不需要更改:

配置 Scrypted

从侧边栏找到并进入 Scrypted 管理页面:

点击进入左侧的插件选卡项:

点击 Install:

搜索 rtsp 并安装:

按照相同的方法再搜索 Homekit 安装:

回到插件主页添加设备:

点击添加 RTSP 摄像机:

添加录像机通道配置:

前两行就是录像机的用户名密码,也可以新建一个普通账号只用于取流,这里给出海康录像机的 RTSP 取流地址,其他品牌可以自行查找:

1
2
3
4
rtsp://[录像机地址]:554/Streaming/Channels/101 # 第一个通道
rtsp://[录像机地址]:554/Streaming/Channels/201 # 第二个通道
rtsp://[录像机地址]:554/Streaming/Channels/301 # 第三个通道
# 依此类推...

在下方的扩展中勾选 HomeKit:

回到左侧设备主页:

点击进入创建的摄像机:

进入 HomeKit 选项:

使用手机 HomeKit 扫描这个二维码添加设备即可将摄像机添加到 HomeKit。

安全配置(可选)

一般来说开源软件的安全性都不用太过担心,但是谁又能确保一定没问题呢,毕竟很少有人会去逐行审计源代码,尤其是我们引用了众多开源项目的情况下,所以最简单的方式是直接在网关设备上禁止 HAOS 出站访问互联网,可以参考我的防火墙策略配置:

因为我的 HAOS 设置的网关为 OpenWrt,所以禁用 OpenWrt 联网也就禁止了 HAOS 联网;

因为 HomeAssistant 控制米家设备本质上还是需要和米家服务器通信,所以要放通与米家相关服务域名的流量,相关域名可以参考:

1
2
3
4
account.xiaomi.com # 小米认证服务
api.io.mi.com # 米家服务
core.api.io.mi.com # 米家服务
119.29.29.29/32 # 腾讯 DNS,其他 DNS 也可,前提是需要和 HAOS 中配置的一致

参考


将米家设备接入苹果家庭 Homekit
https://blog.tddt.cc/posts/17.MiHomeKit.html
作者
TechPANG
发布于
2024年11月19日
许可协议