我曾经在少数派写过不少关于将米家接入 HomeKit 的教程,尽管方法和步骤越来越简单,但无一例外都需要通过代码来进行操作。这对于有编程基础的朋友来说不难,但对大部分不懂代码的人来说就有较高的门槛。一个明显的案例是,每当我发表完一篇教程后,私信里都是各种求助,希望我能够帮他们看看到底是因为什么原因导致的代码报错。

随着智能家居平台和协议的日渐成熟,终于在如今,米家和 HomeKit 之间的互通迎来了一个新的维度:我们已经完全可以在图形化的界面下,来实现过去这些繁琐的操作。在这个过程中,你不会接触到任何一条代码或脚本,只需要用鼠标轻点,就能完全绝大部分的工作。

从 HomeBridge 到 Home Assistant

在过去,我选择将米家接入 HomeKit 的方案一直是 HomeBridge。但这一次我们则要舍弃它,转投到 Home Assistant 的怀抱中。关于二者的原理和差别,这里就不展开细说,主要来了解一下,为什么要转投到一个新的平台上。

首先,Home Assistant 丰富的开发者和生态环境,是这次能够实现无代码操作的根本。虽然如今 HomeBridge 也在往无代码操作的方向努力,但由于不少旧插件作者已经不再更新,自然就不会再支持图形化编辑。所以,选择 HomeBridge 大都还是无法摆脱写 config.json 文件的命运 —— 而这正好是新手最容易出错的地方。

标有 Verified 的就是可以图形化操作的插件,但是一些老旧的插件就无法使用了

其次是 Home Assistant 更加丰富的接入类型。如果是用 HomeBridge,则每个设备必须要有一个对应的插件,否则便无法接入。例如米家后续推出的一些基于蓝牙 Mesh 网络产品,HomeBridge 完全没辙,至今都找不到对应的插件。但 Home Assistant 属于来者不拒,无论是 Zigbee、BLE 还是蓝牙 Mesh,都可以接入。

最后,从功能性上来说,Home Assistant 也比 HomeBridge 要强大不少。毕竟前者本身就是一个开源智能家居平台,至今已经有 8 年历史,它推出的时候苹果的 HomeKit 可能还在玩泥巴,除了支持 HomeKit 桥接之外,还支持大量的智能设备和完整的自动化操作。而后者则更像是一个单纯的「桥接器」,仅仅只是用来实现其他平台的设备接入到 HomeKit 这一个单独的功能。

Zeus for Home Assistant

开始操作

简单铺垫完成后,我们正式开始进入实操环节。由于设备类型不同,具体的操作步骤可能会有变化,你可以自行根据自己的情况查找适合自己的教程。

第一步,安装 Home Assistant

安装 Home Assistant 的方法有很多,官方文档给到的方法有四种:

  • 直接在硬件设备上安装 Home Assistant 系统;
  • 通过 Docker 这类的容器来安装;
  • 在传统的 Linux 发行版机器上手动安装;
  • 在 Python 虚拟环境中安装

这四种方案各有优缺点,我个人建议有树莓派的朋友选择第一种,有 NAS(或支持 Docker 且性能较强的路由器)的朋友选择第一种或第二种。因为前者可以通过刷写 SD 卡直接将 Home Assiatant 安装在树莓派上,后者可以在 NAS 中的 Docker 管理器中直接搜索安装或通过虚拟机来安装。它们都是装好即用,不用再费时去做环境搭建,避免绝大部分的报错。

如果上述两个设备都没有,那么最好的建议是购买一个,当然如果你要能找到一台可以 24 小时运行的电脑也没问题。另外,用后面两种方法也可以安装一个较为完整的 Home Assistant 环境,但是这就与我们「不涉及代码」的初衷相违背了。

所以这里我们就以树莓派和 NAS 做案例,简单演示如何安装 Home Assistant。

对于树莓派方案,你需要准备一个树莓派 3B 或树莓派 4 (不然呢)、一个读卡器和一条网线。需要注意的是,Home Assistant 对设备的性能还是有一定需求的,尽量选择配置更高一些的树莓派 4,搭配一张 16G 以上的高速 SD 卡作为系统存储,会让后续操作顺滑不少。

