LWN:Home Assistant在0.112版本中的性能改进!

HomeAssistant最新版本0.112在数据库性能方面进行了重大升级,尤其提升了logbook和history组件的效率,改进了自动化条件语法,增强了用户界面,新增了多项集成并重写了Smappee电源监控平台。

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

Home Assistant improves performance in 0.112 release

By John Coggeshall
July 6, 2020
原文来自:https://lwn.net/Articles/825004/
主译:DeepL

Home Assistant项目发布0.112版本,我们之前已经在文章中介绍过它。这也是它今年的第八个版本。之前的版本主要集中在对前端界面的集成和改进,而在这个版本中,重心更多地转向了对数据库性能的提升。需要注意的是,在尝试升级之前,需要了解这次数据库方面重大变化,有可能在几个方面无法保证向后兼容了。

根据贡献者Franck Nijhof撰写的release note,这个版本的主要目标是希望提供更好的性能,重点是logbook和history组件。从性能的角度来看,主要就是在上一个版本(v0.111)的基础上,重点减少启动时初始化hub的耗时。

Faster historic data

logbook和history基本上是对同一数据的不同的view,都是表示在某个特定时间点时一个entity的历史状态的。history组件更像是entity的状态变化的原始视图,而logbook则是按时间倒序的数据,更方便用户分析的、high level的数据表示。随着时间的推移和Home Assistant的运行,它会产生大量关于智能家居设备的历史数据。每当一盏灯打开或一个传感器读取到数据时,都会被记录在数据库中,并由这些组件通过网络界面供其他组件或用户来使用。数据量可能相当大,之前的版本中,当试图在用户界面中访问这些数据时,性能很不好。

Home Assistant 0.112提供了"absolutely game-changing performance improvements to the logbook and history panels",这是Nijhof的说法。"说实话,我过去避免使用日志,因为它的速度很慢。"。大部分的性能改进似乎与底层数据库的schema改进有关。正在升级的用户可以会观察到计,Home Assistant 0.112首次启动需要几分钟到几个小时的时间,这是在进行数据迁移。迁移所需的时间,也就是升级后第一次启动所需的总时间,都取决于需要迁移到新的数据库schema的数据具体有多少。

除了schema变化之外,logbook还改进了它的用户界面,提供了更强大的日期和时间过滤选项,让用户更容易能查找分析hub中的数据。此外,logbook现在可以识别与日志中的条目相关联的人员,从而更容易理解为什么会发生特定的状态变化(比如知道是John打开了厨房灯,而不是自动化规则打开的灯)。

Improvements to automation condition syntax

另一个重要的改进是跟涉及多个entity的自动化规则设计有关。通常的做法是在自动操作(Home Assistant 术语中的 "automation")执行之前,经常需要先设置好这些多个实体状态值condition。过去,这必须要为每个实体创建一个单独的条件来设置,有些过于繁复了。从0.112版本开始,可以将多个条件合并成一个单一的条件并指明它所适用的entity列表。例如有一个自动化动作只有在厨房和客厅的灯都打开时才会发生。在以前的版本中,可以通过以下方式实现:

condition:    - condition: state      entity_id: light.kitchen      state: 'on'    - condition: state      entity_id: light.living_room      state: 'on'

而在0.112版本中,这些条件可以简单用下面的条件来表示:

condition:   - condition: state     entity_id:       - light.kitchen       - light.living_room     state: 'on'

对于state condition这边,并不仅仅是为entity_id增加了一个列表,而且也可以用列表在条件规则中指定多个state值:

# Instead of creating multiple condition entries # for two different acceptable states, one can now # be used. condition:   - condition: state     entity_id: alarm_control_panel.home     state:       - armed_home       - armed_away

General improvements

0.112版本带来了一些显著的UI变化。关于提供专门配置或开发工具(如MQTT)的集成方面,这些集成特有的项目已被整合起来。以前这些工具分散在界面的配置和开发工具部分。在0.112版本中,集成工作专用的工具已经被移到了一个专门针对integration的配置区域。

0.112版本还在提供基于UI的集成配置(而不是需要直接编辑YAML文件)这方面取得了很大进展。总共增加了12个新的可以通过UI来配置的integration。还有一些其他变化,比如信息页面,比如系统级的日志记录(是指Python异常这一类,而不是像logbook这样的hub相关的事件)页面从开发工具部分移到了配置UI里的server control部分。正如Nijhof写道:"[...] the logs and information pages used to be in the development tools panel, but they didn't really belong there. They aren't really tools for developing, they provide information on your setup."

升级的话,需要格外注意一些兼容性问题。Release note里面特别提醒需要注意automation、scene和script中的hidden这个attribute使用。从这个版本开始,hidden属性会完全被忽略掉。hidden属性是项目一直在努力希望废弃的东西,在这个版本中终于完全删除。这很可能会在升级过程中给用户带来问题,仍在使用hidden的那些旧configuration可能不能再正常工作了。仍在使用该属性的用户需要从相关配置中把它删掉了。Release Notes中还指出其他各种与特定的Integration相关的向后兼容性问题,提供了完整的列表供升级前进行审查。

最后,0.112版本增加了四个全新的Integration和九个新的platform。其中值得注意的是包括了一个完全重写过的Smappee电源监控平台的integration。这次重写是由Smappee自己贡献的,这也标志了Home Assistant被更广泛的商业生态系统所接受。关于这些新integration的完整细节可以在release note中找到。

随着每一个版本的发布,Home Assistant都在不断成熟,我们也会继续关注这个项目的进展。总的来说,这个版本有很多改进,每次升级的时候都有许多值得期待的内容。

全文完

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值