LWN.net Logo LWN.net News from the source LWN

Linux 内核开发者体验 Home Assistant:总体印象

[LWN 仅限订阅者内容]

作者:Jonathan Corbet,2025 年 5 月 9 日

我们这些一生都在玩电脑的人,自然会觉得在家中部署电脑来进行数据采集和自动化很有吸引力。但许多关注技术行业发展的人,越来越不愿意将关键的家庭功能委托给由那些可能并非以我们最佳利益为出发点的公司运营的云端服务器。采用 Apache 许可的 Home Assistant 项目提供了一个受欢迎的替代方案:使用自由软件进行本地控制的自动化。这个分为两部分的文章,涵盖了大约一年 Home Assistant 的使用体验,首先是一些关于该项目的总体观察。

当然,这并不是 LWN 第一次关注这个项目;这篇评论 介绍了五年前 Home Assistant 的样子,而 这篇 2023 年的文章 很好地概述了该项目的历史、治理和总体方向。我将努力避免在这里重复这些内容。

项目健康状况

乍一看,Home Assistant 具有一些公司所有项目的特征。相关的公司 Nabu Casa 就是围绕该项目成立的,并雇佣了许多关键的开发者。该公司赚钱的一种方式是提供每年 65 美元的订阅服务,为安装在防火墙后的住宅网络上的 Home Assistant 服务器提供远程访问。Home Assistant 支持这个远程选项,没有其他选项。如果有人提交一个 pull request,添加对例如 OpenThings Cloud 作为替代方案的支持,看看会发生什么,将会很有趣。该请求的命运将充分说明该项目到底有多开放。

喜欢你所读的内容吗? 免费试用 LWN 1 个月,无需信用卡。

(顺便说一句,我已经购买了 Nabu Casa 订阅,而不是例如使用 WireGuard 在可访问的系统上提供端口;这是一种无忧无虑地解决问题并支持该软件开发的方式)。

也就是说,伴随公司控制项目的那些警告信号,在 Home Assistant 中大多不存在。该项目的 贡献者许可协议 是内核的开发者原创证书的衍生版本;贡献者保留对其作品的版权。自 2024.4 版本 以来,Home Assistant 的核心代码仓库已经获得了来自 900 多名贡献者的超过 17,000 个变更集。虽然一些 Nabu Casa 的员工(在 此页面 上有帮助地列出)出现在前十名贡献者中,但他们并没有占据主导地位。

Home Assistant 显然是一个活跃的项目,拥有广泛的开发者基础。2024 年,该项目的总体责任已转移到 新成立的 Open Home Foundation。该项目可能会继续存在,并且将来不太可能发生恶意转变。对于一个位于家庭核心的系统来说,这些是很重要的特征。

安装和设置

Linux 用户往往有些被宠坏了;安装一个新的应用程序通常只需要一个包管理器命令。Home Assistant 并不完全符合这个模型。安装页面 上的前三个选项涉及专用计算机——其中两个由 Nabu Casa 出售。对于那些想要将其安装在通用计算机上的人,推荐的方案是安装 Home Assistant Operating System,这是一个定制的 Linux 发行版,在 Docker 容器中运行 Home Assistant。还有一种基于容器的方法,可以在另一个发行版上运行,但此安装不支持 add-ons 功能

换句话说,Home Assistant 并没有真正设置为 Linux 系统上的另一个应用程序。但是,如果向下滚动足够远,就会找到安装到“正常” Linux 系统上的说明,并带有关于它是“高级”方法的警告。当然,我就是这么做的,将软件安装到了运行 Fedora 的现有系统上。当发行版升级替换 Python 时,整个事情随后就崩溃了,但这很容易修复。总的来说,安装工作正常。

不过,开箱即用,新的 Home Assistant 安装不会做太多事情。毕竟,它的工作是与整个房屋中的系统连接,而且每个房屋都是不同的。虽然 Home Assistant 可以自动找到一些系统(它找到了 Brother 打印机,并尽职尽责地通知我该设备的青色墨粉不可避免地不足),但通常需要告诉它房屋中安装了什么。因此,用户很快就会深入到“集成”的世界——Home Assistant 的设备驱动程序。

对于房屋中的每个可远程访问的设备,希望至少有一个可用的集成,允许 Home Assistant 与其协同工作。许多集成都与系统本身打包在一起,可以通过 Home Assistant Web 界面中的简单搜索屏幕找到。一个更大的集合是单独打包的,通常在 Home Assistant Community Store,或 HACS 中;可以肯定地说,大多数用户最终会从这个来源获得至少一些集成。设置 HACS 需要几个步骤,不幸的是,需要用户拥有 GitHub 帐户才能完全集成。可以 在没有该帐户的情况下安装 HACS 集成,但这是一个手动过程,会失去对更新跟踪等功能的支持。

大多数集成在设置时,会发现网络上的任何适当设备——如果这些设备支持这种发现方式,当然。通常,使用集成需要凭据才能登录到相关设备供应商提供的云帐户。在可能的情况下,集成通常会努力完全在本地运行;有些只使用云连接进行初始设备发现。但是,如果没有其他选择,集成将保持登录到云帐户,并以这种方式与其设备交互;供应商可能支持(或不赞同)这种模式。当然,有些供应商 对与 Home Assistant 集成持积极敌对态度

