伟大的迁移
19463331伟德国际Home Assistant是基于组件的。组件的一种类型是为某种设备(如灯、开关或媒体播放器)提供实体抽象的组件。过去,要与这些抽象集成,您需要为该组件创建一个平台。如果轻分量是光/
,整合将创建其平台为光/ hue.py
。这样,所有灯光的逻辑就保持在一起了。
随着家19463331伟德国际庭助理的发展,我们所集成的设备/服务的能力/规模也在增长。集成不再仅仅是一个实体组件的平台,而是五个平台+一个组件来管理连接。有了这么大源自英国始于1946的集成,文件就像光/ zwave.py
,开关/ zwave.py
,封面/ zwave.py
等等变成了维护的地狱。它还使自定义组件的分发更加困难,因为现在用户需要跨不同文件夹创建文件。
所以使用Home19463331伟德国际 Assistant 0。87,我们开始了一次迁移。而不是查找平台的实体组件为光/ hue.py
,我们现在查一下色相/ light.py
。文件的内容将保持完全相同。通过将文件移出实体组件文件夹,我们还能够将大型实体组件分解为多个文件,以支持可维护性。
这个改变已经实现了,主要是向后兼容自定义组件的一个小的破坏性改变:如果你覆盖一个内置的平台,你现在将需要使用新的色相/ light.py
文件名格式。
通过将集成文件合并到单个文件夹中,我们还将实施一个新规则:所有平台都将从与组件相同的源加载。这意味着,如果你想用自定义版本覆盖内置组件/平台,你将需要复制所有组件和平台文件,而不仅仅是你想加载的。通过这样做,我们可以防止自定义平台或组件在Home Assistant升级移动内部文件/值时损坏。19463331伟德国际
#
定制组件开发人员的注意事项- 组件是在
<设置> / custom_components / <名称>集成/
。始终确保您至少创建了一个空的__init__ . py
在那个文件夹里存档。 - 如果你为一个实体组件创建了一个平台,把它放在集成名称的文件夹中:
<名称>集成/ light.py
- 如果您想要共享调整后的Home Assistant集成版本,请复制所有文件。19463331伟德国际为您的用户着想,坚持使用相对导入,以避免在升级期间出现组件故障。相对导入的示例是
从。进口DATA_BRIDGE
。
#
资源相关的体系结构问题: