mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 04:37:06 +00:00
Add diagnostics to Synology DSM integration (#64480)
This commit is contained in:
parent
c72c39e9a1
commit
443f50cde6
@ -1098,6 +1098,7 @@ omit =
|
||||
homeassistant/components/synology_dsm/__init__.py
|
||||
homeassistant/components/synology_dsm/binary_sensor.py
|
||||
homeassistant/components/synology_dsm/camera.py
|
||||
homeassistant/components/synology_dsm/diagnostics.py
|
||||
homeassistant/components/synology_dsm/sensor.py
|
||||
homeassistant/components/synology_dsm/switch.py
|
||||
homeassistant/components/synology_srm/device_tracker.py
|
||||
|
98
homeassistant/components/synology_dsm/diagnostics.py
Normal file
98
homeassistant/components/synology_dsm/diagnostics.py
Normal file
@ -0,0 +1,98 @@
|
||||
"""Diagnostics support for Synology DSM."""
|
||||
from __future__ import annotations
|
||||
|
||||
from synology_dsm.api.surveillance_station.camera import SynoCamera
|
||||
|
||||
from homeassistant.components.diagnostics import async_redact_data
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from . import SynoApi
|
||||
from .const import CONF_DEVICE_TOKEN, DOMAIN, SYNO_API, SYSTEM_LOADED
|
||||
|
||||
TO_REDACT = {CONF_USERNAME, CONF_PASSWORD, CONF_DEVICE_TOKEN}
|
||||
|
||||
|
||||
async def async_get_config_entry_diagnostics(
|
||||
hass: HomeAssistant, entry: ConfigEntry
|
||||
) -> dict:
|
||||
"""Return diagnostics for a config entry."""
|
||||
data: dict = hass.data[DOMAIN][entry.unique_id]
|
||||
syno_api: SynoApi = data[SYNO_API]
|
||||
dsm_info = syno_api.dsm.information
|
||||
|
||||
diag_data = {
|
||||
"entry": async_redact_data(entry.as_dict(), TO_REDACT),
|
||||
"device_info": {
|
||||
"model": dsm_info.model,
|
||||
"version": dsm_info.version_string,
|
||||
"ram": dsm_info.ram,
|
||||
"uptime": dsm_info.uptime,
|
||||
"temperature": dsm_info.temperature,
|
||||
},
|
||||
"network": {"interfaces": {}},
|
||||
"storage": {"disks": {}, "volumes": {}},
|
||||
"surveillance_station": {"cameras": {}},
|
||||
"upgrade": {},
|
||||
"utilisation": {},
|
||||
"is_system_loaded": data[SYSTEM_LOADED],
|
||||
"api_details": {
|
||||
"fetching_entities": syno_api._fetching_entities, # pylint: disable=protected-access
|
||||
},
|
||||
}
|
||||
|
||||
if syno_api.network is not None:
|
||||
intf: dict
|
||||
for intf in syno_api.network.interfaces:
|
||||
diag_data["network"]["interfaces"][intf["id"]] = {
|
||||
"type": intf["type"],
|
||||
"ip": intf["ip"],
|
||||
}
|
||||
|
||||
if syno_api.storage is not None:
|
||||
disk: dict
|
||||
for disk in syno_api.storage.disks:
|
||||
diag_data["storage"]["disks"][disk["id"]] = {
|
||||
"name": disk["name"],
|
||||
"vendor": disk["vendor"],
|
||||
"model": disk["model"],
|
||||
"device": disk["device"],
|
||||
"temp": disk["temp"],
|
||||
"size_total": disk["size_total"],
|
||||
}
|
||||
|
||||
volume: dict
|
||||
for volume in syno_api.storage.volumes:
|
||||
diag_data["storage"]["volumes"][volume["id"]] = {
|
||||
"name": volume["fs_type"],
|
||||
"size": volume["size"],
|
||||
}
|
||||
|
||||
if syno_api.surveillance_station is not None:
|
||||
camera: SynoCamera
|
||||
for camera in syno_api.surveillance_station.get_all_cameras():
|
||||
diag_data["surveillance_station"]["cameras"][camera.id] = {
|
||||
"name": camera.name,
|
||||
"is_enabled": camera.is_enabled,
|
||||
"is_motion_detection_enabled": camera.is_motion_detection_enabled,
|
||||
"model": camera.model,
|
||||
"resolution": camera.resolution,
|
||||
}
|
||||
|
||||
if syno_api.upgrade is not None:
|
||||
diag_data["upgrade"] = {
|
||||
"update_available": syno_api.upgrade.update_available,
|
||||
"available_version": syno_api.upgrade.available_version,
|
||||
"reboot_needed": syno_api.upgrade.reboot_needed,
|
||||
"service_restarts": syno_api.upgrade.service_restarts,
|
||||
}
|
||||
|
||||
if syno_api.utilisation is not None:
|
||||
diag_data["utilisation"] = {
|
||||
"cpu": syno_api.utilisation.cpu,
|
||||
"memory": syno_api.utilisation.memory,
|
||||
"network": syno_api.utilisation.network,
|
||||
}
|
||||
|
||||
return diag_data
|
Loading…
x
Reference in New Issue
Block a user