正如预期的那样,集成的质量差异很大。我尝试过的大多数集成都运行得足够好。OpenSprinkler(在 2023 年 在此处评论)集成,彻底破坏了设备配置,让我感到羞愧,因为我的草坪不够完美;它很快就被移除了。当设备带有供应商提供的 Home Assistant 支持时,这尤其令人惊喜,但这仍然是相对罕见的情况。Home Assistant 现在的情况类似于 25 年前的 Linux;许多设备都得到了支持,但通常是违反其供应商的意愿,并且必须仔细选择组件。

安全

Home Assistant 位于家庭网络的核心;它可以访问传感器,这些传感器可以揭示很多关于家庭居住者的信息,并将数据收集在一个位置。如果所有者需要远程访问,则安装将暴露于 Internet。这里显然存在安全灾难的潜力。

该项目有 已发布的安保政策 描述了该项目的立场;它要求对任何安全问题的报告进行 90 天的禁运。鼓励撰写有关项目安全性的作者将其作品交给项目“以便我们可以确保所有声明都是正确的”。安全策略明确排除了关于第三方集成的报告(毕竟,核心项目无法修复这些问题)。该项目也对登录到 Home Assistant 的用户的任何类型的权限提升不感兴趣,假设任何拥有帐户的人都完全受信任。

自 2024 年初以来,该项目仅发布了 一个安全公告。2023 年有几个,主要是 GitHub 执行的安全审计 的结果。

没有对第三方集成进行整体审查,这些集成最终只是更多的 Python 代码。因此,加载未知的集成类似于从 PyPI 导入未知的模块;它可能会工作,但存在潜在的麻烦。该项目偶尔会 报告第三方集成中的安全问题,但此类报告很少。我无法找到任何关于在野外发现的恶意集成的报告,但似乎迟早会有一个出现。

实际使用 Home Assistant 做事

新的 Home Assistant 安装的所有者的第一步自然是为安装在家庭中的设备寻找集成。成功安装和初始化后,集成会将一个或多个“设备”添加到系统,每个设备都有一些“传感器”用于报告数据,并可能具有“控件”来更改其运行状态。例如,热泵机头可能具有用于当前温度和湿度的传感器,以及用于其运行模式、风扇速度、风向等的控件。

值得注意的是,这些实体的设置有时似乎有点不确定。我的太阳能系统有 22 个带有逆变器的面板,每个面板报告近十几个参数(电压、电流、频率、温度等)。没有简单的方法来确定哪个面板在报告,例如,sensor_amps_12,尤其是因为 sensor_frequency_12 几乎可以肯定对应于_不同的_面板。我的经验是,Home Assistant 是一个为那些愿意花费大量时间摆弄事物以使其达到工作状态的人而设计的系统。处理这些传感器是对此的早期介绍;花了一些时间来弄清楚名称和屋顶位置之间的映射,然后将每个传感器重命名为更有用的名称。

下一个级别的摆弄是设置仪表板。Home Assistant 在其向用户提供的信息和控件方面提供了极大的灵活性;可以设置专注于例如能量生产或气候控制的屏幕。令人高兴的是,通过编写 YAML 代码片段来完成此配置的日子在很大程度上已经过去了;偶尔仍然需要使用 YAML,但这种情况并不经常发生。界面并不总是直观,但它相当流畅、交互式且功能强大。

我还没有过多使用的 Home Assistant 的另一个部分是自动化和场景。自动化是简单的规则触发的程序,可以更改某些控件。它们可以执行诸如“天黑时打开前灯”或“如果有人按门铃且没有人在家,则播放恐怖音乐”之类的操作。场景是一组预先配置的设备配置。例如,人们可以创建一个名为“姻亲来访”的场景,该场景播放响亮的朋克音乐,将温度设置为略高于冰点,禁用所有语音控制,并将所有灯泡调到 6000K。

好消息是,除非摆弄本身就是目的(并且它可能是一个好的目的),否则总会有事情正常运行并且可以停止摆弄的时候。一个配置良好的 Home Assistant 实例可以向任何可以访问并登录的 Web 浏览器提供关于家庭状态的详细信息——以及设备允许的控制。有一些(开源的)应用程序将此支持带到移动设备,其方式与 Web 界面几乎没有区别。

总而言之,很明显为什么 Home Assistant 拥有强大且不断增长的追随者。它是一个开放平台,可以将控制权带给一个正在尽最大努力牢牢掌握我们的房屋和它们创建的数据的行业。Home Assistant 表明,如果没有所有这些脆弱的、不可互操作的、容易被抽走的云系统,我们可以做得很好。正如 Linux 证明我们可以控制我们的计算机一样,Home Assistant 表明我们不必放弃对房屋的控制。

本文已经很长了,并且非常缺乏关于一个人实际上可以使用 Home Assistant 的有趣的事情。沿着这些思路可以讲一些有趣的故事;它们将很快出现在本系列的第二部分,也是最后一部分。