Add matter device serial number (#113878)

This commit is contained in:
Martin Hjelmare 2024-03-20 15:31:48 +01:00 committed by GitHub
parent afa9517716
commit c5f6925948
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 2 deletions

View File

@ -185,10 +185,14 @@ class MatterAdapter:
endpoint,
)
identifiers = {(DOMAIN, f"{ID_TYPE_DEVICE_ID}_{node_device_id}")}
serial_number: str | None = None
# if available, we also add the serialnumber as identifier
if basic_info.serialNumber and "test" not in basic_info.serialNumber.lower():
if (
basic_info_serial_number := basic_info.serialNumber
) and "test" not in basic_info_serial_number.lower():
# prefix identifier with 'serial_' to be able to filter it
identifiers.add((DOMAIN, f"{ID_TYPE_SERIAL}_{basic_info.serialNumber}"))
identifiers.add((DOMAIN, f"{ID_TYPE_SERIAL}_{basic_info_serial_number}"))
serial_number = basic_info_serial_number
model = (
get_clean_name(basic_info.productName) or device_type.__name__
@ -203,6 +207,7 @@ class MatterAdapter:
sw_version=basic_info.softwareVersionString,
manufacturer=basic_info.vendorName or endpoint.node.device_info.vendorName,
model=model,
serial_number=serial_number,
via_device=(DOMAIN, bridge_device_id) if bridge_device_id else None,
)

View File

@ -56,6 +56,7 @@ async def test_device_registry_single_node_device(
assert entry.model == "Mock Light"
assert entry.hw_version == "v1.0"
assert entry.sw_version == "v1.0"
assert entry.serial_number == "12345678"
# This tests needs to be adjusted to remove lingering tasks
@ -84,6 +85,7 @@ async def test_device_registry_single_node_device_alt(
# test serial id NOT present as additional identifier
assert (DOMAIN, "serial_TEST_SN") not in entry.identifiers
assert entry.serial_number is None
@pytest.mark.skip("Waiting for a new test fixture")