接着,到 Home Assistant OS 的 GitHub 发布页面下载对应你手中树莓派的镜像,并在电脑上用 balenaEtcher 刷写到 SD 卡中。如果你拿不准到底要下哪一个,那么根据你的树莓派型号,直接点下面的链接就可以直接下载。

注意刷写的目标磁盘不要选错

刷写完成后,将树莓派接上电源和网线,启动完成后在电脑的浏览器中输入 homeassistant.local:8123,即可进入到 Home Assistant 后台管理界面。

对于方案二,操作就更加简单了。由于我目前使用的是 NAS 品牌是威联通 NAS,因此后面也将用它来举例,其他品牌的 NAS 可以自行查找对应的资料。

首先是通过 Docker 来安装的方式。登陆到 NAS 后台后,在存储池的任意一个位置新建 homeassistant 共享文件夹,用于存储 Home Assistant 所产生的配置文件。

例如我是直接建立在存储池的根目录下

接着,打开 Container Station,然后点击左侧的创建,搜索 Home Assistant,选择「Docker Hub」下的第一个搜索结果,点击安装。

然后,选择最新版本的映像,并按照下面的参数来进行设定。

设定完成后,点击确认安装,并等待安装完成。完成后,在电脑浏览器中输入你的 NAS IP 地址:8123,就可以登陆到 Home Assistant 后台管理页面。

而通过虚拟机来安装,则需要先下载 Home Assistant 的虚拟机镜像。首先到这里下载最新的 vmdk 虚拟机文件,然后解压后上传到 NAS 任意一个文件夹中。

由于 NAS 中的虚拟机文件为 img 格式,因此在运行之前,我们需要进行一步转换操作。打开 Virtualization Station,然后点击「导入 - 映像转换器」,选择你上传的 vmdk 文件和转换后的保存位置,点击确定并等待一段时间即可。

完成之后,我们就可以开始建立虚拟机了。同样是在 Virtualization Station 中,点击「建立」,然后按照下面的图片来进行设置。需要注意的是,启动固件一定要选择 UEFI,否则必然出错。

这样我们就成功创建了一个 Home Assistant 虚拟机。在虚拟接列表中点击开始,然后打开远程桌面,等到界面中显示了 ha > 即表示启动完成。

回到虚拟机列表后,就可以找到 Home Assistant 的 IP 地址,在浏览器中输入这个 IP 地址,然后加上 :8123 ,就能进入到 Home Assistant 后台管理界面了。

不过,通过虚拟机安装的 Home Assistant 首次启动需要等待大概 20 分钟或更长

需要注意的是,通过 Docker 方案安装的 HomeAssistant 是没有 Supervisor 的(你可以理解为官方提供的一个插件库)。如果你只是为了和我一样只是单纯地想将米家的设备接入到 HomeKit,不打算使用 HomeAssistant 的其它功能,那么可以采用这个方案。否则,我强烈建议使用树莓派来刷写 HomeAssistant 的官方系统,或是用虚拟机来安装。

无论是何种方案,耗费的时长都不一定相同,且首次启动 Home Assistant 也需要较长时间。在这之中影响的因素包括机器性能、硬盘速度和网络环境。如果某一步卡住了,可以耐心等待一段时间,或是试试万能的重启 / 重头再来操作。

现在,我们安装好了 Home Assistant,其实就已经完成了最难的一步,接下来的操作,就非常简单了。

安装 Xiaomi MIoT

能实现无代码安装,除了 Home Assistant 外,另一位大功臣就是 Xiaomi MIoT 插件。这个插件采用了 MIoT 通信协议,所有已接入米家的智能设备(注意是所有),无论是蓝牙、蓝牙 Mesh 还是 ZigBee 设备,均可通过这个插件快速接入 Home Assistant,而且还支持本地(局域网)和云端两种工作方式。

MIoT 通信协议是小米智能家居从 2018 年起推行的智能设备通信协议规范,此后凡是已接入米家的设备均可通过此协议进行通信。此插件按照 MIoT 协议规范与米家设备或小米服务器通信,实现对设备的状态读取及控制。

要安装这个插件也非常简单,到这个网页中下载插件的压缩包,解压后在「xiaomi miot raw-master > custom components」文件夹中,找到「xiaomi miot raw」文件夹,将它拷贝到 Home Assistant 目录中的「custom components」文件夹即可。

最后,重新启动 Home Assistant,插件就成功安装了。

如果 Home Assistant 目录中没有 custom components 文件夹,手动创建一个就可以了。钥匙你不知道安装目录在哪,在 Home Assistant 后台管理界面中点击「配置 - 信息」,页面中的「configuration.yaml 路径」即是 Home Assistant 的安装目录。

除此之外,作者还提供了通过 HCAS 商店来安装 Xiaomi MIoT 的方法。但这一方法需要科学上网的环境,对一些同学来说可能比较棘手,且耗费的时间可能还会更长,所以我认为最便捷保险方式式还是手动安装。

对了,开发这个插件的作者是一位叫 ha0y 的国人,在这里向他表示由衷的感谢。

添加米家设备

这里作者 ha0y 已经在 GitHub 页面写的非常详细了,你可以直接跳转到这里进行学习。等你成功将米家设备添加到 Home Assistant 之后,我们就可以进行下一步操作。

不过需要注意的是,Home Assistant 所支持的设备类型并不如米家的丰富,因此一些不支持的设备可能会被映射称其他类型,例如空气净化器会被映射为风扇。不过不用担心,这并不影响后续的操作。

目前,插件所支持的设备类型有(包括但不限于):

  • sensor:各种传感器
  • switch:开关、插座
  • light:灯
  • climate:空调、空调伴侣等
  • fan:风扇、空气净化器
  • cover:窗帘
  • camera:摄像头
  • humidifier:加湿器、除湿器
  • media player:小爱音箱(支持红外线控制)
  • route:路由器
  • vacuum:扫地机器人
  • water_heater:热水器
  • binary_sensor - 马桶盖等

接入 HomeKit

添加好米家的设备后,我们就可以着手将它们加入到 HomeKit 了。

在「配置 - 集成」中,点击右下角的添加集成,搜索 HomeKit,然后选择 HomeKit,便可以进入到最关键的一步。

别选错了

这时,Home Assistant 会提示我们「选择要包含的域」。其实这句话的意思是,要将什么类型的设备添加到 HomeKit 中。这里我建议添加基本的灯、开关、风扇、传感器和空调即可,其他设备如果你有则可以按需添加(如窗帘、加湿器等)。

在选择时,千万不要一股脑全部勾选所有选项,因为 HomeKit 所支持的设备类型相比米家和 Home Assistant 来说都非常少,所以如果你全部勾选,到时候你就会发现自己的家庭 App 中被映射多了一堆不知所云的设备按钮。

接着,你可能还会遇到需要选择包含或排除某个实体的操作,这里也是很多人容易犯错的地方。实体是 HomeAssistant 中的最小单位,表示某个设备内的一种或多种属性及状态,如灯的亮灭、开关的闭合、扫地机器人的各种动作,以及天气预报、电池电量、用户这些参数等等。

一般来说,一个设备可能会包含一个或多个实体。但是,千万不要将「实体」和某个「米家设备」划等号,设备是实体的上一层,属于包含和被包含关系。而通过「选择要包含的实体」这个功能,我们就可以手动设定让哪些设备显示在家庭 App 中。

或许看到这里你已经晕了,不用怕,我举个例子,相信你看完就会马上理解。我的小米空气净化器 2S 这一个「设备」中,就包含开关 / 风速(风速最小就是关闭)、PM2.5、温度、湿度、滤网使用时间和滤网剩余寿命这六个「实体」。但是在我的房间里,已经有了一个可以原生接入 HomeKit 且更精确的温湿度计,所以我就可以在 HASS Bridge 的实体中选择排除掉来自空气净化器的温湿度数据,这样就不会在家庭 App 的设备状态中看到两个温湿度的传感器了。

而对于 HomeKit 中没有的设备类型,像是「滤网寿命」和「滤网使用时间」这样项目,则不会被添加到家庭 App 中。

我这里没有选的原因是在上一步直接把整个传感器的域排除了

完成后,电脑上的操作就全部搞定了,HomeAssistant 就会在左侧的「通知」界面下显示 HomeKit 的配对码。在 iPhone 或 iPad 上打开家庭 App,扫描这个二维码,上面这些选定的米家的设备就会全部添加到 HomeKit 中了。

