Skip to main content

集成系统健康

系统健康平台允许集成提供信息,帮助用户了解集成的状态。这可以包括端点的可用性、集成当前连接的服务器、剩余的请求配额等详细信息。

用户可以通过转到 设置 > 维修,然后在三个点的菜单中选择 系统信息 来查找汇总的系统健康信息。

实现系统健康平台

在集成中添加一个 system_health.py 文件,并实现 async_register 方法,以注册信息回调:

"""为系统健康提供信息。"""

from homeassistant.components import system_health
from homeassistant.core import HomeAssistant, callback

@callback
def async_register(hass: HomeAssistant, register: system_health.SystemHealthRegistration) -> None:
"""注册系统健康回调。"""
register.async_register_info(system_health_info)

信息回调应返回一个字典,其值可以是任何类型,包括协程。如果字典条目设置了协程,前端将显示一个等待指示器,并在协程完成并提供结果后自动更新。

async def system_health_info(hass: HomeAssistant) -> dict[str, Any]:
"""获取信息页面的信息。"""
config_entry: ExampleConfigEntry = hass.config_entries.async_entries(DOMAIN)[0]
quota_info = await config_entry.runtime_data.async_get_quota_info()

return {
"consumed_requests": quota_info.consumed_requests,
"remaining_requests": quota_info.requests_remaining,
# 检查 URL 可能需要一些时间,因此在信息字典中设置协程
"can_reach_server": system_health.async_check_can_reach_url(hass, ENDPOINT),
}
tip

system_health 组件提供了 async_check_can_reach_url 辅助方法,可以轻松实现检查 URL 可用性。

通过使用 strings.json 文件中的 system_health 部分翻译信息字典中的每个键,以提供良好的描述:

  "system_health": {
"info": {
"can_reach_server": "可以连接到示例服务器",
"remaining_requests": "剩余允许的请求"
}
}