HA开发者-集成基础知识

1,402 阅读4分钟

作者:拿铁编码_韦斯利 创建日期:2023年7月28日


自定义集成:创建一个简单的Home Assistant集成

在Home Assistant中,集成是用于连接和支持各种设备、服务和平台的组件。创建自定义集成允许您将特定设备或服务集成到Home Assistant中,并将其作为本机实体进行操作和控制。在本文中,我们将探讨使用脚手架脚本创建一个简单的Home Assistant集成的基本步骤。

让我们详细了解集成的两个关键组成部分:

  1. 组件(Components) :组件是集成的脉络,为该领域内的逻辑提供骨架。它负责管理和处理所有主要的逻辑流程。
  2. 平台(Platforms) :平台则是集成的触角,它将集成与其他设备或服务连接起来。以灯泡集成为例,它可能拥有多个平台,如 Philips Hue、LIFX、IKEA TRADFRI等,将这些不同品牌的灯泡无缝整合在一起。

集成可以完成以下任务:

  • 监听或触发事件:集成有能力监控特定事件,比如设备状态变化或用户操作等,并在事件发生时执行相应的响应。
  • 提供服务:集成能提供一系列的服务,如灯泡开关、温度设定等。
  • 维护状态:集成还能维护和更新设备的状态,比如灯泡的开关状态或者空调的温度等。

通过深入理解和学习集成的架构,我们能够更好地驾驭Home Assistant,甚至根据个人需要创造和开发自己的集成。

第一步:最小化集成

首先,让我们看看最小化的集成结构。一个最简单的自定义集成将包含以下文件:

init.py:集成的主要入口文件,用于初始化和设置集成。

manifest.json:用于定义集成的配置、依赖和其他元数据。

通过这两个文件,您将能够在Home Assistant中启用并安装您的集成。然而,这个最小化的结构不包含实体定义、配置流和其他功能。

第二步:创建__init__.py

在__init__.py中,您需要实现一些关键函数来初始化和配置您的集成。以下是一个最基本的__init__.py示例:

DOMAIN = "my_integration"

async def async_setup(hass, config):
    # 在这里设置集成
    return True

async def async_setup_entry(hass, entry):
    # 在这里设置配置流
    return True

async def async_unload_entry(hass, entry):
    # 卸载配置流
    return True

在上面的示例中,我们定义了DOMAIN作为我们集成的标识符,并实现了三个异步函数:async_setup、async_setup_entry和async_unload_entry。这些函数是集成的关键部分,它们允许您初始化集成、设置配置流并在卸载配置流时执行清理操作。

第三步:创建manifest.json

manifest.json文件包含有关集成的元数据和配置信息。以下是一个最简单的manifest.json示例:

{
  "domain": "my_integration",
  "name": "My Custom Integration",
  "documentation": "https://example.com",
  "dependencies": [],
  "codeowners": [],
  "config_flow": true
}
  • domain:集成的唯一标识符,用于在系统中识别和区分不同的集成。它是一个字符串值,必须是唯一的。
  • name:集成的名称,用于在用户界面中显示。它是一个字符串值,可以是本地化的名称。
  • documentation:集成的文档链接,可以指向集成的详细文档、说明或支持网页。它是一个URL字符串。
  • dependencies:集成所依赖的其他集成。它是一个字符串数组,列出了其他集成的domain,以表明当前集成需要这些其他集成才能正常运行。
  • codeowners:指定代码所有者的信息,用于在代码仓库中指定负责维护和审核集成代码的人员。它是一个字符串数组,包含GitHub用户名或电子邮件地址。
  • config_flow:指定集成是否包含配置流。配置流用于向用户提供配置选项,以便设置集成。它是一个布尔值,可以是true或false。

第四步:启用集成

一旦完成了__init__.py和manifest.json的编写,您就可以将自定义集成添加到Home Assistant中。将这两个文件放在正确的位置,

custom_components/
    my_integration/
        __init__.py
        manifest.json

custom_components是Home Assistant配置目录下的一个文件夹,用于存放自定义集成。my_integration是您的集成的名称,即domain字段在manifest.json中定义的值。__init__.pymanifest.json文件都放在my_integration文件夹中。

并在配置文件中进行相应的配置:configuration.yaml文件中进行相应的配置。在configuration.yaml文件中添加以下行:

 my_integration

这只是一个最简单的集成结构示例,您可以根据需要添加更多功能,例如实体定义、配置流和国际化支持。通过使用脚手架脚本,您可以更轻松地创建自定义集成,并将其集成到Home Assistant中,让您的智能家居系统更加强大和灵活。祝您在创建自定义集成时取得成功!