摘要:回想起我开始折腾 HomeBridge 和 Home Assistant 的最重要原因,就是将米家的设备接入到 HomeKit 里去使用。从一开始需要纯代码操作,不同的设备类型都需要对应的插件或集成,再到后来 Miot Auto 和 HomeBridge-Mi
回想起我开始折腾 HomeBridge 和 Home Assistant 的最重要原因,就是将米家的设备接入到 HomeKit 里去使用。从一开始需要纯代码操作,不同的设备类型都需要对应的插件或集成,再到后来 Miot Auto 和 HomeBridge-Miot 这类「集大成」且可视化操作的插件出现,一晃就已经 8 年过去,我已经从一个大学生变成职场人,再到后来的自由职业者。
而这个月对于智能家居玩家来说,可谓是「过大年」了。Miot Auto 经过无数次迭代,终于来到了 1.0 版本,带来了不少新功能也提高了稳定性;同时就在昨天,小米官方也发布了将米家设备接入 Home Assistant 的「米家集成(Xiaomi Home)」,支持将大部分小米米家的设备接入到 Home Assistant 中去使用。
那么,顶着 200 万官方 logo 的米家集成和此前第三方开发者开发的 Miot Auto 有什么不同?使用起来谁的体验更好?经过我的体验之后,我想我可以在这里告诉你答案。根据官方中文文档,米家集成是小米官方提供支持的 Home Assistant 集成,允许用户在 Home Assistant 中使用小米 IoT 智能设备。该集成及其使用的云端接口与 Miot Auto 相同,均为小米官方 API。
目前,米家集成支持大部分米家设备接入 Home Assistant,但仍有部分设备(如蓝牙、红外及虚拟设备)不支持。不过,随着后续更新,米家集成将覆盖更多米家平台产品,无论是官方出品还是第三方制造。
得益于 Home Assistant 和小米的开放性与包容性,你可以在米家集成中登录多个小米账号,且不受地区限制。这意味着,你可以在同一 Home Assistant 系统中操作或设置来自不同账号、不同地区的米家设备。根据官方信息,米家集成的接口已在中国大陆、欧洲、印度、俄罗斯、新加坡和美国六个地区的机房部署,全球范围内均可使用。
此外,米家集成还支持本地局域网控制,以提升设备控制和数据上报的速度。这项功能不受地区限制,全球均可使用。要实现本地化控制,前提是你的米家设备需要配备中枢网关。专用中枢网关或内置中枢网关的设备均可实现。如果没有中枢网关,所有控制指令将通过小米云端传输。需要注意的是,小米的中枢网关目前仅在中国大陆地区可用,其他地区尚不支持。因此,如果你身处国外并希望使用米家集成的本地局域网控制功能,需使用内置中枢网关的设备。
如果没有中枢,米家集成也支持对开启了「局域网控制」功能的米家设备实现部分的本地化控制,但仅限于使用 IP 协议的设备,例如连接 Wi-Fi 的空气净化器、灯泡,或是网线连接路由器的设备等,无法控制蓝牙 Mesh、ZigBee 等协议接入的设备。而且,官方还提示这个功能可能会引起一些异常,甚至建议不要使用。
最后,当前小米中枢网关(含内置中枢网关的设备)的固件还不支持 Home Assistant 本地化控制,不过官方表示后续会发布支持这一特性的固件。
官方提供了三种集成的安装方法,但对于用户而言,我认为了解 HACS 和手动安装两种即可。不过,不管使用哪一种,都需要先符合以下条件:
Home Assistant Core 的版本大于 2024.11.0;Home Assistant 操作系统的版本大于 13.0。你可以在 Home Assistant 的「设置 > 关于 Home Assistant」里查看是否符合要求。如果不符合,请及时升级对应核心和操作系统。
通过 HACS 的安装是最简单方便的。不过在使用它之前,请确保你已经正确在 Home Assistant 中安装并配置好了 HACS 商店,并可以正常访问。
由于米家集成还没有添加到 HACS 商店,因此我们需要手动添加软件源。进入 HACS 后,点击页面右上角的三个点,在弹出的菜单中选择「Custom repositories(自定义存储库)」。接着,在 repositories 一栏填上米家集成提供的源地址:
然后在下方的 type(类型)里点击 repositories(存储库),最后再点击右下角的 Add(添加)。
完成添加后,刷新一下页面,在 HACS 商店上方的搜索栏里搜索「xiaomi home」,就能找到米家集成,点击进入后就能在右下角看到安装按钮。
安装完成后,Home Assistant 会提示需要重启,重启之后便安装成功了。
手动安装适合 HACS 安装不太方便或无法安装的朋友。来到米家集成的 GitHub 页面,点击右上方的 Code 按钮,然后通过「Download Zip」将整个米家集成的文件下载到本地。下载好之后解压,将custom_components目录下的xiaomi_home整个文件夹复制,粘贴到 Home Assistant 的config/custom_components 目录下。
粘贴完成后,手动重启 Home Assistant,即安装完毕。不过,手动安装的集成不会自动检查更新,记得及时去米家集成的 GitHub 主页看看,如果有新版,就按照上面的操作步骤再来一遍,即可完成集成更新。
安装好米家集成后,我们再来到 Home Assistant,进入「设置 > 设备与服务」的集成页面,点击右下角的「添加集成」按钮,搜索找到 Xiaomi Home。
紧接着,一步步按照提示步骤进行操作:
这里会告诉你使用米家集成的一些风险和问题,勾选下方的同意,否则就没法用了。其中很有意思的一句话是「使用此集成遇到相关问题时,您应当向开源社区寻求帮助,而不是联系小米客服。」—— 看来小米也害怕客服工作量暴增。
这里需要你选择你的米家账号地区,根据你注册小米账号时选择的地区设定,一般情况下都是中国大陆和简体中文。
来到这里,需要你点击卡片中的「请点击此处进行登录」跳转到小米官方网站进行登录授权,登录完成后会自动回到 Home Assistant。
这一步是选择你要接入的家庭和设备。米家集成会自动获取你在米家 App 里的房间和设备配置,在下方勾选你想要导入设备的家庭,其它保持默认,点击下一步。
完成上述操作后,米家集成会自动将设备按照设定的要求,将米家 App 中的设备全部添加到 Home Assistant 中,最后点击卡片右下角的「完成」按钮,结束添加操作。不过如果你的米家设备较多,那么就需要等待一定时间。
后续如果你想要调整该账号的设定,可以到「设置 > 设备与服务」的集成页面下找到 Xiaomi Home,点击它,在对应的小米账号右侧点击「配置」接口。
将米家设备添加到 Home Assistant 后,除了用 Home Assistant 控制米家设备外,你还可以:
联动其它接入 Home Assistant 的设备,实现跨平台自动化;借助 HASS Bridge 将它们添加到 Apple 家庭中使用;通过 Home Assistant Matter Hub 将它们映射为 Matter 标准的设备,直接接入到 Google Home、亚马逊 Alexa、三星 SmartThings、vivo 智能家庭等支持 Matter 的智能家居平台使用,实现真正的「万物互联」。作为老牌的米家接入 Home Assistant 集成,Miot Auto 一直是许多人的选择。经过多年无数个版本的迭代,Miot Auto 的稳定性和易用性已经赢得了无数用户的口碑。如今,对比官方下场的 Xiaomi Home 米家集成,Miot Auto 还是最佳选择吗?二者的差别在哪?
Miot Auto 使用的是轮询机制,即 Miot Auto 会每隔几十秒与设备联系刷新一次状态。但这就会出现延迟的问题,例如当你在上一次刷新刚结束的第一秒打开了一个灯的开关,那么 Home Assistant 中通过 Miot Auto 接入的灯就需要在 9 秒之后才能将状态显示为「开」。
在 Miot Auto 以 token 方式集成时,允许用户设置轮询的时长,目前默认是 30 秒。而通过账号集成时,则需要更复杂的操作。一般情况下,对于开关、灯、环境传感器等设备,如果过于频繁刷新状态,可能会使设备负载过高,同时大大增加电池设备的耗电量。而对于人体传感器、门窗传感器、无线开关设备,它们的状态都需要触发瞬时的反应事件,如检测到人、门窗打开 / 关闭,或是无线开关被按下等。这些设备有部分可以获取最后一次事件的触发事件,轮询的默认时长为 15 秒;但对于无法获取这一数据的换设备,Miot Auto 可能就无能为力,即便手动设定为 1 秒轮询一次也有概率无法获取正确的状态。
因此,Miot Auto 的作者在 Q&A 里也指出,上面这些设备通过 Miot Auto 集成后,不太适用于需要瞬时反馈的实时自动化,更适合作为「几分钟无人移动关灯」的自动化触发。
而官方的米家集成则不同。无论是云端还是本地,米家集成均采用 MQTT Broker 来实现设备状态的消息显示。
如果设备走的途径是云端,当设备属性发生改变或产生设备事件时,设备会向小米云发送上行消息,然后通过 MQTT Broker 向米家集成推送订阅的设备消息。如果你的米家 App 中有一款中枢网关,那么它就包含一个标准的 MQTT Broker,直接在本地就实现了完整的订阅发布机制。简单来说,Home Assistant 的米家集成在局域网内向小米中枢网关订阅了接入的设备消息,当设备属性发生改变或产生设备事件时,设备会主动向小米网关发布变动的消息,然后 MQTT Broker 会立刻向米家集成推送这一消息,显示在 Home Assistant 中。
官方的文档也毫不掩饰地「炫耀」了这一点:
由于米家集成不需要向云端轮询以获取设备当前的属性值,因此米家集成能第一时间获知设备属性变化或事件发生。得益于消息订阅机制,米家集成只在配置完成时向云端查询一次所有的设备属性,对云端产生的访问压力很小。
如果上面的说法比较难懂,那么我们还可以通过一个简单的模型来理解。
对于 Miot Auto 的轮询机制,相当于 Miot Auto 是个匆忙的管家,每隔一定时间(一般是 15 秒)都需要朝着设备们喊话:「你在吗?你的状态又发生变化吗?」。然后,设备们听到喊话后再回答「我在。我没发生变化 / 我发生变化了。」所以,如果在喊话的间隔期间设备发生了变化,如灯被打开、传感器过检测到有人 / 无人等事件,那么 Miot Auto 就没法及时获得这些数据了。
不过,这只影响设备的状态读取,不影响设备控制的速度。毕竟控制设备是 Miot Auto 直接找到对应的设备发布指令,就不存在轮询带来的反应延时问题了。
而米家集成的 MQTT Broker 机制更像是设备主动给管家汇报数据。就好比人体传感器平时没检测到人的时候,只需要定时给管家汇报「我在线」的消息,不用管家费时费力去喊话。当人体传感器发生状态变化时,它可以直接给管家发消息,报告当前自己的状态发生了改变,管家收到消息后就能立刻发布给 Home Assistant,因此我们体感上能感受到的就是状态的显示准确了很多,大大减少延时的问题。
就拿我现有的设备来说,官方米家集成的设备信息丰富度总体来与 Miot Auto 各有胜负。许多时候,官方米家集成比 Miot Auto 显示更多数据:
不过也有时候,Miot Auto 则更占优:
当然,也有近半数的设备基本是旗鼓相当。但值得注意的一点是,官方米家集成提供的设备信息更加标准和规范,不会像 Miot Auto 那样显示成英文的品牌或产品。
在使用的过程中,我也发现了一些官方米家集成的不足。首先是设备种类上,Miot Auto 能支持的种类目前肯定比刚发布的米家集成要更多,例如上方的体重秤甚至都能接入 Home Assistant(虽然没啥用),而米家集成还需要后续迭代。
其次,米家集成要求本地控制需要一台小米中枢网关或内置中枢网关的设备,而 Miot Auto 则不需要。在登录小米账号接入米家设备时,Miot Auto 可以自动筛选账号下设备的型号,并定期将用户选择接入的设备中符合本地控制条件的设备自动采用本地连接。此外,Miot Auto 的 token 集成还可以对支持本地 miot 协议和适配 miio2miot 的设备进行本地控制。
而说到接入设备,官方集成也有些不足。Miot Auto 可以选择家庭下具体某个设备的接入,在添加时直接勾选即可,未被勾选的设备就不会添加到 Home Assistant 中。但官方米家集成目前却只能一股脑地将某个家庭下所有的设备接入,无论你是否需要。比如,我并不需要在 Home Assistant 里控制小爱音箱和 YeeLight 的设备,在 Miot 里我就可以将它们取消勾选选择不接入,而米家集成则会全部一个不少地给我接进来。
最后还有一个比较麻烦的问题。在我使用米家集成的时候,我发现当小米电视关机时,米家集成也会和米家 App 一样提示设备失联,需要启动电视后才能恢复。实际上,电视只是进入了睡眠状态,我也不可能 24 小时开着电视就为了能让它获取数据。而 Miot 则不会出现这种问题,无论开关机均能够正常显示电视状态和控制项目。
好在,其中的绝大部分问题都能靠软件更新来解决,就看小米有没有这个心思了。
说到小米接入 Home Assistant,还有一个不能不提的集成便是 Xiaomi Gateway 3。
和官方的米家集成类似,Xiaomi Gateway 3 也采用 MQTT Broker 来作为设备的状态订阅,因此反应速度同样非常快,甚至不输官方集成。而且,借助 Xiaomi Gateway 3,还可以让小米的网关接入第三方设备,不可谓不强大。
然而,它的致命伤却也非常明显:接入条件较为苛刻且需要极为复杂的操作。首先,Xiaomi Gateway 3 仅支持部分设备在特定固件版本下接入,任何一条不符合均无法实现。其次,要接入 Xiaomi Gateway 3 的设备都需要获取 token(或 Key) 和开启 Telnet,甚至还可能需要拆机和额外的硬件,极大地增加了操作难度。
因此,即便 Xiaomi Gateway 3 集成具有无与伦比的反应速度,却让许多人望而却步,毕竟它的上手门槛相比前者简直高的可怕,我们或许也不会如此刻意追求那极致的零点几秒反应速度。这样看来,与 Xiaomi Gateway 3 相比,官方米家集成具备了不小的优势:安装,登录,使用,三步就能搞定。
在之前的 Matter 标准介绍文章里,我曾提到过小米对 Matter 协议的「不屑」。但其实何止 Matter,小米很长一段时间都是「自己玩自己的」,毕竟它作为全世界最大、最活跃、用户最多的智能家居平台,它有这个实力。但这也带来了一个问题:生态壁垒的隔阂,受伤的总会是用户。
在过去,我们要解决这些问题都只能靠第三方或开源社区的支持,而且前提是官方能放出对应的 API 接口。小米如果想要修筑自己的护城河,大可以关闭这些 API 成为一套闭源平台,让所有用户都留在米家。但如今看来,小米并没有这么做,而是选择拥抱全球最大的开源智能家居平台 Home Assistant,允许米家设备走进更多生态。相比于第三方开发者,官方推出的插件意味着对平台的认可,而且也普遍比第三方开发者都拥有更强大的软件迭代及维护能力,让全世界的智能家居用户都受益。
其实,当我得知小米官方发布了米家的 Home Assistant 集成时,我甚至有些不敢相信。但点开之后看见那个熟悉的橙黄色图标,它真实地出现在我的眼前,让我不禁在内心感叹了一句「时代真的变了」。或许,那个智能家居的开放时代,已经不那么遥远了。
官方的 Home Assistant 集成已经到来,Matter 还会远吗?我不好说,但我愿意相信这些美好的事情即将会发生。
来源:少数派一点号