41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
"""Provide info to system health."""
|
|
from homeassistant.components import system_health
|
|
from homeassistant.core import HomeAssistant, callback
|
|
|
|
from .core.utils import async_get_manifest
|
|
from .core.xiaomi_cloud import MiotCloud
|
|
|
|
|
|
@callback
|
|
def async_register(hass: HomeAssistant, register: system_health.SystemHealthRegistration) -> None:
|
|
"""Register system health callbacks."""
|
|
register.async_register_info(system_health_info, '/config/integrations')
|
|
|
|
|
|
async def system_health_info(hass):
|
|
"""Get info for the info page."""
|
|
mic = None
|
|
uas = {}
|
|
uds = {}
|
|
all_devices = {}
|
|
for mic in MiotCloud.all_clouds(hass):
|
|
uas[mic.user_id] = mic
|
|
uds[mic.unique_id] = await mic.async_get_devices_by_key('did') or {}
|
|
all_devices.update(uds[mic.unique_id])
|
|
|
|
api = mic.get_api_url('') if mic else 'https://api.io.mi.com'
|
|
api_spec = 'https://miot-spec.org/miot-spec-v2/spec/services'
|
|
|
|
version = await async_get_manifest(hass, 'version', 'unknown')
|
|
data = {
|
|
'component_version': version,
|
|
'can_reach_server': system_health.async_check_can_reach_url(hass, api),
|
|
'can_reach_spec': system_health.async_check_can_reach_url(
|
|
hass, api_spec, 'https://home.miot-spec.com/?cant-reach',
|
|
),
|
|
'logged_accounts': len(uas),
|
|
'total_devices': len(all_devices),
|
|
}
|
|
|
|
return data
|