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

Linux 内核开发者玩转 Home Assistant:案例研究

[仅 LWN 订阅者可访问的内容]

欢迎来到 LWN.net

以下仅供订阅者阅读的内容由 LWN 订阅者提供。 成千上万的订阅者依靠 LWN 获取来自 Linux 和自由软件社区的最佳新闻。 如果您喜欢这篇文章,请考虑订阅 LWN。感谢您访问 LWN.net!

作者:Jonathan Corbet 2025 年 5 月 16 日

本系列的第一篇文章概述了 Home Assistant 及其社区和功能。 但它刻意没有过多描述可以使用 Home Assistant 完成的有趣事情,也就是人们实际想使用这个程序的原因。 在这篇结束文章中,我们将了解 Home Assistant 是如何被用来解决一些实际问题的。

太阳能板

电气化是好事,但在电力充足的情况下会更好; 因此,几年前,我投资在屋顶上安装了太阳能板。 结果确实产生了大量的电力,大约是家庭和(非 Musky)电动汽车实际使用的两倍,这是一件好事。 但情况可能会更好。

这些太阳能板配备了来自一家名为 SunPower 的公司的监控系统; 它收集有关太阳能板性能和电网使用情况的数据,并将所有数据报告给云中的某个系统。 该公司制作了一个相当出色的应用程序,提供有关当前和过去性能的信息,包括每个太阳能板的数据。 自然,该应用程序是访问该数据的唯一途径,这让我有点紧张。 依赖于某些供应商提供的“免费”云服务通常不会有好结果。

果然,在 2024 年,SunPower 破产了。 收购 SunPower 资产(其中包括我和我的数据)的公司名为 SunStrong。 该公司最近通知我,免费访问我的数据的日子即将结束; 如果不付费,该应用程序只会提供基本的瞬时数据。 换句话说,由太阳能板产生的数据(我拥有),由我拥有的监控系统收集,并发送到我绝对不拥有的云系统,该系统将扣留我自己的数据。

当然,这正是我加入自由软件运动想要避免的情况。 幸运的是,我早期的担忧促使我寻找本地收集和保存数据的方法; 这也是我安装 Home Assistant 的原因。 碰巧的是,监控系统不容易将其信息交给那些认为自己拥有它的人,但网络上的某个人找到了一种方法,使用了一个用于安装时诊断的网络端口,并对其进行了详尽的记录。 我能够以一种稍微简单的方式解决这个问题(运行 Home Assistant 的机器有两个网络端口,所以我能够省去中间的 Raspberry Pi 系统),并且从那以后就可以完全访问太阳能系统的数据了。

[Panel production plot] 在经过一些不可避免的调整(有关详细信息,请参见第一篇文章)之后,结果是一个比该应用程序提供的与太阳能相关的信息更好的界面。 例如,请参见右图,该图绘制了来自太阳能板子集群的输出,清楚地显示了两个太阳能板的部分阴影的影响,即使在四月初也是如此。 很容易看出系统的每个部分运行状况如何,并且如果有一天太阳能板或其逆变器出现故障,也可以立即知道哪个太阳能板有问题。

这种数据不应被感觉有权随时更改交易的公司扣留。 我认为,摆脱这种情况是使用像 Home Assistant 这样的工具的最令人信服的原因之一。

助手 (Helpers)

也就是说,如前所述,Home Assistant 需要进行一些调整才能达到有用的状态。 例如,考虑到监控系统报告了来自太阳能板和电网的瞬时功率。 它不报告房屋消耗的功率,而这通常是人们感兴趣的。 当然,这个量很容易获得:它只是太阳能和电网功率流的总和。 至少,一旦弄清楚了被称为“helpers”的抽象概念,它就很容易了。

如果进入 Home-Assistant 界面的“设置”屏幕,然后进入“设备和服务”,您将看到一个标记为“Helpers”的选项卡。 事实证明,helper 是一种实例化虚拟传感器的方法,该传感器被定义为一个或多个现有传感器的函数。 除此之外,此屏幕还可以创建“家庭用电量”helper,它是太阳能和电网功率传感器的总和。 一旦它存在,它就可以用于生成绘图,作为其他 helper 的输入,或作为 自动化 的一部分。

