LWN:作为内核开发者来尝试 Home Assistant 的总体印象!

关注了就能看到更多这么棒的文章哦~

A kernel developer plays with Home Assistant: general impressions

By Jonathan Corbet
May 9, 2025
Gemini-1.5-flash translation
https://lwn.net/Articles/1017720/

那些终生与计算机为伍的人,自然能看到将它们部署到家中用于数据采集和自动化所带来的吸引力。但我们中的许多人,在见证了技术产业(technology industry)的演变后,越来越不愿意将关键的家庭功能委托给由那些可能并非为我们最大利益着想的公司运营的云服务器。Apache 许可的 Home Assistant 项目提供了一个可喜的替代方案:通过自由软件实现本地控制的自动化。本系列文章共分两部分,涵盖了大约一年的 Home Assistant 使用体验,首先将对其进行一番总体性的观察。

当然,这不是 LWN 第一次关注这个项目了;这篇评论文章 展现了五年 Home Assistant 的面貌,而 这篇 2023 年的文章 则对项目的历史、治理以及总体方向提供了很好的概览。我将努力避免在此重复这些内容。

项目健康

初看之下,Home Assistant 带有背靠着公司的项目的一些特征。涉及的公司 Nabu Casa 是围绕该项目成立的,并雇用了其许多关键开发者。该公司盈利的方式之一是提供每年 65 美元的订阅服务,为安装在防火墙后的住宅网络中的 Home Assistant 服务器提供远程访问。Home Assistant 支持这种远程选项,但没有其他选项。如果有人提交一个添加支持例如 OpenThings Cloud 作为替代方案的 pull request(拉取请求),看看会发生什么将会很有趣。该请求的命运将在很大程度上说明这个项目到底有多开放。

(顺便说一下,我购买了 Nabu Casa 的订阅,而不是像使用 WireGuard 那样在可访问的系统上开放端口;这是一种轻松解决问题并支持软件开发的方式)。

话虽如此,一个由公司控制的项目通常伴随的大多数让人警示的信号并未出现在 Home Assistant 中。该项目的 贡献者许可协议 是 kernel(Linux 内核)的 developer certificate of origin(开发者来源证明)的衍生版本;贡献者保留其对其作品的 copyright(版权)。自 2024.4 版本 发布以来,Home Assistant 的 core(核心) repository(代码仓库)已经从 900 多名贡献者那里获得了超过 17,000 个 changeset(变更集)。尽管 Nabu Casa 的一些员工(此页面 上有列出)出现在贡献者前十名中,但他们并未在这个列表中占据主导地位。

Home Assistant 显然是一个活跃的项目,拥有广泛的开发者基础。2024 年,该项目的总体责任转移给了 新成立的 Open Home Foundation。这个项目很可能将会持续存在,并且未来似乎不太可能出现转变成恶意方向的情况。对于一个处于家庭核心位置的系统来说,这些都是重要的特征。

安装与设置

Linux 用户通常会被宠坏;安装一个新的 application(应用程序)通常只需要一个 package-manager(包管理器)命令。Home Assistant 并不完全符合这种模式。安装页面上的前三个选项涉及专用计算机——其中两款由 Nabu Casa 销售。对于那些希望将其安装在通用计算机上的人来说,推荐的方法是安装 Home Assistant Operating System,这是一个定制的 Linux distribution(发行版),它在 Docker(容器)中运行 Home Assistant。还有一种基于 container(容器)的方法可以在其他发行版上运行,但这种安装方式不支持 附加组件(add-ons)功能。

换句话说,Home Assistant 并非被设计成 Linux 系统上的另一个普通 application(应用程序)。然而,如果往下翻够远,就会找到在“普通”Linux 系统上安装的说明,并配有警告,说明这是一种“高级”方法。当然,我就是这样做的,将软件安装在一个运行 Fedora 的现有系统上。随后,当 distribution(发行版)升级替换了 Python 时,整个系统崩溃了,但这很容易修复。总的来说,安装工作如预期般顺利。

