关注了就能看到更多这么棒的文章哦~
Home Assistant: ten years of privacy-focused home automation
October 24, 2023
This article was contributed by Koen Vervloesem
ChatGPT translation
https://lwn.net/Articles/947843/
许多家庭自动化设备都配备了自己的移动应用程序或云服务。然而,使用多个应用程序或服务很不方便,因此人们倾向于只购买来自同一供应商的设备,但这可能导致被绑定了。一个让用户管理来自不同供应商的家庭自动化设备而无需被绑定的项目,就是Home Assistant。在其十年的历史中,它已经发展成一个用户友好的家庭自动化平台,既迎合技术嗜好者,又适用于不太懂技术的人。
2012年,在完成他的硕士论文时,Paulus Schoutsen购买了一个由中央控制器和三个灯泡组成的飞利浦Hue入门套件。当他发现中央控制器具有可以通过网络访问的本地API时,他编写了一个Python脚本来控制灯泡。然后他编写了一个脚本,可以在日落时打开灯光,但很快他意识到当没有人在家时,灯泡会自动打开。为了解决这个问题,他开发了一个脚本,用于登录到他的WiFi接入点以检测连接的手机,并将这种存在检测作为他的灯光自动化脚本的条件。
意识到这对其他人可能有用之后,Schoutsen重构了代码,并使其可配置,以便用户不必亲自编写Python代码。2013年9月17日,他将他的Home Assistant项目的第一个版本发布到GitHub。他开始在r/homeautomation subreddit上宣传它,每当人们寻求家庭自动化建议时,该项目就会随着社区的扩展和更多开发者的贡献而壮大。
今天,Home Assistant是GitHub上第二活跃开发的项目。根据2022年的“GitHub上开源状态”,Home Assistant在贡献者数量(13,500人)、GitHub项目中贡献者增长最快(一年内新增3,300名贡献者)方面名列第二,并且是首次贡献者中最受欢迎的第二个项目(2,600名开发者在GitHub上首次贡献)。
Home Assistant的核心理念与其最初的发布保持一致:一个用于控制各种家庭自动化设备的开源(Apache许可)中央控制器。它支持超过2,500个集成(integrations)来与设备和外部服务连接。Home Assistant可以安装在树莓派或任何其他计算机上,最好是一个专用的系统上,从而为家庭自动化提供稳定可靠的平台。
从发烧友到非技术用户
尽管最初面向喜欢研究的技术用户,但该项目的重点已经转向使家庭自动化对普通公众更加可访问。在2017年,Pascal Vizeli在家人向他寻求指导后意识到有必要简化安装过程。这导致了现在称为Home Assistant操作系统(以前称为“Hass.io”)的产生。它基于Buildroot,这是一个用于创建嵌入式Linux系统的工具,它使用Docker作为容器引擎运行。Vizeli还开发了Home Assistant Supervisor,它在单独的容器中管理Home Assistant Core(实际的Home Assistant应用程序)和Home Assistant附加组件。
Home Assistant操作系统成为Home Assistant的推荐安装方法,因此用户不再需要运行一系列命令行指令来安装软件。相反,他们可以简单地下载一个映像,在其支持的计算机或虚拟机上启动,并使用基于Web的配置向导。用户不再需要管理Linux系统:Home Assistant操作系统可以从基于Web的界面轻松更新。这扩大了Home Assistant的吸引力,超出了技术嗜好者家庭自动化爱好者的小社区。
类似地,引入了附加组件使许多用户的生活更加轻松。Home Assistant附加组件本质上是一个包含另一个应用程序的Docker容器。在2017年,Franck Nijhof开始开发附加组件,以集成各种应用程序到Home Assistant中。用户现在可以轻松安装Mosquitto MQTT代理,用于从Let's Encrypt获得TLS证书的ACME客户端,用于更新动态IP地址的公共主机名的DynDNS客户端,集成到Web界面中的终端或编辑器等等。这些附加组件可以直接从Home Assistant的Web界面中安装和配置。
Home Assistant还在简化配置方面取得了进展。在最初的几年里,配置主要是在YAML文件中完成的。当LWN.net三年前审视Home Assistant时,文章中展示了一些YAML代码示例。然而,近年来,越来越多的配置部分可以使用图形界面来完成。尽管对于一些高级功能仍然需要YAML,但Home Assistant已经不再需要使用YAML来形成用于与设备和/或服务通信的集成。
这一转变最初在技术嗜好者中引起了争议,他们更喜欢基于代码的配置。然而,Home Assistant的开发人员的目标是通过优先考虑易用性吸引更广泛的用户。最终目标是使隐私和独立于基于云的家庭自动化系统对每个人都可访问。
但是,专注于这种用户友好性会使系统对于希望自行决策的发烧友不够灵活。例如,多年来,Home Assistant一直支持最新的两个上游Python版本。但是,今年初,这一政策发生了变化,只支持最新的上游版本。由于96%的用户运行项目的预构建容器,Home Assistant的开发人员只需要对与容器映像一起提供的单个版本进行开发和测试。但是,这迫使那些在自己的Python环境中安装Home Assistant Core的4%的用户每年至少升级一次他们的Python版本。
公司支持
多年来,Home Assistant采用了每两周发布一次的发布计划,但开发人员开始因这种疯狂的节奏而筋疲力尽。因此,为了确保Home Assistant的发展可持续性,Schoutsen、Vizeli和Ben Bangert成立了一家名为Nabu Casa的公司。最初,Vizeli成为Nabu Casa全职工作的唯一人员。五年后,该团队由将近30人组成,每个月发布一次新的Home Assistant版本。
Nabu Casa在没有外部投资者的情况下财务稳定,其收入来自对Home Assistant Cloud的订阅,这是一项为用户的Home Assistant安装提供安全远程访问的服务。Home Assistant Cloud使用端到端加密作为代理服务器运行。
当用户在他们的实例上启用Home Assistant Cloud时,后者将连接到代理服务器之一。当用户随后在Web浏览器中访问实例的URL时,代理服务器使用TLS握手的Server Name Indication(SNI)扩展来识别传入请求的主机名。然后,它将请求转发到相应的Home Assistant实例。SniTun代理和Home Assistant中的hass-nabucasa云集成的源代码都是根据GPLv3许可证可用的。
2021年,Nabu Casa接管了ESPHome的开发,这是一个构建和部署系统,允许用户配置ESP32和其他微控制器板,而无需编程。用户只需编写描述连接到板引脚的组件的YAML文件。然后,ESPHome根据此配置构建固件,使LED、按钮、传感器等能够通过WiFi连接与Home Assistant通信。自Nabu Casa接管ESPHome的开发以来,该项目已采用与Home Assistant相同的每月发布周期。去年,Nabu Casa雇佣了Michael Hansen来继续开发他的开源语音助手Rhasspy。
开放家庭
Home Assistant项目一直不仅仅是一个软件项目。它是由Schoutsen的开放家庭愿景驱动的,该愿景建立在三个支柱之上:隐私、有选择,以及可持续性。
隐私意味着家庭应该是个人可以真实地表现自己的安全空间。在开放家庭的愿景中,设备在本地运行,无需连接到外部服务器。不应传输有关本地操作的任何信息,例如打开灯泡或调整恒温器,超出家庭环境。如果产品提供云连接,那么它不应该是设备基本操作的必需部分,并且不应默认启用。Home Assistant的许多集成使用本地API来与设备交互。
有选择,就涉及允许用户选择最适合其需求的设备而不受限制。用户不应该面临被绑定的情况,制造商不应该限制对设备数据的访问。Home Assistant允许用户混合来自各种制造商的设备,并同时使用不同的家庭自动化协议,包括Zigbee、Z-Wave、Matter、蓝牙等。所有设备数据都由Home Assistant本地收集,不离开用户的家。但是,如果用户选择将依赖云API的设备纳入其中,他们可以使用Home Assistant自由地这样做。Nabu Casa还为那些需要的人提供了一种轻松控制Home Assistant的方式,使用来自Google和Amazon的基于云的语音助手。
可持续性围绕着创建一个可以经受时间考验的智能家庭。安装在家中的设备应该继续在许多年内无缝运行。在2021年引入了能源仪表板后,可持续性目标得到了改善。此功能提供了显示能源使用、太阳能电池板生产预测等的图表。有了这些信息,用户可以在太阳能发电足够的时候优化电动汽车或自行车的充电。
Home Assistant的开发者在与家庭自动化供应商互动时积极倡导“开放家庭”的原则。例如,当飞利浦Hue智能中心开始屏蔽第三方灯泡时,Schoutsen鼓励人们不要购买飞利浦Hue生态系统(https://www.home-assistant.io/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/)。几天后,飞利浦撤销了决定,并宣布了一个允许第三方灯泡的软件更新。当Insteon突然关闭了其云服务器时,Schoutsen提供了指导(https://www.home-assistant.io/blog/2022/04/19/for-insteon-users/),使用户仍然能够在本地与其设备通信,并宣布在Home Assistant中改进了Insteon集成。最近,当Signify(飞利浦照明的新名称)宣布将强制用户创建帐户并上传其数据到云端时,Home Assistant的创始人联系了Signify表达了他的担忧(https://www.home-assistant.io/blog/2023/09/22/philips-hue-force-users-upload-data-to-cloud/)。
结论
Home Assistant不仅仅是一个家庭自动化软件项目。它代表了一项运动,倡导每个连接的家庭中的隐私、选择自由和可持续性。该项目拥有一个积极的用户社区(https://www.home-assistant.io/help/),提供论坛(https://community.home-assistant.io/)、Discord聊天服务器(https://www.home-assistant.io/join-chat)和Home Assistant subreddit(https://reddit.com/r/homeassistant)以与其他用户取得联系。还有丰富的文档(https://www.home-assistant.io/docs/)。虽然它可能还不像某些具有紧密集成设备的封闭生态系统那样用户友好,但Home Assistant正在每个版本中稳步进步。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~