Clean up matter adapter (#84144)
This commit is contained in:
parent
d6158c0fcc
commit
f29024795b
3 changed files with 22 additions and 26 deletions
|
@ -728,7 +728,6 @@ omit =
|
|||
homeassistant/components/mastodon/notify.py
|
||||
homeassistant/components/matrix/*
|
||||
homeassistant/components/matter/__init__.py
|
||||
homeassistant/components/matter/adapter.py
|
||||
homeassistant/components/matter/entity.py
|
||||
homeassistant/components/meater/__init__.py
|
||||
homeassistant/components/meater/const.py
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
"""Matter to Home Assistant adapter."""
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from chip.clusters import Objects as all_clusters
|
||||
|
@ -14,7 +12,7 @@ from homeassistant.core import HomeAssistant
|
|||
from homeassistant.helpers import device_registry as dr
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DOMAIN
|
||||
from .const import DOMAIN, LOGGER
|
||||
from .device_platform import DEVICE_PLATFORM
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
@ -35,27 +33,22 @@ class MatterAdapter:
|
|||
self.matter_client = matter_client
|
||||
self.hass = hass
|
||||
self.config_entry = config_entry
|
||||
self.logger = logging.getLogger(__name__)
|
||||
self.platform_handlers: dict[Platform, AddEntitiesCallback] = {}
|
||||
self._platforms_set_up = asyncio.Event()
|
||||
|
||||
def register_platform_handler(
|
||||
self, platform: Platform, add_entities: AddEntitiesCallback
|
||||
) -> None:
|
||||
"""Register a platform handler."""
|
||||
self.platform_handlers[platform] = add_entities
|
||||
if len(self.platform_handlers) == len(DEVICE_PLATFORM):
|
||||
self._platforms_set_up.set()
|
||||
|
||||
async def setup_nodes(self) -> None:
|
||||
"""Set up all existing nodes."""
|
||||
await self._platforms_set_up.wait()
|
||||
for node in await self.matter_client.get_nodes():
|
||||
await self._setup_node(node)
|
||||
self._setup_node(node)
|
||||
|
||||
async def _setup_node(self, node: MatterNode) -> None:
|
||||
def _setup_node(self, node: MatterNode) -> None:
|
||||
"""Set up an node."""
|
||||
self.logger.debug("Setting up entities for node %s", node.node_id)
|
||||
LOGGER.debug("Setting up entities for node %s", node.node_id)
|
||||
|
||||
bridge_unique_id: str | None = None
|
||||
|
||||
|
@ -115,7 +108,7 @@ class MatterAdapter:
|
|||
|
||||
entities = []
|
||||
for entity_description in entity_descriptions:
|
||||
self.logger.debug(
|
||||
LOGGER.debug(
|
||||
"Creating %s entity for %s (%s)",
|
||||
platform,
|
||||
instance.device_type.__name__,
|
||||
|
@ -134,7 +127,7 @@ class MatterAdapter:
|
|||
created = True
|
||||
|
||||
if not created:
|
||||
self.logger.warning(
|
||||
LOGGER.warning(
|
||||
"Found unsupported device %s (%s)",
|
||||
type(instance).__name__,
|
||||
hex(instance.device_type.device_type),
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
"""Test the adapter."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
|
||||
|
@ -11,36 +11,40 @@ from homeassistant.helpers import device_registry as dr
|
|||
|
||||
from .common import setup_integration_with_node_fixture
|
||||
|
||||
# TEMP: Tests need to be fixed
|
||||
pytestmark = pytest.mark.skip("all tests still WIP")
|
||||
|
||||
|
||||
async def test_device_registry_single_node_device(
|
||||
hass: HomeAssistant, hass_storage: dict[str, Any]
|
||||
hass: HomeAssistant,
|
||||
matter_client: MagicMock,
|
||||
) -> None:
|
||||
"""Test bridge devices are set up correctly with via_device."""
|
||||
await setup_integration_with_node_fixture(
|
||||
hass, hass_storage, "lighting-example-app"
|
||||
hass,
|
||||
"onoff-light",
|
||||
matter_client,
|
||||
)
|
||||
|
||||
dev_reg = dr.async_get(hass)
|
||||
|
||||
entry = dev_reg.async_get_device({(DOMAIN, "BE8F70AA40DDAE41")})
|
||||
entry = dev_reg.async_get_device({(DOMAIN, "mock-onoff-light")})
|
||||
assert entry is not None
|
||||
|
||||
assert entry.name == "My Cool Light"
|
||||
assert entry.name == "Mock OnOff Light"
|
||||
assert entry.manufacturer == "Nabu Casa"
|
||||
assert entry.model == "M5STAMP Lighting App"
|
||||
assert entry.model == "Mock Light"
|
||||
assert entry.hw_version == "v1.0"
|
||||
assert entry.sw_version == "55ab764bea"
|
||||
assert entry.sw_version == "v1.0"
|
||||
|
||||
|
||||
@pytest.mark.skip("Waiting for a new test fixture")
|
||||
async def test_device_registry_bridge(
|
||||
hass: HomeAssistant, hass_storage: dict[str, Any]
|
||||
hass: HomeAssistant,
|
||||
matter_client: MagicMock,
|
||||
) -> None:
|
||||
"""Test bridge devices are set up correctly with via_device."""
|
||||
await setup_integration_with_node_fixture(
|
||||
hass, hass_storage, "fake-bridge-two-light"
|
||||
hass,
|
||||
"fake-bridge-two-light",
|
||||
matter_client,
|
||||
)
|
||||
|
||||
dev_reg = dr.async_get(hass)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue