集成文件结构
每个集成都存储在以集成域命名的目录内。域是由字符和下划线组成的短名称。这个域必须是唯一的且不能更改。移动应用集成的域示例:mobile_app。所以此集成的所有文件都在mobile_app/文件夹中。
此文件夹的最低限度内容如下:
manifest.json:清单文件,用于描述集成及其依赖关系。更多信息__init__.py:组件文件。如果集成仅提供一个平台,你可以将此文件限制为一个介绍集成的文档字符串"""The Mobile App integration."""。
集成设备 - light.py、switch.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__.py:pytest查找测试所需,你可以将此文件限制为一个介绍集成测试的文档字符串"""Tests for the Mobile App integration."""。conftest.py:pytest测试夹具。test_xxx.py:测试集成相应部分的测试。例如,__init__.py中功能(如设置、重新加载和卸载配置项)的测试应在名为test_init.py的文件中。
与其他集成共享测试夹具
如果你的集成是一个实体集成,其他集成有其平台(如light或sensor),该集成可以提供测试夹具,用于编写其他集成的测试。
例如,light集成可以通过向tests/components/conftest.py添加夹具存根,并在tests/components/light/common.py中实现夹具的实际代码,来提供用于创建模拟灯光实体的夹具。
总结
该文档主要讲述了Home Assistant中集成的文件结构相关内容,包括集成的存储目录结构、各文件的作用(如manifest.json、__init__.py、light.py等)、数据更新协调器相关、Home Assistant查找集成的位置以及覆盖内置集成的注意事项等。
2510

被折叠的 条评论
为什么被折叠?



