Hass.io 2018 路线说明
我们注意到,社区对 Hass.io 与 Home Assistant 的关系,以及即将到来的 Hass.io 变更会带来什么影响,存在一些困惑。本文会尽量把这些问题说明清楚。
What is Hass.io
Hass.io 是由 Home Assistant 作者打造的一套完整运行方案。它的目标是提供一个易用且安全的系统,并且可在 Home Assistant 用户界面中完成全部管理。
所谓“完整方案”,意味着它自带高度安全且经过优化的操作系统、用于维护和配置系统的 Supervisor 应用,以及 Home Assistant 本体。
使用 Hass.io 时,你会在 Home Assistant UI 里看到新的 Hass.io 面板。用户可以在这里配置系统,并通过点击按钮安装 Home Assistant 更新。用户还可以创建系统快照,轻松把全部配置迁移到新系统,或恢复到之前的状态。
我们也希望把通过 UI 无缝更新与配置的便利扩展到其他应用,因此推出了 Hass.io 插件。任何应用都可以被打包成 Hass.io 插件,让用户轻松安装和管理。自推出以来,社区共享插件的规模增长非常快。现在你可以一键安装网络广告拦截器、MQTT Broker 甚至 Tor。
Upcoming changes to Hass.io
我们在去年 7 月推出了 Hass.io。此后我们发现还有不少改进空间,可以让 Hass.io 更易用、更易维护,也更容易与其他主机系统集成。
下面的改进说明会稍微偏技术向。如果你只想看结论,可以直接跳到文末结论。
Automatic 插件 配置
Home Assistant 最近引入了配置条目(config entries)。我们会接入这项能力,让插件自动配置其在 Home Assistant 中对应的集成。例如,用户安装 MQTT Broker 插件后,我们会自动配置 Home Assistant 与其连接。
Host management
目前我们通过名为 HostControl 的自定义服务控制主机系统,让用户可在 Home Assistant 中管理主机并重启/关机。接下来我们会改用 D-Bus,而不再依赖自有机制。D-Bus 是服务与应用通信的标准机制。采用标准后,主机各部分都可以远程配置,比如声音、网络等。我们也会扩展 Home Assistant 中的 Hass.io 面板,加入配置主机各项功能的控制项。
Hass.io OS
Hass.io 目前使用的是我们 fork 的 ResinOS。ResinOS 原本面向 Docker 最小运行环境、简化的 OTA 更新,以及连接 ResinIO 云。我们的分支移除了 ResinIO 相关逻辑。随着时间推移,ResinOS 的演进方向逐渐与我们的目标不一致,导致维护 fork 分支占用了大量时间。
ResinOS 的构建系统基于 Yocto Project。它非常强大,但每个硬件平台都需要单独添加并维护支持(比如各个版本的树莓派),这导致 Hass.io 的构建和开发周期较长。
综合这些因素,我们决定构建自己的定制操作系统。当然我们不会从零开始,而是基于 Buildroot 构建,并使用 RAUC 实现 OTA 更新。
新操作系统将具备以下能力:
- 更容易为新硬件添加支持。
- 更新采用原子方式并具备故障保护。如果系统在 OS 升级后无法启动,会自动回退并启动上一个可用版本。
- 更新包必须由 Home Assistant 团队进行安全签名,进一步提升安全等级。
- 根文件系统会被压缩,在 SD 卡和低速 IO 接口上运行更快。
- 通过压缩部分内存,可存储更多信息。
Hass.io 用户现在需要做什么
现在:什么都不用做。
新的 Hass.io Supervisor 仍支持旧 ResinOS 构建(我们面向树莓派和 Intel NUC 的官方下载),也支持通用 Linux 安装。如果你是在 SUSE Linux 或 Ubuntu 上进行通用 Linux 安装,想使用新功能就需要更新本地 AppArmor 配置文件(我们会在发布时提供说明)。
新 HassioOS 安装镜像发布后,你需要为设备重新刷写一次。通过 Snapshot 功能可以在不丢失配置的情况下完成:
- 创建当前安装的快照并下载到电脑。
- 将新的 Hass.io OS 镜像刷入 SD 卡。
- 恢复你的快照。
- 开始使用全新升级后的 Hass.io。