然而,刚安装好的 Home Assistant 默认情况下并不会做太多事情。毕竟,它的工作是与家中的各种系统对接,而每个家庭都不同。虽然 Home Assistant 可以自动发现一些系统(它找到了我的 Brother 打印机,并尽职地告诉我设备中的青色墨盒不可避免地快用完了),但通常需要告知它家中安装了什么设备。因此,用户很快就会深入到“integration(集成)”的世界——Home Assistant 的设备驱动程序。

对于家中每一个可远程访问的设备,如果幸运的话,会有至少一个可用的 integration(集成)可以让 Home Assistant 与之协作。许多 integration(集成)是与系统本身打包在一起的,可以通过 Home Assistant web interface(网页界面)中的简单搜索屏幕找到。更大的一套则单独打包,通常在 Home Assistant Community Store 或 HACS 中;可以说,大多数用户最终会从这个来源获取至少一些 integration(集成)。设置 HACS 需要一些步骤,而且不幸的是,为了完全集成,需要用户拥有一个 GitHub 账户。虽然 可以 在没有该账户的情况下安装 HACS integration(集成),但这是一个手动过程,并且会失去对诸如更新跟踪等功能的支持。

大多数 integration(集成)在设置时会发现网络上的任何兼容设备——当然,如果这些设备支持这种发现功能的话。通常,使用一个 integration(集成)需要登录设备 vendor(供应商)提供的 cloud(云)账户的 credential(凭据)。只要可能,integration(集成)大多努力完全在本地运行;有些只在初始设备发现时使用 cloud(云)连接。然而,如果别无选择,integration(集成)将保持登录 cloud(云)账户,并以此方式与设备交互;这种模式 vendor(供应商)可能支持也可能不支持(或默许)。当然,有些 vendor(供应商)积极反对 与 Home Assistant 集成。

正如预期的那样,integration(集成)的质量参差不齐。我尝试过的大多数 integration(集成)都运行得很好。但 OpenSprinkler(2023 年在此评测过)的 integration(集成)却彻底破坏了设备配置,让我蒙受了因草坪不够完美而被看到的羞辱;它很快就被移除了。当设备 vendor(供应商)自己提供 Home Assistant 支持时,这是一个尤其令人惊喜的事情,但这仍然相对罕见。Home Assistant 现在的情况类似于 25 年前的 Linux;许多设备得到支持,但常常是尽管有其 vendor(供应商),而且用户必须仔细选择组件。

安全

Home Assistant 位于家庭网络的 core(核心);它可以访问能够揭示许多关于家庭居住者信息的 sensor(传感器),并且它在一个位置收集数据。如果所有者需要远程访问,安装就会暴露在 Internet(互联网)上。这显然存在发生安全灾难的潜力。

该项目发布了 一份安全策略,描述了项目的立场;它要求对任何安全问题的报告实行 90 天的 embargo(禁运)。鼓励撰写项目安全相关文章的作者在发表前与项目沟通,“以便我们确保所有说法都是正确的”。安全策略明确排除了关于第三方 integration(集成)的报告(毕竟 core(核心)项目无法修复这些问题)。该项目也对已登录 Home Assistant 的用户进行任何 privilege escalation(权限提升)不感兴趣,认为拥有账户的任何人都是完全可信的。

自 2024 年初以来,该项目仅发布了 一份安全 advisory(公告)。2023 年发布了几份,主要源于 GitHub 进行的 安全审计。

第三方 integration(集成)没有得到全面的 vetting(审查),它们终究只是更多的 Python code(代码)。因此,加载一个未知的 integration(集成)类似于从 PyPI(Python 包索引)导入一个未知的 module(模块);它可能会工作,但潜在的麻烦是存在的。项目偶尔会 报告第三方 integration(集成)中的安全问题,但此类报告很少见。我尚未发现在实际环境中存在恶意 integration(集成)的报告,但迟早会有一个出现。

真正用 Home Assistant 做一些事情

一个新的 Home Assistant 安装的所有者,自然首先要寻找家中已安装设备的 integration(集成)。成功安装和初始化后,一个 integration(集成)会向系统添加一个或多个“device(设备)”,每个 device(设备)都有一些用于报告数据的“sensor(传感器)”,以及可能改变其运行状态的“control(控件)”。例如,一个 heat-pump head(热泵主机)可能有用于当前温度和湿度的 sensor(传感器),以及用于其运行模式、风扇速度、叶片方向等的 control(控件)。

