diff --git a/homeassistant/components/hardkernel/hardware.py b/homeassistant/components/hardkernel/hardware.py index ad45e3ac946..47ff5830a84 100644 --- a/homeassistant/components/hardkernel/hardware.py +++ b/homeassistant/components/hardkernel/hardware.py @@ -17,7 +17,7 @@ BOARD_NAMES = { @callback -def async_info(hass: HomeAssistant) -> HardwareInfo: +def async_info(hass: HomeAssistant) -> list[HardwareInfo]: """Return board info.""" if (os_info := get_os_info(hass)) is None: raise HomeAssistantError @@ -27,14 +27,16 @@ def async_info(hass: HomeAssistant) -> HardwareInfo: if not board.startswith("odroid"): raise HomeAssistantError - return HardwareInfo( - board=BoardInfo( - hassio_board_id=board, - manufacturer=DOMAIN, - model=board, - revision=None, - ), - dongles=None, - name=BOARD_NAMES.get(board, f"Unknown hardkernel Odroid model '{board}'"), - url=None, - ) + return [ + HardwareInfo( + board=BoardInfo( + hassio_board_id=board, + manufacturer=DOMAIN, + model=board, + revision=None, + ), + dongle=None, + name=BOARD_NAMES.get(board, f"Unknown hardkernel Odroid model '{board}'"), + url=None, + ) + ] diff --git a/homeassistant/components/hardware/models.py b/homeassistant/components/hardware/models.py index 8f9819a853d..8ce5e7be7f3 100644 --- a/homeassistant/components/hardware/models.py +++ b/homeassistant/components/hardware/models.py @@ -34,7 +34,7 @@ class HardwareInfo: name: str | None board: BoardInfo | None - dongles: list[USBInfo] | None + dongle: USBInfo | None url: str | None @@ -42,5 +42,5 @@ class HardwareProtocol(Protocol): """Define the format of hardware platforms.""" @callback - def async_info(self, hass: HomeAssistant) -> HardwareInfo: + def async_info(self, hass: HomeAssistant) -> list[HardwareInfo]: """Return info.""" diff --git a/homeassistant/components/hardware/websocket_api.py b/homeassistant/components/hardware/websocket_api.py index 388b9597481..df3b8868053 100644 --- a/homeassistant/components/hardware/websocket_api.py +++ b/homeassistant/components/hardware/websocket_api.py @@ -42,6 +42,6 @@ async def ws_info( for platform in hardware_platform.values(): if hasattr(platform, "async_info"): with contextlib.suppress(HomeAssistantError): - hardware_info.append(asdict(platform.async_info(hass))) + hardware_info.extend([asdict(hw) for hw in platform.async_info(hass)]) connection.send_result(msg["id"], {"hardware": hardware_info}) diff --git a/homeassistant/components/homeassistant_sky_connect/hardware.py b/homeassistant/components/homeassistant_sky_connect/hardware.py index 3c1993bfd8b..6eceb746756 100644 --- a/homeassistant/components/homeassistant_sky_connect/hardware.py +++ b/homeassistant/components/homeassistant_sky_connect/hardware.py @@ -10,24 +10,22 @@ DONGLE_NAME = "Home Assistant Sky Connect" @callback -def async_info(hass: HomeAssistant) -> HardwareInfo: +def async_info(hass: HomeAssistant) -> list[HardwareInfo]: """Return board info.""" entries = hass.config_entries.async_entries(DOMAIN) - dongles = [ - USBInfo( - vid=entry.data["vid"], - pid=entry.data["pid"], - serial_number=entry.data["serial_number"], - manufacturer=entry.data["manufacturer"], - description=entry.data["description"], + return [ + HardwareInfo( + board=None, + dongle=USBInfo( + vid=entry.data["vid"], + pid=entry.data["pid"], + serial_number=entry.data["serial_number"], + manufacturer=entry.data["manufacturer"], + description=entry.data["description"], + ), + name=DONGLE_NAME, + url=None, ) for entry in entries ] - - return HardwareInfo( - board=None, - dongles=dongles, - name=DONGLE_NAME, - url=None, - ) diff --git a/homeassistant/components/homeassistant_yellow/hardware.py b/homeassistant/components/homeassistant_yellow/hardware.py index 01aee032a22..ad17eccfe7f 100644 --- a/homeassistant/components/homeassistant_yellow/hardware.py +++ b/homeassistant/components/homeassistant_yellow/hardware.py @@ -12,7 +12,7 @@ MODEL = "yellow" @callback -def async_info(hass: HomeAssistant) -> HardwareInfo: +def async_info(hass: HomeAssistant) -> list[HardwareInfo]: """Return board info.""" if (os_info := get_os_info(hass)) is None: raise HomeAssistantError @@ -22,14 +22,16 @@ def async_info(hass: HomeAssistant) -> HardwareInfo: if not board == "yellow": raise HomeAssistantError - return HardwareInfo( - board=BoardInfo( - hassio_board_id=board, - manufacturer=MANUFACTURER, - model=MODEL, - revision=None, - ), - dongles=None, - name=BOARD_NAME, - url=None, - ) + return [ + HardwareInfo( + board=BoardInfo( + hassio_board_id=board, + manufacturer=MANUFACTURER, + model=MODEL, + revision=None, + ), + dongle=None, + name=BOARD_NAME, + url=None, + ) + ] diff --git a/homeassistant/components/raspberry_pi/hardware.py b/homeassistant/components/raspberry_pi/hardware.py index cd1b56ba789..6433b15adb5 100644 --- a/homeassistant/components/raspberry_pi/hardware.py +++ b/homeassistant/components/raspberry_pi/hardware.py @@ -32,7 +32,7 @@ MODELS = { @callback -def async_info(hass: HomeAssistant) -> HardwareInfo: +def async_info(hass: HomeAssistant) -> list[HardwareInfo]: """Return board info.""" if (os_info := get_os_info(hass)) is None: raise HomeAssistantError @@ -42,14 +42,16 @@ def async_info(hass: HomeAssistant) -> HardwareInfo: if not board.startswith("rpi"): raise HomeAssistantError - return HardwareInfo( - board=BoardInfo( - hassio_board_id=board, - manufacturer=DOMAIN, - model=MODELS.get(board), - revision=None, - ), - dongles=None, - name=BOARD_NAMES.get(board, f"Unknown Raspberry Pi model '{board}'"), - url=None, - ) + return [ + HardwareInfo( + board=BoardInfo( + hassio_board_id=board, + manufacturer=DOMAIN, + model=MODELS.get(board), + revision=None, + ), + dongle=None, + name=BOARD_NAMES.get(board, f"Unknown Raspberry Pi model '{board}'"), + url=None, + ) + ] diff --git a/tests/components/hardkernel/test_hardware.py b/tests/components/hardkernel/test_hardware.py index 5f33cb417f2..33602f92e3f 100644 --- a/tests/components/hardkernel/test_hardware.py +++ b/tests/components/hardkernel/test_hardware.py @@ -48,7 +48,7 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None: "model": "odroid-n2", "revision": None, }, - "dongles": None, + "dongle": None, "name": "Home Assistant Blue / Hardkernel Odroid-N2", "url": None, } diff --git a/tests/components/homeassistant_sky_connect/test_hardware.py b/tests/components/homeassistant_sky_connect/test_hardware.py index f4e48d56a67..6226651133a 100644 --- a/tests/components/homeassistant_sky_connect/test_hardware.py +++ b/tests/components/homeassistant_sky_connect/test_hardware.py @@ -62,24 +62,27 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None: "hardware": [ { "board": None, - "dongles": [ - { - "vid": "bla_vid", - "pid": "bla_pid", - "serial_number": "bla_serial_number", - "manufacturer": "bla_manufacturer", - "description": "bla_description", - }, - { - "vid": "bla_vid_2", - "pid": "bla_pid_2", - "serial_number": "bla_serial_number_2", - "manufacturer": "bla_manufacturer_2", - "description": "bla_description_2", - }, - ], + "dongle": { + "vid": "bla_vid", + "pid": "bla_pid", + "serial_number": "bla_serial_number", + "manufacturer": "bla_manufacturer", + "description": "bla_description", + }, "name": "Home Assistant Sky Connect", "url": None, - } + }, + { + "board": None, + "dongle": { + "vid": "bla_vid_2", + "pid": "bla_pid_2", + "serial_number": "bla_serial_number_2", + "manufacturer": "bla_manufacturer_2", + "description": "bla_description_2", + }, + "name": "Home Assistant Sky Connect", + "url": None, + }, ] } diff --git a/tests/components/homeassistant_yellow/test_hardware.py b/tests/components/homeassistant_yellow/test_hardware.py index 295e44c6ce7..45d6fcabdfe 100644 --- a/tests/components/homeassistant_yellow/test_hardware.py +++ b/tests/components/homeassistant_yellow/test_hardware.py @@ -48,7 +48,7 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None: "model": "yellow", "revision": None, }, - "dongles": None, + "dongle": None, "name": "Home Assistant Yellow", "url": None, } diff --git a/tests/components/raspberry_pi/test_hardware.py b/tests/components/raspberry_pi/test_hardware.py index ad9533e8af5..c36fcbd1642 100644 --- a/tests/components/raspberry_pi/test_hardware.py +++ b/tests/components/raspberry_pi/test_hardware.py @@ -48,7 +48,7 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None: "model": "1", "revision": None, }, - "dongles": None, + "dongle": None, "name": "Raspberry Pi", "url": None, }