质量等级

集成质量等级是 Home Assistant 针对用户体验、功能、代码质量和开发者体验为集成评分的框架。 为了进行评分,该项目提出了一套分级标准,每个级别都有自己的评价标准。

级别划分

分为四个级别:铜、银、金和铂。 要达到某个级别,集成必须满足该级别及以下级别的所有规则。

这些级别定义如下。

🥉 铜级

铜级是所有新集成的基础标准和要求。它满足代码质量、功能和用户体验的最低要求。它符合基本期望,并为用户与其设备和服务的交互提供可靠的基础。

文档提供了从 Home Assistant 用户界面直接设置集成的指导。

从技术角度来看,此集成已被审查,以符合我们对所有新集成的最低标准,包括设置集成的自动化测试。

铜级具有以下特征:

  • 可以通过用户界面轻松设置。
  • 源代码遵循基本编码标准和开发指南。
  • 保护此集成的自动化测试可以正确配置。
  • 提供足够的基本最终用户文档,使用户能够逐步轻松入门。

🥈 银级

银级在铜级的基础上,通过提高集成的可靠性和稳健性,确保健壮的运行时体验。它确保集成正确处理错误,例如设备或服务的身份验证失败、处理离线设备以及其他错误。

这些集成的文档提供有关使用该集成时 Home Assistant 中可用内容的信息,并在出现问题时提供故障排除信息。

该集成有一名或多名活跃的代码维护者,帮助维护集成,以确保该级别的体验在现在和未来持续。

银级具有以下特征:

  • 提供铜级所具备的一切。
  • 在各种情况下提供稳定的用户体验。
  • 有一名或多名活跃的代码维护者帮助维护集成。
  • 能够正确并自动恢复连接错误或离线设备,而不会填充日志文件或产生不必要的消息。
  • 如果与设备或服务的身份验证失败,自动触发重新身份验证。
  • 提供详细的文档,说明集成提供的内容及故障排除问题的说明。

🥇 金级

金级是集成用户体验的标准,提供广泛和全面的对集成设备和服务的支持。金级集成旨在用户友好、功能齐全,并且可让更广泛的受众使用。

在可能的情况下,设备会被自动发现,以便轻松、无缝地设置,并且其固件/软件可以直接从 Home Assistant 更新。

所有提供的设备和实体都有逻辑命名并且可以完全翻译,已被正确分类并启用以供长期统计使用。

这些集成的文档详尽,主要面向终端用户,非技术消费者也能理解。除了提供有关集成的一般信息外,文档还提供可能的示例用例、兼容设备列表、集成提供的描述实体列表以及集成提供的可用操作的详细描述和使用示例。同时,非常建议使用示例自动化、仪表板、可用蓝图及额外外部资源链接。

集成提供调试问题的方法,包括下载诊断信息和记录故障排除说明。如果需要,集成可以通过用户界面重新配置。

从技术角度来看,集成的代码库需要有全面的自动化测试覆盖,以确保设定的集成质量在现在和将来保持。

所有在与 Home Assistant 配合工作的程序中的设备,都至少需要拥有这一等级。

金级具有以下特征:

  • 提供银级所具备的一切。
  • 提供用户能体验到的最佳终端用户体验;简化且直观。
  • 可以被自动发现,简化集成设置。
  • 可以重新配置和调整集成。
  • 支持翻译。
  • 详尽的文档,面向非技术用户。
  • 支持在可能情况下通过 Home Assistant 更新设备的软件/固件。
  • 集成具有覆盖整个集成的自动化测试。
  • 在与 Home Assistant 配合工作程序中提供设备的集成所需的最低水平。

🏆 铂金级

铂金级是集成能够达到的最高水平,是 Home Assistant 中质量的典范。它不仅提供最佳用户体验,还通过遵循最高标准、卓越的代码质量和优化的性能和效率实现技术卓越。

铂金级具有以下特征:

  • 提供金级所具备的一切。
  • 所有源代码遵循所有编码和 Home Assistant 集成标准及最佳实践,全面类型化,具有类型注释和清晰的代码注释,以提高代码清晰度和可维护性。
  • 完全异步的集成代码基础确保高效运行。
  • 实现高效的数据处理,减少网络和 CPU 使用。

特殊等级

有四个特殊等级适用于不在级别划分列表中的集成。 这是因为它们要么是 Home Assistant Core 的内部部分,要么根本不在 Home Assistant Core 中,或者没有达到评分与级别划分的最低要求。

特殊等级定义如下。

❓ 无评分

这些集成可以通过 Home Assistant 用户界面设置。无评分的标注并不意味着它们是差的或有缺陷的,而是表明它们尚未根据质量等级进行评估,或者需要一些维护以达到现在认为的最低铜级标准。

无评分级别不能分配给新集成,因为它们在引入时至少需要达到铜级。Home Assistant 项目鼓励社区帮助更新这些没有评分的集成,以满足至少铜级的要求。

特征:

  • 尚未评分或缺乏足够的信息进行评分。
  • 可以通过用户界面设置,但可能需要改进以获得更好的体验。
  • 可能能正常运行,但尚未根据当前标准进行验证。
  • 文档通常仅提供基本设置步骤。

🏠 内部级

内部级分配给 Home Assistant 内部使用的集成。这些集成提供 Home Assistant Core 程序或其他集成构建其基础的基本组件和构建块。

内部集成由 Home Assistant 项目维护,并遵循严格的架构设计程序。

特征:

  • Home Assistant Core 程序的内部构建块。
  • 为其他集成提供构建块以供使用和扩展。
  • 由 Home Assistant 项目维护。

💾 传统级

传统级集成是多年来一直作为 Home Assistant 的一部分的较旧集成,可能自其创建以来就存在。它们只能通过 YAML 文件进行配置,通常缺乏活跃的维护人员(代码所有者)。这些集成可能设置复杂,并且在使用和功能上不符合当前/现代最终用户的期望。

Home Assistant 项目鼓励社区帮助将这些集成迁移到用户界面,并更新以符合现代标准,使这些集成对所有人可访问。

特征:

  • 设置过程复杂;只能通过 YAML 进行配置,没有基于用户界面的设置。
  • 可能缺乏活跃的代码所有权和维护。
  • 可能缺少近期更新或bug修复。
  • 文档可能仍针对开发者。

📦 自定义级

自定义集成由社区开发和分发,为 Home Assistant 提供额外的功能和支持。这些集成不包括在官方 Home Assistant 发布中,可以手动安装或通过第三方工具(如 HACS [Home Assistant Community Store])安装。

Home Assistant 项目不审查、进行安全审核、维护或支持第三方自定义集成。用户在安装前被鼓励认真审查自定义集成的源代码和社区反馈。

我们鼓励和邀请开发者通过使其与集成质量等级对齐并提交纳入来为 Home Assistant 项目贡献自定义集成。

特征:

  • 不包括在官方 Home Assistant 发布中。
  • 可以手动安装或通过社区工具(如 HACS)安装。
  • 由个人开发者或社区成员维护。
  • 用户体验可能差异很大。
  • 功能、安全性和稳定性可能差异很大。
  • 文档可能有限。