本帖最后由 anthonyhou 于 2020-6-7 09:02 编辑
你可能不喜欢这种模棱两可的答案,你可能希望一个简单又肯定的“不会”作为回答。不过,情况有点复杂。
此文章希望能解释这个答案,让大家知道为什么我们有这个决定以及在未来Home Assistant将如何设置。
使用用户界面设置
在讨论YAML之前,让我们解释一下开发所有UI功能背后的原因。
过去几年,Home Assistant项目以惊人的速度增长。作为提供本地家庭自动化平台的少数解决方案之一,该解决方案将隐私放在首位,引起了人们的兴趣。
最初,Home Assistant只是一个小项目,针对开发人员和精通技术的人。随着隐私问题的增加,以及整个家庭中IoT设备可用性的增加,该项目受到了关注。吸引了很多新的社区成员,这些成员并不总是精通技术的。
这很棒,但这也意味着我们需要进行调整,令每个人都可以使用它。我们希望每个人都享受一切,无论您的经验水平如何。
考虑到这一点,需要通过用户界面来启用和授权人们来管理其Home Assistant。不仅为那些不那么精通技术的人(因为它还带来了便利),甚至许多具有技术能力的用户都喜欢。
目标:让使用Home Assistant更便利。
我们当前最关注此目标。
破坏性更新
我们都讨厌它们,那些在发布新版本时会带来重大变化的更新。我们都查阅了发行说明,希望您不受该发行版中的任何影响。 通过用户界面使用配置有很大的好处:Home Assistant为您管理设置的部分,并处理升级和迁移。几乎消除了破坏性的更新的影响,我们所有人都同样讨厌这样的更新。
分享与安全
这是一张截图,来自State of the Union 2019
我们每个人都喜欢分享自己的经验,也分享Home Assistant配置。 GitHub上有很多人共享自己的配置。
这很棒!分享想法,为所有人提供灵感!
这有一个很大的缺点,那就是隐私和安全性。我们不想分享很多东西。例如,我们的密码,敏感(个人)信息或(历史)数据。
更技术一点,有些组件使用OAuth2作为身份验证方法,有些组件如Somfy,根本不需要存储用户名/密码。
YAML与用户界面
Home Assistant正在朝着将YAML配置与UI中完成的配置更好地分离发展。好像从Lovelace與最近推出的Helpers(在YAML中也称为input_ *)。
區域可以通过用戶界面和YAML(甚至可以同时!)来配置区域。这两个配置源都將會在Home Assistant加载,并且可以在不重新启动Home Assistant的情况下實時更新这两个配置源。
在未来,Home Assistant将越来越朝着这个概念发展。这使任何人都可以使用他们喜欢的方法配置。
在这些情况下,通过添加重新加载等功能以及删除与YAML文件冲突的部分,对YAML支持进行了扩展和改进。
我们还是一个开源的项目
Home Assistant是一个开源项目,它依赖于大家开发这些令人震惊的组件,对其进行维护并扩展其功能以使其更加强大。
这些贡献者在他们的业余时间里做到了这一点,我们所有人都对此深表感谢。正是他们的付出成就了Home Assistant今日的成果,让你的房屋更加自动化。
那么一些删除YAML配置的组件呢?一些贡献者已决定删除YAML的支持,以减轻他们开发和维护负担。需要投入的精力(以维持两种配置方法)可能过多且复杂。我们必须理解并接受这一点。如果我们不这样做,那么贡献者就可以停止开发。
不幸的是,他们的举动造成了重大变化,并常常导致一些对贡献者和整个项目的相当负面的评论。这对每个人都是有害的,因为贡献者会失去开发的动力,或者更糟糕的是,不想推送新功能或进行重大更新。
这违反了我们这个项目的目标,减慢了创新速度,并增加了失去贡献者和维护者的风险。最后,给每个人都带来更大的损失。
YAML的未来
因此,在以上所有前提下:YAML的未来是什么?
截至今天,https://github.com/home-assistant/architecture/blob/master/adr/0010-integration-configuration.md(Architectural Decision Record)已获得批准,其中指出:
- 与设备和/或服务通信的任何新组件都必须通过UI使用配置。仅在极少数情况下才允许通过YAML进行配置,具体情况视各组件而定。
- 允许并鼓励与设备和/或服务进行通信的现有组件,以通过UI进行配置并删除YAML支持。
- 对于与设备和/或服务进行通信的现有组件,我们将不再接受对YAML配置的任何更改。
那么,YAML的作用将会是什么?
不与设备和/或服务通信的所有其他组件都可以通过YAML或通过存储集合(可以同时设定YAML和用户界面的配置,例如Lovelace与区域)。以下这些组件的例子:
- 集成通信的组件。这些组件允许用户定义自己的通信协议,例如MQTT,串行,GPIO。
- 处理Home Assistant数据并使其可用于其他组件的组件,例如模板,统计信息,衍生工具,效用表(template, stats, derivative, utility meter)。*
- 提供自动化的组件,例如自动化,device_sun_light_trigger,警报。
- 有助于控制设备和服务(例如脚本,场景)的组件。
- 公开Home Assistant数据给其他服务的组件,例如Google Assistant,HomeKit。 该ADR旨在消除所有人的困惑和问题,并基于我们的目标(如在State of the Union提出的目标),并为我们的贡献者制定指导方针。该ADR为我们所有人解释清晰了。
辟谣
在整个社区的关注和评论中,已经多次发现了一些评论。请注意,这些不是精确的引用,因为我们不想责怪某人。
“制作备份变得更加困难”
使用Home Assistant快照功能,这将不会是问题。但是,如果您在仅运行Core(无HassIO)的系统上进行手动备份,则需要确保同时备份.storage文件夹(希望您已经在执行此操作)。否则,与以前相比没有区别。
“如果集成不支持YAML,则很难测试我的配置”。
进行YAML配置测试,通常是查看特定的YAML配置是否对Home Assistant(新版本)有效。通过用户界面设置组件时,这将不成问题,因为Home Assistant确保数据结构在不同版本之间保持兼容并同时为你迁移。
“我喜欢使用私有git存储库,因为这储存卡不公开,所以我将所有数据(包括敏感数据)存储在其中。没有YAML,这将会变得不可能。”
事实并非如此,.storage文件夹包含所有Home Assistant配置文件(JSON格式),在这种情况下,你可以将其存储在git存储库中并对其进行版本控制。
YAML会离开吗?
不会!
有些原因不适合公开分享。对于我们目前无法在用户界面配置的高级功能,YAML也仍然可用。我们的目标不是逐步淘汰YAML,而是打造世界上每个人都易于使用的最佳家庭自动化平台。使所有经验水平的用户都可以享受我们的爱好,并允许每个人专注于最重要的事情:使我们的房屋自动化。
|