选项流程
通过配置项进行配置的集成可以向用户展示选项,以允许调整集成的行为,例如应集成哪些设备或位置。
配置项选项使用数据流入口框架,允许用户更新配置项的选项。想要支持配置项选项的组件需要定义一个选项流程处理程序。
选项支持
为了使集成支持选项,其配置流程处理程序中需要有一个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集成中实现选项流程功能提供了必要的指导。