diff --git a/homeassistant/components/wemo/wemo_device.py b/homeassistant/components/wemo/wemo_device.py index b7138cb0a94..267ea84e308 100644 --- a/homeassistant/components/wemo/wemo_device.py +++ b/homeassistant/components/wemo/wemo_device.py @@ -16,7 +16,10 @@ from homeassistant.const import ( CONF_UNIQUE_ID, ) from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.device_registry import async_get as async_get_device_registry +from homeassistant.helpers.device_registry import ( + CONNECTION_UPNP, + async_get as async_get_device_registry, +) from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed @@ -123,10 +126,12 @@ class DeviceCoordinator(DataUpdateCoordinator): def _device_info(wemo: WeMoDevice) -> DeviceInfo: return DeviceInfo( + connections={(CONNECTION_UPNP, wemo.udn)}, identifiers={(DOMAIN, wemo.serialnumber)}, manufacturer="Belkin", model=wemo.model_name, name=wemo.name, + sw_version=wemo.firmware_version, ) diff --git a/tests/components/wemo/conftest.py b/tests/components/wemo/conftest.py index 13ec0cb2337..cf974f523a8 100644 --- a/tests/components/wemo/conftest.py +++ b/tests/components/wemo/conftest.py @@ -14,6 +14,7 @@ MOCK_HOST = "127.0.0.1" MOCK_PORT = 50000 MOCK_NAME = "WemoDeviceName" MOCK_SERIAL_NUMBER = "WemoSerialNumber" +MOCK_FIRMWARE_VERSION = "WeMo_WW_2.00.XXXXX.PVT-OWRT" @pytest.fixture(name="pywemo_model") @@ -58,6 +59,8 @@ def pywemo_device_fixture(pywemo_registry, pywemo_model): device.name = MOCK_NAME device.serialnumber = MOCK_SERIAL_NUMBER device.model_name = pywemo_model.replace("LongPress", "") + device.udn = f"uuid:{device.model_name}-1_0-{device.serialnumber}" + device.firmware_version = MOCK_FIRMWARE_VERSION device.get_state.return_value = 0 # Default to Off device.supports_long_press.return_value = cls.supports_long_press() diff --git a/tests/components/wemo/test_init.py b/tests/components/wemo/test_init.py index f34e9bd0471..6cd415792b5 100644 --- a/tests/components/wemo/test_init.py +++ b/tests/components/wemo/test_init.py @@ -10,7 +10,13 @@ from homeassistant.helpers import entity_registry as er from homeassistant.setup import async_setup_component from homeassistant.util import dt -from .conftest import MOCK_HOST, MOCK_NAME, MOCK_PORT, MOCK_SERIAL_NUMBER +from .conftest import ( + MOCK_FIRMWARE_VERSION, + MOCK_HOST, + MOCK_NAME, + MOCK_PORT, + MOCK_SERIAL_NUMBER, +) from tests.common import async_fire_time_changed @@ -109,6 +115,8 @@ async def test_discovery(hass, pywemo_registry): device.name = f"{MOCK_NAME}_{counter}" device.serialnumber = f"{MOCK_SERIAL_NUMBER}_{counter}" device.model_name = "Motion" + device.udn = f"uuid:{device.model_name}-1_0-{device.serialnumber}" + device.firmware_version = MOCK_FIRMWARE_VERSION device.get_state.return_value = 0 # Default to Off device.supports_long_press.return_value = False return device diff --git a/tests/components/wemo/test_wemo_device.py b/tests/components/wemo/test_wemo_device.py index 9ef9e6b5685..9bd3367aeee 100644 --- a/tests/components/wemo/test_wemo_device.py +++ b/tests/components/wemo/test_wemo_device.py @@ -17,7 +17,7 @@ from homeassistant.helpers.update_coordinator import UpdateFailed from homeassistant.setup import async_setup_component from homeassistant.util.dt import utcnow -from .conftest import MOCK_HOST +from .conftest import MOCK_FIRMWARE_VERSION, MOCK_HOST, MOCK_SERIAL_NUMBER from tests.common import async_fire_time_changed @@ -154,6 +154,20 @@ async def test_async_update_data_subscribed( pywemo_device.get_state.assert_not_called() +async def test_device_info(hass, wemo_entity): + """Verify the DeviceInfo data is set properly.""" + dr = device_registry.async_get(hass) + device_entries = list(dr.devices.values()) + + assert len(device_entries) == 1 + assert device_entries[0].connections == { + ("upnp", f"uuid:LightSwitch-1_0-{MOCK_SERIAL_NUMBER}") + } + assert device_entries[0].manufacturer == "Belkin" + assert device_entries[0].model == "LightSwitch" + assert device_entries[0].sw_version == MOCK_FIRMWARE_VERSION + + class TestInsight: """Tests specific to the WeMo Insight device."""