二 Home Assistant 集成文件结构 & 集成测试文件结构

集成文件结构

每个集成都存储在以集成域命名的目录内。域是由字符和下划线组成的短名称。这个域必须是唯一的且不能更改。移动应用集成的域示例:mobile_app。所以此集成的所有文件都在mobile_app/文件夹中。

此文件夹的最低限度内容如下:

  • manifest.json:清单文件,用于描述集成及其依赖关系。更多信息
  • __init__.py:组件文件。如果集成仅提供一个平台,你可以将此文件限制为一个介绍集成的文档字符串"""The Mobile App integration."""

集成设备 - light.pyswitch.py

如果你的集成要集成一个或多个设备,你需要通过创建一个与实体集成交互的平台来实现。例如,如果你想在Home Assistant中表示一个灯光设备,你将创建light.py,它将包含灯光集成的灯光平台。

集成服务操作 - services.yaml

如果你的集成要注册服务操作,它需要提供可用操作的描述。描述存储在services.yaml中。更多关于[services.yaml](https://developers.home-assistant.io/docs/dev_101_services)的信息。

数据更新协调器 - coordinator.py

你的集成有多种接收数据的方式,包括推送或轮询。通常,集成将通过在所有实体上进行单个协调轮询来获取数据,这需要使用DataUpdateCoordinator。如果你想使用它,并且选择创建它的子类,建议在coordinator.py中定义协调器类。更多关于DataUpdateCoordinator的信息

Home Assistant查找集成的位置

当Home Assistant在配置文件中看到域引用(即mobile_app:)或者它是另一个集成的依赖项时,它将查找集成。Home Assistant会在以下位置查找:

  • <配置目录>/custom_components/<域>
  • homeassistant/components/<域>(内置集成)
    你可以通过在<配置目录>/custom_components文件夹中拥有相同域的集成来覆盖内置集成。当你覆盖核心集成时,manifest.json文件需要一个版本标签。被覆盖的核心集成可以通过概述中集成框右上角的特定图标来识别在这里插入图片描述
    。注意,覆盖内置集成不被推荐,因为你将不再获得更新。建议选择一个唯一的名称。

集成测试文件结构

每个集成的测试都存储在以集成域命名的目录中。例如,移动应用集成的测试应存储在tests/components/mobile_app中。

该文件夹的内容如下:

  • __init__.pypytest查找测试所需,你可以将此文件限制为一个介绍集成测试的文档字符串"""Tests for the Mobile App integration."""
  • conftest.pypytest测试夹具。
  • test_xxx.py:测试集成相应部分的测试。例如,__init__.py中功能(如设置、重新加载和卸载配置项)的测试应在名为test_init.py的文件中。

与其他集成共享测试夹具

如果你的集成是一个实体集成,其他集成有其平台(如lightsensor),该集成可以提供测试夹具,用于编写其他集成的测试。

例如,light集成可以通过向tests/components/conftest.py添加夹具存根,并在tests/components/light/common.py中实现夹具的实际代码,来提供用于创建模拟灯光实体的夹具。

总结

该文档主要讲述了Home Assistant中集成的文件结构相关内容,包括集成的存储目录结构、各文件的作用(如manifest.json__init__.pylight.py等)、数据更新协调器相关、Home Assistant查找集成的位置以及覆盖内置集成的注意事项等。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值