对了,如果你发现更改了 HomeKit 插件的一些设定之后,家庭 App 中没有及时更新,在集成页面里对它进行重载或禁用后再启用,基本就能解决。如果依然没有反应,重启整个 Home Assistant 系统或是硬件设备即可。而后续你在调整 HASS Bridge 是,还会在域选择页面下出现模式选项,保持默认即可,不要瞎改。因为只有「bridge」模式才能一次性桥接多个设备,而「accessory」模式一次只能接入一个设备。

如果你的设备比较多,那么在改回 bridge 模式之后,就需要全部重新分配房间和改名......

总结

总的来说,相比此前跑代码可能会遇到的各种情况,这一次真的不难了,绝大部分情况下是真的可以一条代码和脚本都遇不到,亲自上手试试吧,感受一下成功的快乐。

顺带一提,之前我随手在小米有品买的灯带,找遍了 HomeBridge 插件也没有找到接入的方法。直到某天晚上我随手试了一下 Home Assistant,没想到只用 5 分钟就搞定了。

可以说,有了 Home Assistant + Xiaomi MIoT 这一套强大的组合,小米的智能家居几乎可以随便买,再也不用再担心 HomeBridge 插件不支持的问题,只要简单几步就能把它添加到 Home Assistant 中,同时立刻同步到家庭 App 上,享受双平台带来的愉悦。

题外话

我去翻了翻过去我在少数派写过的文章,无意间发现阅读量最高的一篇正好就是《如何让米家设备轻松接入 HomeKit?》,达到了 16 万。

说实话,这个结果是让我有点惊讶的,毕竟我一直以为我阅读量最高的文章还是前年的年度征文(不要问我为什么不是去年,因为咕了)。不过这其实也反映出一个现象,我们对于多平台智能家居设备的互通真的有非常高的需求,尤其是目前销量和用户占比很高的小米米家和 Apple HomeKit。

在过去,我们总是要通过各种曲线救国的方法来实现这些功能。尽管今天已经进步到了不需要代码的地步,但却距离我心中所想的「大一统」还是有很遥远的距离。好在如今有了大厂牵头的 Matter 协议,让充满了品牌和生态壁垒的智能家居行业出现了一丝融合和统一的曙光。只希望即将到来的 Matter 能够打破品牌的壁垒,将这些设备都集合到一个控制平台之下,让这些繁琐的操作成为历史。

但从另一个角度来说,折腾的过程就是体会挫折与克服困难的过程。5 年前的那个冬天,我在几乎没有中文教程的情况下,努力了两个下午,真的将一个 YeeLight 灯泡接入了 HomeKit,并激动地发了条视频朋友圈。在智能家居还没有像今天一样普及的 2016 年,很多身边的同学朋友都被这个操作给小小惊讶到,甚至有不少对科技从不关心的女生也好奇地来问我是怎么做到的。

或许,从「无序生长、扩展横行」到「统一标准,规范升级」,就是每个科技产品和服务的必经之路。也许在多年以后,智能家居已经被 Matter 协议所引领,所有人都可以不用担心品牌和生态随意购买的时候,我们便不会再频繁地回想起以前用智能家居时,还有这么多的品牌和协议需要去纠结。

就像如今,可能已经没有多少 iPhone / iPad 用户再听说过「越狱」和「美化」这个两个词了,但在学生时代,他们简直是我每次 Apple 新品发布会后最期待的事情。然而,随着 iOS 的逐步完善的功能和更加规范的开放,曾经让 iOS 用户耳熟能详的「红雪」「绿毒」「盘古」和「太极」,都已经逐渐消散在了科技发展的历史中。

说来一件有意思的事情是,之前有一位对科技并不感兴趣的闺蜜来我家做客,看到我客厅上摆的一台 iPhone 4S,好奇地问我,「这是乔布斯最后发布的那台手机吗?」我说是。当我点亮这台 iOS 6 系统的 iPhone 4S 时,她略带惊讶地和我说:

原来以前的苹果系统长这样子啊。

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰

> 年终盘点活动即将开启,和我们一起投出你的「年度之选」吧 ❤️