五 Home Assistant 选项流程

选项流程

通过配置项进行配置的集成可以向用户展示选项,以允许调整集成的行为,例如应集成哪些设备或位置。

配置项选项使用数据流入口框架,允许用户更新配置项的选项。想要支持配置项选项的组件需要定义一个选项流程处理程序。

选项支持

为了使集成支持选项,其配置流程处理程序中需要有一个async_get_options_flow方法。调用它将返回组件选项流程处理程序的一个实例。

@staticmethod
@callback
def async_get_options_flow(
config_entry: config_entries.ConfigEntry,
) -> config_entries.OptionsFlow:
"""创建选项流程。"""
return OptionsFlowHandler(config_entry)
流程处理程序

流程处理程序的工作方式与配置流程处理程序类似,不同之处在于流程的第一步始终是async_step_init。

class OptionsFlowHandler(config_entries.OptionsFlow):
def __init__(self, config_entry: config_entries.ConfigEntry) -> None:
"""初始化选项流程。"""
self.config_entry = config_entry

async def async_step_init(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""管理选项。"""
if user_input is not None:
return self.async_create_entry(title="", data=user_input)
return self.async_show_form(
step_id="init",
data_schema=vol.Schema(
{
vol.Required(
"show_things",
default=self.config_entry.options.get("show_things"),
): bool
}
),
)
信号更新

如果集成应根据更新后的选项进行操作,可以向配置项注册一个更新监听器,该监听器将在配置项更新时被调用。在集成的__init__.py中的async_setup_entry函数中添加以下内容来注册监听器。

entry.async_on_unload(entry.add_update_listener(update_listener))

使用上述方法意味着监听器在配置项加载时附加,并在卸载时分离。监听器应该是一个异步函数,其输入与async_setup_entry相同。然后可以从entry.options访问选项。

async def update_listener(hass, entry):
"""处理选项更新。"""

总结

本文主要介绍了Home Assistant中配置项选项流程相关内容,包括集成如何支持选项(通过在配置流程处理程序中定义async_get_options_flow方法)、选项流程处理程序的工作方式(与配置流程处理程序类似但第一步固定为async_step_init)以及如何注册更新监听器来处理选项更新,为开发者在Home Assistant集成中实现选项流程功能提供了必要的指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值