值得注意的是,这些 entity(实体)的设置有时似乎有点 non-deterministic(非确定性)。我的 solar system(太阳能系统)有 22 块面板带 inverter(逆变器),每个都报告近十个 parameter(参数)(voltage(电压)、current(电流)、frequency(频率)、temperature(温度)等)。没有简单的方法确定哪个面板报告了例如 sensor_amps_12 ,尤其因为 sensor_frequency_12 几乎肯定对应于 不同 的面板。我的经验是,Home Assistant 是一个适合愿意花大量时间摆弄事物使其达到工作状态的人的系统。处理这些 sensor(传感器)是我早期接触这方面的一个例子;花了一些时间才弄清楚名称和屋顶位置之间的映射关系,然后将每个 sensor(传感器)重命名为更有帮助的名称。

下一个层级的摆弄是设置 dashboard(仪表板)。Home Assistant 在提供给用户的信息和 control(控件)方面提供了极大的灵活性;可以设置专注于例如能源生产或气候控制的屏幕。令人高兴的是,必须通过编写 YAML snippet(代码片段)来完成配置的时代已经基本过去;偶尔仍然需要深入到 YAML 中,但这并不经常发生。界面并不总是直观的,但它相当流畅、交互且功能强大。

Home Assistant 的另一部分我尚未多玩,那就是 automation(自动化)和 scene(场景)。Automation(自动化)是简单的由规则触发的程序,它们会改变一些 control(控件)。它们可以执行诸如“天黑时打开前灯”或“如果有人按门铃而家中无人,则播放吓人的音乐”之类的操作。Scene(场景)则是一系列预设的设备配置。例如,你可以创建一个名为“in-laws visiting(岳父母来访)”的 scene(场景),播放响亮的朋克音乐,将温度设定在刚好高于冰点,禁用所有语音控制,并将所有灯泡调整到 6000K 的色温。

好消息是,除非摆弄本身就是重点(这也可以是一个很好的重点),总会有那么一个时候,事情就是能够正常工作了,而摆弄也可以停止了。一个配置良好的 Home Assistant instance(实例)可以通过任何能够访问并登录的 web browser(网页浏览器),提供关于家居状态的详细信息——以及在设备允许的情况下提供控制。还有(开源的) application(应用程序)可以将这种支持带到 mobile device(移动设备)上,其体验几乎与 web interface(网页界面)无异。

总而言之,Home Assistant 拥有强大且日益壮大的追随者群体,原因显而易见。它是一个开放平台,为试图牢牢掌控我们家庭及其生成的数据的产业带来了控制权。Home Assistant 表明,我们完全可以摆脱那些脆弱、不互操作、随时可能“卷铺盖跑路”(rug-pull-susceptible)的 cloud system(云系统)。就像 Linux 证明了我们可以控制自己的 computer(计算机)一样,Home Assistant 表明我们不必放弃对家庭的控制权。

这篇文章已经写得很长了,但令人惊讶的是,关于真正可以使用 Home Assistant 做什么有趣的事情的内容却很少。这方面有一些有趣的故事可以讲;它们很快将在本系列 第二部分,也是结尾部分 中出现。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

