From cb571d86be091a05483f885f6216bce6319c8a37 Mon Sep 17 00:00:00 2001 From: jjlawren Date: Tue, 25 Jan 2022 21:35:04 -0600 Subject: [PATCH] Add per-device diagnostics to Sonos (#64912) --- homeassistant/components/sonos/diagnostics.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/sonos/diagnostics.py b/homeassistant/components/sonos/diagnostics.py index 3f1806d0877..007348a66bb 100644 --- a/homeassistant/components/sonos/diagnostics.py +++ b/homeassistant/components/sonos/diagnostics.py @@ -6,8 +6,9 @@ from typing import Any from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant +from homeassistant.helpers.device_registry import DeviceEntry -from .const import DATA_SONOS +from .const import DATA_SONOS, DOMAIN from .speaker import SonosSpeaker MEDIA_DIAGNOSTIC_ATTRIBUTES = ( @@ -63,6 +64,23 @@ async def async_get_config_entry_diagnostics( return payload +async def async_get_device_diagnostics( + hass: HomeAssistant, config_entry: ConfigEntry, device: DeviceEntry +) -> dict[str, Any] | None: + """Return diagnostics for a device.""" + uid = next( + (identifier[1] for identifier in device.identifiers if identifier[0] == DOMAIN), + None, + ) + if uid is None: + return None + + if (speaker := hass.data[DATA_SONOS].discovered.get(uid)) is None: + return None + + return await async_generate_speaker_info(hass, speaker) + + async def async_generate_media_info( hass: HomeAssistant, speaker: SonosSpeaker ) -> dict[str, Any]: