用途:用于构建、测试和审查 Home Assistant 集成(Integration),查看某个集成时应优先以本资料为准。
文件位置:集成代码位于 ./homeassistant/components/<integration_domain>/,集成测试位于 ./tests/components/<integration_domain>/。寻找示例时优先参考质量等级为 platinum 或 gold 的集成。
通用规范:轮询间隔不可由用户配置,不要在 config flow 或 config entry 中添加 scan_interval、update_interval 或轮询频率选项;不要允许用户在 config flow 中设置 config entry 名称,名称由系统自动生成或稍后在 UI 中自定义,helper 集成可例外。对于实体动作和实体服务,若字段已由 Home Assistant 校验 schema 和实体过滤器强制约束,避免要求冗余的防御性检查;仅当取值绕过校验或被不安全地转换时才要求额外防护。当校验保证键存在时,优先用 data["key"] 直接索引而非 .get("key"),让错误假设尽早失败。集成应是薄封装,协议解析、设备状态机等领域逻辑应放在独立的 PyPI 库中,不确定时先询问;不要为实现库的限制在集成中打补丁或变通,应更新库来修复。
平台附加指引:Diagnostics 参考 platform-diagnostics.md,Repairs 参考 platform-repairs.md。
实体平台:async_added_to_hass() 与 async_will_remove_from_hass() 行为需对称,例如前者创建订阅则后者取消订阅;实体基类提供稳定 API,不要重复声明基类已有的属性或方法,也不要为父类行为变化添加防护。
质量等级:校验质量等级规则时查阅 https://developers.home-assistant.io/docs/core/integration-quality-scale/rules;实现或审查集成时应始终考虑这些规则。模板文件在 ./script/scaffold/templates/integration/integration/quality_scale.yaml。检查 manifest.json 的 "quality_scale" 键确定等级;Bronze 规则对所有带质量等级的集成始终必需;更高层级规则仅在集成目标为对应层级或更高时适用;在集成目录的 quality_scale.yaml 中查看规则状态:done 表示已实现,exempt 表示不适用(注释说明原因),todo 表示待实现。
测试:测试应避免与集成内部细节交互或对其打桩,详见 https://developers.home-assistant.io/docs/development_testing/#writing-tests-for-integrations。