内容概要:本文提出了一种基于非合作博弈理论的居民负荷分层调度模型,并结合双层鲸鱼优化算法(Two-level Whale Optimization Algorithm)进行高效求解,模型与算法均通过Matlab代码实现。研究针对电力系统中居民侧用电负荷的复杂调度问题,引入非合作博弈机制刻画各用户之间的利益竞争关系,实现负荷的分层优化分配;同时设计双层优化架构,上层优化资源配置,下层模拟用户自主决策行为,提升了模型的实用性与合理性。通过智能优化算法求解多层级、非凸非线性的博弈模型,有效提高了调度方案的收敛性与全局寻优能力,适用于现代智能电网中的需求侧管理与能源优化场景。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事智能电网、能源优化调度、需求侧管理、博弈论应用等方向的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于居民区电力负荷的分层优化调度系统设计与仿真分析;②为非合作博弈在多主体能源系统建模中的应用提供方法论支持;③利用双层鲸鱼算法解决具有嵌套结构的复杂双层优化问题,提升求解效率与调度方案的可行性。; 阅读建议:建议读者结合提供的Matlab代码深入理解模型构建逻辑与算法实现流程,重点关注博弈模型的效用函数设计、纳什均衡求解思路以及双层优化结构的迭代机制,宜配合实际用电数据开展复现实验以验证模型有效性与鲁棒性。
内容概要:本文围绕基于自适应神经模糊推理系统(ANFIS)智能控制器的可再生能源微电网功率管理系统展开研究,结合Simulink仿真实现,深入探讨了微电网中功率的智能调控与经济机组组合调度问题。通过引入ANFIS控制器,有效应对风能、光伏等可再生能源出力的波动性与不确定性,提升系统运行的稳定性与电能质量。研究内容涵盖微电网多源协调控制策略、功率平衡管理、优化调度模型构建及仿真验证,实现了对分布式电源、储能系统和负荷的协同优化,兼顾经济性与可靠性目标,并通过仿真平台验证了所提方法的有效性与优越性。; 适合人群:具备电力系统、自动化或新能源相关专业背景,熟悉Matlab/Simulink仿真环境,从事微电网能量管理、智能控制、能源优化等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高比例可再生能源接入场景下的微电网能量管理系统研发与教学实践;②为实现微电网功率稳定控制与经济高效运行提供先进的智能控制解决方案;③支撑高水平学术论文复现、科研课题攻关及实际工程项目的仿真验证与方案优化。; 阅读建议:建议结合提供的Simulink模型与相关代码进行动手实践,重点关注ANFIS控制器的设计流程、规则库构建与参数调优方法,并通过与传统PID或MPC控制策略的对比实验,深入理解其在动态响应与鲁棒性方面的优势。同时可进一步拓展文中提出的优化调度逻辑,应用于多目标、多约束的复杂实际应用场景中。
内容概要:本文档聚焦于“直流电机双闭环控制Matlab仿真”,系统阐述了基于Matlab/Simulink平台实现直流电机双闭环控制系统(主要包括速度环与电流环)的设计与仿真全过程。通过构建直流电机的数学模型,结合PI控制器进行调控,实现对电机转速和电枢电流的高精度动态控制,验证控制策略的稳定性与响应性能。文档详细介绍了仿真模型的搭建流程、关键参数的整定方法、系统动态波形的分析手段以及仿真结果的有效性验证,体现了经典自动控制理论在实际电机系统中的工程应用,是电机控制与电力电子技术相结合的典型研究案例。; 适合人群:具备自动控制原理、电机与拖动基础、电力电子技术和Matlab/Simulink仿真能力的电气工程、自动化、机电一体化等专业的本科生、研究生及从事电机驱动系统研发的工程技术人员。; 使用场景及目标:①作为高校课程设计或实验教学材料,帮助学生深入理解双闭环调速系统的工作机理与工程实现;②服务于科研项目,为新型电机控制算法(如滑模、模糊PID等)的开发与性能对比提供基础仿真验证平台;③作为工业界产品前期设计的仿真工具,用于评估不同控制策略在动态响应、抗干扰能力和稳态精度方面的可行性。; 阅读建议:建议读者在学习过程中紧密结合自动控制理论知识,亲手在Simulink环境中搭建完整的双闭环仿真模型,通过反复调整PI控制器的比例与积分参数,观察并分析转速、电流的阶跃响应曲线,从而深刻理解反馈控制的本质、系统稳定性条件以及参数整定对动态性能的影响,进而掌握电机控制系统的设计精髓。
内容概要:本文研究了基于Benders分解与输电网运营商(TSO)和配电网运营商(DSO)协调机制的不确定环境下输配电网双层优化模型,旨在提升高比例可再生能源接入背景下电网系统的协调性与鲁棒性。模型上层以系统整体经济性为目标进行优化调度,下层采用Benders分解实现TSO与DSO之间的信息交互与协同决策,通过引入割平面迭代机制保障求解的收敛性与全局最优性。研究充分考虑新能源出力与负荷需求的不确定性,构建了具有强适应性的双层优化框架,并基于Matlab完成了模型的编程实现与仿真验证,有效解决了多主体、多层级、多不确定性因素耦合下的电力系统优化调度难题。; 适合人群:具备电力系统分析、运筹学与优化理论基础,熟悉Matlab编程环境,从事智能电网、能源互联网、分布式能源集成、电力市场等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究高渗透率可再生能源条件下输配电网协同优化调度策略;②掌握Benders分解在电力系统双层优化建模中的应用方法与实现技巧;③构建TSO-DSO多主体协调机制,实现跨层级电网资源的高效互动与决策解耦;④提升对不确定性建模、分解算法设计及大规模优化问题求解能力。; 阅读建议:建议读者结合Matlab代码逐模块剖析模型构建流程,重点理解Benders割的生成逻辑、主从问题的信息传递机制及收敛判据设定,推荐在标准IEEE测试系统上复现实验以深入掌握模型特性与算法性能。
内容概要:本文系统研究了基于灰狼优化算法(GWO)优化Elman神经网络的方法,并提供了完整的Matlab代码实现。研究重点在于利用灰狼优化算法强大的全局搜索能力,对Elman神经网络的关键参数进行智能优化,从而克服传统训练方法易陷入局部最优的缺陷,显著提升模型在时序预测与非线性系统建模任务中的精度与稳定性。文章详细阐述了Elman网络的动态反馈机制及其在处理时间序列数据方面的优势,构建了GWO与Elman相结合的混合预测框架,涵盖了从模型搭建、参数寻优、仿真测试到结果分析的全流程,特别适用于风电功率预测、电力负荷预测等具有强时变性和不确定性的工程应用场景。; 适合人群:具备一定Matlab编程能力和神经网络基础知识,从事智能优化算法、时间序列预测、电力系统分析或新能源出力预测等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握灰狼优化算法在神经网络超参数优化中的具体实施路径与技术细节;②深入理解Elman递归神经网络与群体智能优化算法融合的建模范式;③将其应用于风电、光伏等新能源发电功率预测及复杂动态系统的建模与仿真,提升预测性能。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,重点关注GWO算法与Elman网络的接口设计、适应度函数构建及参数优化迭代过程,可通过调整数据集或迁移至其他预测场景以深化理解和验证模型泛化能力。
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 JMeter的录制方法及过滤策略、线程组构成要素是什么? JMeter能够借助第三方录制工具(如BadBoy)或其自带的录制功能来完成录制工作,JMeter的录制机制:是借助HTTP代理服务器来捕获用户在操作网站时产生的链接信息。JMeter允许在配置HTTP代理服务器时,排除掉非必要的CSS、GIF等资源,以此减轻不必要的负担。 线程组涵盖:线程组的名称标识、附加注释说明、线程组内的用户数量、线程组完成请求的时间分配、循环执行次数、时间调度机制 【JMeter性能测试详解】 JMeter是一款功能强大的性能测试软件,常用于模拟大规模用户同时访问Web应用,用以衡量系统的性能表现和稳定性。接下来将具体说明JMeter的操作方法、线程组的设置以及性能测试的重要环节。 **JMeter录制与过滤** JMeter可以通过BadBoy等外部工具或其自带的HTTP代理服务器来记录用户的行为。其录制原理是JMeter作为HTTP代理,拦截用户浏览器发出的所有网络请求。在配置代理服务器时,能够过滤掉不必要的CSS、GIF等静态资源,以减少无效的负载。 **线程组配置** 线程组是JMeter测试计划的核心部分,包含以下几个关键参数: 1. **线程组名**:用于区分测试计划中的不同测试区域。 2. **注释**:用于记录测试目标或注意事项。 3. **线程数**:用于模拟并发用户的数量。 4. **循环次数**:每个线程需要执行的循环次数,可以设置为无限循环。 5. **Ramp-up period**:规定所有线程启动的时间跨度,旨在平滑增加负载。 6. **定时器**:例如思考时间或...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值