Adapt xiaomi_miio to set via_device_id in DeviceInfo (#177857)

This commit is contained in:
Erik Montnemery
2026-08-01 18:49:27 +02:00
committed by GitHub
parent cbe14fc1dd
commit 2ec59dedfb
2 changed files with 49 additions and 1 deletions
@@ -176,7 +176,11 @@ class XiaomiGatewayDevice(CoordinatorEntity[GatewayDeviceCoordinator], Entity):
assert self._entry.unique_id is not None
return DeviceInfo(
identifiers={(DOMAIN, self._sub_device.sid)},
via_device=(DOMAIN, self._entry.unique_id),
via_device_id=dr.async_get_device_id_by_identifier(
self.hass,
(DOMAIN, self._entry.unique_id),
config_entry_id=self._entry.entry_id,
),
manufacturer="Xiaomi",
name=self._sub_device.name,
model=self._sub_device.model,
@@ -0,0 +1,44 @@
"""The tests for the xiaomi_miio entity base classes."""
from unittest.mock import Mock
from homeassistant.components.xiaomi_miio.const import DOMAIN
from homeassistant.components.xiaomi_miio.coordinator import GatewayDeviceCoordinator
from homeassistant.components.xiaomi_miio.entity import XiaomiGatewayDevice
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from . import TEST_MAC
from tests.common import MockConfigEntry
async def test_gateway_sub_device_via_device_id(
hass: HomeAssistant, device_registry: dr.DeviceRegistry
) -> None:
"""Test a gateway sub device links to the gateway device via via_device_id."""
config_entry = MockConfigEntry(domain=DOMAIN, unique_id=TEST_MAC)
config_entry.add_to_hass(hass)
gateway_device = device_registry.async_get_or_create(
config_entry_id=config_entry.entry_id,
identifiers={(DOMAIN, TEST_MAC)},
manufacturer="Xiaomi",
name="Test Gateway",
)
sub_device = Mock(
sid="158d0001d7c95a",
model="lumi.sensor_ht",
firmware_version="1.2",
zigbee_model="lumi.sensor_ht.v1",
)
sub_device.name = "Sub Device"
coordinator = GatewayDeviceCoordinator(hass, config_entry, sub_device)
entity = XiaomiGatewayDevice(coordinator)
entity.hass = hass
device_info = entity.device_info
assert device_info["via_device_id"] == gateway_device.id