mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 23:27:37 +00:00
Add device diagnostics support to Tuya (#64537)
This commit is contained in:
parent
92e0dc577e
commit
76229bc188
@ -11,6 +11,7 @@ from homeassistant.components.diagnostics import REDACTED
|
|||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||||
|
from homeassistant.helpers.device_registry import DeviceEntry
|
||||||
from homeassistant.util import dt as dt_util
|
from homeassistant.util import dt as dt_util
|
||||||
|
|
||||||
from . import HomeAssistantTuyaData
|
from . import HomeAssistantTuyaData
|
||||||
@ -26,6 +27,23 @@ from .const import (
|
|||||||
|
|
||||||
async def async_get_config_entry_diagnostics(
|
async def async_get_config_entry_diagnostics(
|
||||||
hass: HomeAssistant, entry: ConfigEntry
|
hass: HomeAssistant, entry: ConfigEntry
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
"""Return diagnostics for a config entry."""
|
||||||
|
return _async_get_diagnostics(hass, entry)
|
||||||
|
|
||||||
|
|
||||||
|
async def async_get_device_diagnostics(
|
||||||
|
hass: HomeAssistant, entry: ConfigEntry, device: DeviceEntry
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
"""Return diagnostics for a device entry."""
|
||||||
|
return _async_get_diagnostics(hass, entry, device)
|
||||||
|
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def _async_get_diagnostics(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
entry: ConfigEntry,
|
||||||
|
device: DeviceEntry | None = None,
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
"""Return diagnostics for a config entry."""
|
"""Return diagnostics for a config entry."""
|
||||||
hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id]
|
hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id]
|
||||||
@ -34,7 +52,7 @@ async def async_get_config_entry_diagnostics(
|
|||||||
if hass_data.home_manager.mq.client:
|
if hass_data.home_manager.mq.client:
|
||||||
mqtt_connected = hass_data.home_manager.mq.client.is_connected()
|
mqtt_connected = hass_data.home_manager.mq.client.is_connected()
|
||||||
|
|
||||||
return {
|
data = {
|
||||||
"endpoint": entry.data[CONF_ENDPOINT],
|
"endpoint": entry.data[CONF_ENDPOINT],
|
||||||
"auth_type": entry.data[CONF_AUTH_TYPE],
|
"auth_type": entry.data[CONF_AUTH_TYPE],
|
||||||
"country_code": entry.data[CONF_COUNTRY_CODE],
|
"country_code": entry.data[CONF_COUNTRY_CODE],
|
||||||
@ -42,12 +60,23 @@ async def async_get_config_entry_diagnostics(
|
|||||||
"mqtt_connected": mqtt_connected,
|
"mqtt_connected": mqtt_connected,
|
||||||
"disabled_by": entry.disabled_by,
|
"disabled_by": entry.disabled_by,
|
||||||
"disabled_polling": entry.pref_disable_polling,
|
"disabled_polling": entry.pref_disable_polling,
|
||||||
"devices": [
|
|
||||||
_async_device_as_dict(hass, device)
|
|
||||||
for device in hass_data.device_manager.device_map.values()
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if device:
|
||||||
|
tuya_device_id = next(iter(device.identifiers))[1]
|
||||||
|
data |= _async_device_as_dict(
|
||||||
|
hass, hass_data.device_manager.device_map[tuya_device_id]
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
data.update(
|
||||||
|
devices=[
|
||||||
|
_async_device_as_dict(hass, device)
|
||||||
|
for device in hass_data.device_manager.device_map.values()
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_device_as_dict(hass: HomeAssistant, device: TuyaDevice) -> dict[str, Any]:
|
def _async_device_as_dict(hass: HomeAssistant, device: TuyaDevice) -> dict[str, Any]:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user