现在想象一下,如果能够知道房屋在任何给定的一天中消耗了多少电量,那可能会很好。 “integral” helper 在这里派上用场; 我们刚刚找到的房屋功率 helper 可以被输入到这个新的 helper 中,它将随着时间的推移整合其值,将千瓦转换为千瓦时。 这将产生一个不断增加的值,如果您想知道房屋的全部用量,这很好,但对于了解一天的情况则不太有用。 幸运的是,还有另一种类型的 helper 称为“utility meter”,可以将其配置为在给定的时间间隔(每天午夜是一个逻辑选择)重置为零。 helper 的输出将是当天的使用量。

所有这些的最终结果是,helper 可以使用 Home Assistant 收集的数据做很多有趣的事情,但是它们的使用确实需要在界面中进行大量的点击(或者为那些有这种倾向的人编写 YAML)。 这项工作可能会累积起来; 如果有一种方法可以为 22 个太阳能板生成每日产量总数,而无需手动为每个太阳能板创建 helper 链,那我还没有找到。

换句话说,Home Assistant 实际上可以使用更通用的查询语言来查询它管理的数据。 但是,作为一个设置一次然后使用多年的系统,这里的东西运行得很好。

关于数据的另一个值得注意的点是:Home Assistant 将从提供高分辨率数据的来源收集这些数据,并且这些数据将被存储,但只能存储一段时间。 除非另有配置,否则超过十天的数据将被严重简化,似乎每小时只有一个样本。 由于许多人在小型、资源受限的系统上运行 Home Assistant,因此采取一些措施来减少所需的存储空间是可以理解的。 但是,这种丢弃数据可能会让那些希望无限期保留全分辨率数据的大磁盘用户感到惊讶。

热泵

如何处理多余的电力? 将其捐赠回电力公司(或类似的效果)没什么吸引力。 最好找到一种很好地利用这些电力的方式,因此下一步是安装空气源热泵并停止使用化石燃料为房屋供暖。 在科罗拉多州这样做需要一点信仰,因为今年冬天的气温降至 -15°F(-26°C),但这项技术已经取得了长足的进步; 房子仍然很温暖。

购买前的研究清楚地表明,Mitsubishi 生产的热泵可以在这种气候下工作。 人们普遍对该公司的硬件表示敬意。 在购买之前也很清楚,对 Mitsubishi 的软件及其“Kumo Cloud”应用程序的敬意要低得多。 正如其名称所暗示的那样,Kumo Cloud 是一种基于云的解决方案,需要互联网连接才能工作。 该应用程序就像评论所说的那样糟糕。 三月份,Mitsubishi 大肆宣传地用一个名为“Comfort”的新应用程序取代了它; 它已被完全重写,并且情况更糟。

[Heat-pump control] 自然,Home Assistant 具有 Mitsubishi 集成。 它需要在初始化时访问云帐户才能获取每个热泵头的控制器的 IP 地址; 此后,它可以与控制器在本地互操作。 此集成收集硬件提供的数据(运行模式、温度、设定点、湿度),并且可以以通常的方式提供这些数据。 例如,该应用程序(无论哪个版本)都无法绘制一天中房间的温度,但 Home Assistant 可以做到这一点。

当然,它还可以通过可以放置在仪表板上的简单的类似恒温器的部件来控制硬件。 可以很容易地在单个屏幕上看到整个房屋的气候控制配置。 如果设置了远程访问,则也可以在离开时更改该配置,例如在回家的路上调高温度。

虽然我没有这样做,但可以通过设置自动化来做更多的事情。 您可以设置一个时间表来改变一天中的设定温度。 更复杂的设置可能会使用运动或蓝牙传感器来确定哪些房间有人占用,并相应地调整气候控制设置。 但即使只是一种控制在任何给定时间热泵设置的方法,Home Assistant 也已经取代了对供应商应用程序的使用。 在某个时候,我可能会完全切断控制器与互联网的连接。

电力监控

热泵在冬天为房屋保暖方面做得很好,但它们也导致多余的电力消失了。 这自然导致人们对房屋中的电力消耗产生了更高的兴趣; SunPower 单元提供的简单数据是不够的。 如果能够知道特定房间或电器消耗了多少电量,那不是很好吗? 事实证明,有很多公司在销售可以报告房屋中多个电路使用情况的电力监控器; 这只是选择一个的问题。

最终,这个问题很容易回答。 Refoss 生产的一种设备 价格合理,并且能够监控房屋中的十六个独立电路。(注意:该产品页面可能并非在所有地区都可用。主站点在此处可用。)读者无疑会惊讶地发现,该设备旨在将数据报告给云服务器,然后通过应用程序提供这些数据。 但这里有一个至关重要的区别:Refoss 设备的 Home-Assistant 集成(直接与监控器连接,无需云连接)是由 Refoss 本身编写和提供的。 Home-Assistant 兼容性是上面链接的产品页面上的第一个项目符号。

没有多少公司认为适合支持其产品的 Home-Assistant 集成; 可能有更多的公司对此持积极敌对态度。 因此,当一家公司支持此集成时,它会直接移到我的候选名单的首位; 这就是这里发生的事情。 在房屋的主服务面板中进行了几个小时的紧张工作,并花费更多的时间来调整所有传感器的名称之后,监控器按照设计启动并报告到 Home Assistant。

[Heat-pump power usage] 监控器返回的数据立即变得有用。 右图显示了两个已安装的外部热泵单元的功耗,一个用于楼下,一个用于楼上。 蓝色轨迹(楼下)显示了这些系统的运行方式; 它们应该很少循环,并且一旦启动,应该稳定运行一段时间。 相反,黄色轨迹(楼上)展示了一个称为“短循环”的问题; 它会导致更高的功耗并增加设备的磨损。 短循环可能是由许多问题引起的,包括配置错误或硬件问题。

在这种情况下,原因似乎是硬件,但是花了一些时间才得出该诊断。 但是,通过向维修技术人员展示像这样的图,很容易向他们证明该问题。 如果没有详细的功耗信息,与技术人员的对话可能会更长。 能够了解关键系统的运行情况(例如自己的房屋)是有价值的。

拥有电力信息在其他方面也有所帮助。 看到我的显示器在“省电”模式下消耗了多少电流后,我晚上将它们关闭了。 变得更容易说出在一天中高成本的时间段内是什么在消耗电力,并将这种使用转移到其他时间。 了解到完整的内核构建花费大约 20Wh 是很有趣的。 总的来说,了解房屋的运作方式既有趣又有用。

总结

认识到这些信息可以揭示有关房屋中发生的事情的多少(有多少人在场、他们在哪些房间、他们在这些房间里做什么等等)也令人清醒。 认为没有人试图访问(和利用)这些数据似乎至少是天真的。 然而,我们很高兴地允许这些数据被导出并存储在别人的服务器上,而我们并不知道我们将能够访问它多久、该服务器受到多好的保护,甚至它在哪里。 这就是我们为自己建立的世界,但不是我们许多人设想的世界。

像 Home Assistant 这样的工具提供了一种不同的愿景,即世界应该如何存在——我们一开始应该如何构建它。 自由软件不仅适用于操作系统; 它适用于所有影响我们生活的系统。 它是真正为我们服务的软件,而不是为将其出售给我们的那些人服务的软件。

Home Assistant 是一个非常成功的项目,拥有大量的用户,但大多数人仍然没有听说过它。 毫无疑问,还有许多其他人被该系统繁琐的性质以及集成从未设计为协同工作的设备的挑战吓跑了。 要想取得持续的成功,还需要付出更多的努力才能使事情正常运行。 在这个领域几乎肯定存在一个商机,只是在等待有足够精力和技能的人将其变为现实。 与此同时,对于那些愿意为此付出努力的人来说,一种多功能且有用的工具是可以使用的。

至此,对 Home Assistant 的介绍就结束了。 这最好是片面的了解; 如前所述,我还没有时间玩太多的自动化和场景等功能。 正在开发语音控制,以及用于媒体流的 Music Assistant。 我的房子也没有运动传感器、遥控灯泡、可视门铃、自动百叶窗、联网厨具、应用程序驱动的宠物喂食器、“智能扬声器”和其他各种 IoT 设备,如果存在 Home Assistant,所有这些都可以连接到 Home Assistant。 所以我无法测试这些集成。 最终,每个部署都将像每个家庭一样,各不相同——但所有部署都将是自由的并且在所有者的控制之下。