mirror of
https://github.com/home-assistant/core.git
synced 2026-09-03 10:05:58 -05:00
Migrate Matter integration to use runtime_data (#168862)
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
"""The Matter integration."""
|
||||
# pylint: disable=hass-use-runtime-data # Uses legacy hass.data[DOMAIN] pattern
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -17,7 +16,7 @@ from matter_server.client.exceptions import (
|
||||
from matter_server.common.errors import MatterError, NodeNotExists
|
||||
|
||||
from homeassistant.components.hassio import AddonError, AddonManager, AddonState
|
||||
from homeassistant.config_entries import ConfigEntry, ConfigEntryState
|
||||
from homeassistant.config_entries import ConfigEntryState
|
||||
from homeassistant.const import CONF_URL, EVENT_HOMEASSISTANT_STOP
|
||||
from homeassistant.core import Event, HomeAssistant, callback
|
||||
from homeassistant.exceptions import ConfigEntryNotReady
|
||||
@@ -36,6 +35,7 @@ from .api import async_register_api
|
||||
from .const import CONF_INTEGRATION_CREATED_ADDON, CONF_USE_ADDON, DOMAIN, LOGGER
|
||||
from .discovery import SUPPORTED_PLATFORMS
|
||||
from .helpers import (
|
||||
MatterConfigEntry,
|
||||
MatterEntryData,
|
||||
get_matter,
|
||||
get_node_from_device_entry,
|
||||
@@ -56,8 +56,7 @@ def get_matter_device_info(
|
||||
hass: HomeAssistant, device_id: str
|
||||
) -> MatterDeviceInfo | None:
|
||||
"""Return Matter device info or None if device does not exist."""
|
||||
# Test hass.data[DOMAIN] to ensure config entry is set up
|
||||
if not hass.data.get(DOMAIN, False) or not (
|
||||
if not hass.config_entries.async_loaded_entries(DOMAIN) or not (
|
||||
node := node_from_ha_device_id(hass, device_id)
|
||||
):
|
||||
return None
|
||||
@@ -75,7 +74,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
return True
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: MatterConfigEntry) -> bool:
|
||||
"""Set up Matter from a config entry."""
|
||||
if use_addon := entry.data.get(CONF_USE_ADDON):
|
||||
await _async_ensure_addon_running(hass, entry)
|
||||
@@ -153,13 +152,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
listen_task.cancel()
|
||||
raise ConfigEntryNotReady("Failed to set default fabric label") from err
|
||||
|
||||
if DOMAIN not in hass.data:
|
||||
hass.data[DOMAIN] = {}
|
||||
|
||||
# create an intermediate layer (adapter) which keeps track of the nodes
|
||||
# and discovery of platform entities from the node attributes
|
||||
matter = MatterAdapter(hass, matter_client, entry)
|
||||
hass.data[DOMAIN][entry.entry_id] = MatterEntryData(matter, listen_task)
|
||||
entry.runtime_data = MatterEntryData(matter, listen_task)
|
||||
|
||||
await hass.config_entries.async_forward_entry_setups(entry, SUPPORTED_PLATFORMS)
|
||||
await matter.setup_nodes()
|
||||
@@ -167,7 +163,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
# If the listen task is already failed, we need to raise ConfigEntryNotReady
|
||||
if listen_task.done() and (listen_error := listen_task.exception()) is not None:
|
||||
await hass.config_entries.async_unload_platforms(entry, SUPPORTED_PLATFORMS)
|
||||
hass.data[DOMAIN].pop(entry.entry_id)
|
||||
try:
|
||||
await matter_client.disconnect()
|
||||
finally:
|
||||
@@ -178,7 +173,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
||||
async def _client_listen(
|
||||
hass: HomeAssistant,
|
||||
entry: ConfigEntry,
|
||||
entry: MatterConfigEntry,
|
||||
matter_client: MatterClient,
|
||||
init_ready: asyncio.Event,
|
||||
) -> None:
|
||||
@@ -200,16 +195,15 @@ async def _client_listen(
|
||||
hass.async_create_task(hass.config_entries.async_reload(entry.entry_id))
|
||||
|
||||
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: MatterConfigEntry) -> bool:
|
||||
"""Unload a config entry."""
|
||||
unload_ok = await hass.config_entries.async_unload_platforms(
|
||||
entry, SUPPORTED_PLATFORMS
|
||||
)
|
||||
|
||||
if unload_ok:
|
||||
matter_entry_data: MatterEntryData = hass.data[DOMAIN].pop(entry.entry_id)
|
||||
matter_entry_data.listen_task.cancel()
|
||||
await matter_entry_data.adapter.matter_client.disconnect()
|
||||
entry.runtime_data.listen_task.cancel()
|
||||
await entry.runtime_data.adapter.matter_client.disconnect()
|
||||
|
||||
if entry.data.get(CONF_USE_ADDON) and entry.disabled_by:
|
||||
addon_manager: AddonManager = get_addon_manager(hass)
|
||||
@@ -223,7 +217,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
return unload_ok
|
||||
|
||||
|
||||
async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||
async def async_remove_entry(hass: HomeAssistant, entry: MatterConfigEntry) -> None:
|
||||
"""Config entry is being removed."""
|
||||
|
||||
if not entry.data.get(CONF_INTEGRATION_CREATED_ADDON):
|
||||
@@ -247,7 +241,7 @@ async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||
|
||||
|
||||
def _remove_via_devices(
|
||||
hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry
|
||||
hass: HomeAssistant, config_entry: MatterConfigEntry, device_entry: dr.DeviceEntry
|
||||
) -> None:
|
||||
"""Remove all via devices associated with a device."""
|
||||
device_registry = dr.async_get(hass)
|
||||
@@ -260,7 +254,7 @@ def _remove_via_devices(
|
||||
|
||||
|
||||
async def async_remove_config_entry_device(
|
||||
hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry
|
||||
hass: HomeAssistant, config_entry: MatterConfigEntry, device_entry: dr.DeviceEntry
|
||||
) -> bool:
|
||||
"""Remove a config entry from a device."""
|
||||
node = get_node_from_device_entry(hass, device_entry)
|
||||
@@ -289,7 +283,9 @@ async def async_remove_config_entry_device(
|
||||
return True
|
||||
|
||||
|
||||
async def _async_ensure_addon_running(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||
async def _async_ensure_addon_running(
|
||||
hass: HomeAssistant, entry: MatterConfigEntry
|
||||
) -> None:
|
||||
"""Ensure that Matter Server add-on is installed and running."""
|
||||
addon_manager = _get_addon_manager(hass)
|
||||
try:
|
||||
|
||||
@@ -8,7 +8,6 @@ from chip.clusters import Objects as clusters
|
||||
from matter_server.client.models.device_types import BridgedNode
|
||||
from matter_server.common.models import EventType, ServerInfoMessage
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
@@ -16,7 +15,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DOMAIN, ID_TYPE_DEVICE_ID, ID_TYPE_SERIAL, LOGGER
|
||||
from .discovery import async_discover_entities
|
||||
from .helpers import get_device_id
|
||||
from .helpers import MatterConfigEntry, get_device_id
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from matter_server.client import MatterClient
|
||||
@@ -38,7 +37,7 @@ class MatterAdapter:
|
||||
self,
|
||||
hass: HomeAssistant,
|
||||
matter_client: MatterClient,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
) -> None:
|
||||
"""Initialize the adapter."""
|
||||
self.matter_client = matter_client
|
||||
|
||||
@@ -15,23 +15,22 @@ from homeassistant.components.binary_sensor import (
|
||||
BinarySensorEntity,
|
||||
BinarySensorEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import EntityCategory, Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter binary sensor from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.BINARY_SENSOR, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -13,23 +13,22 @@ from homeassistant.components.button import (
|
||||
ButtonEntity,
|
||||
ButtonEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import EntityCategory, Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter Button platform."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.BUTTON, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -26,13 +26,12 @@ from homeassistant.components.climate import (
|
||||
HVACAction,
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_TEMPERATURE, Platform, UnitOfTemperature
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
HUMIDITY_SCALING_FACTOR = 100
|
||||
@@ -194,11 +193,11 @@ class ThermostatRunningState(IntEnum):
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter climate platform from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.CLIMATE, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -17,14 +17,13 @@ from homeassistant.components.cover import (
|
||||
CoverEntityDescription,
|
||||
CoverEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .const import LOGGER
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
# The MASK used for extracting bits 0 to 1 of the byte.
|
||||
@@ -54,11 +53,11 @@ class OperationalStatus(IntEnum):
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter Cover from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.COVER, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -9,11 +9,10 @@ from chip.clusters import Objects
|
||||
from matter_server.common.helpers.util import dataclass_to_dict, parse_attribute_path
|
||||
|
||||
from homeassistant.components.diagnostics import REDACTED
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
|
||||
from .helpers import get_matter, get_node_from_device_entry
|
||||
from .helpers import MatterConfigEntry, get_matter, get_node_from_device_entry
|
||||
|
||||
ATTRIBUTES_TO_REDACT = {Objects.BasicInformation.Attributes.Location}
|
||||
|
||||
@@ -41,7 +40,7 @@ def remove_serialization_type(data: dict[str, Any]) -> dict[str, Any]:
|
||||
|
||||
|
||||
async def async_get_config_entry_diagnostics(
|
||||
hass: HomeAssistant, config_entry: ConfigEntry
|
||||
hass: HomeAssistant, config_entry: MatterConfigEntry
|
||||
) -> dict[str, Any]:
|
||||
"""Return diagnostics for a config entry."""
|
||||
matter = get_matter(hass)
|
||||
@@ -54,7 +53,7 @@ async def async_get_config_entry_diagnostics(
|
||||
|
||||
|
||||
async def async_get_device_diagnostics(
|
||||
hass: HomeAssistant, config_entry: ConfigEntry, device: dr.DeviceEntry
|
||||
hass: HomeAssistant, config_entry: MatterConfigEntry, device: dr.DeviceEntry
|
||||
) -> dict[str, Any]:
|
||||
"""Return diagnostics for a device."""
|
||||
matter = get_matter(hass)
|
||||
|
||||
@@ -14,13 +14,12 @@ from homeassistant.components.event import (
|
||||
EventEntity,
|
||||
EventEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
SwitchFeature = clusters.Switch.Bitmaps.Feature
|
||||
@@ -39,11 +38,11 @@ EVENT_TYPES_MAP = {
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter switches from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.EVENT, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -14,13 +14,12 @@ from homeassistant.components.fan import (
|
||||
FanEntityDescription,
|
||||
FanEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
FanControlFeature = clusters.FanControl.Bitmaps.Feature
|
||||
@@ -45,11 +44,11 @@ PRESET_SLEEP_WIND = "sleep_wind"
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter fan from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.FAN, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import asyncio
|
||||
from dataclasses import dataclass
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
@@ -31,16 +32,17 @@ class MatterEntryData:
|
||||
listen_task: asyncio.Task
|
||||
|
||||
|
||||
type MatterConfigEntry = ConfigEntry[MatterEntryData]
|
||||
|
||||
|
||||
@callback
|
||||
def get_matter(hass: HomeAssistant) -> MatterAdapter:
|
||||
"""Return MatterAdapter instance."""
|
||||
# NOTE: This assumes only one Matter connection/fabric can exist.
|
||||
# Shall we support connecting to multiple servers in the client or by
|
||||
# config entries? In case of the config entry we need to fix this.
|
||||
# Uses legacy hass.data[DOMAIN] pattern
|
||||
# pylint: disable-next=hass-use-runtime-data
|
||||
matter_entry_data: MatterEntryData = next(iter(hass.data[DOMAIN].values()))
|
||||
return matter_entry_data.adapter
|
||||
entries: list[MatterConfigEntry] = hass.config_entries.async_loaded_entries(DOMAIN)
|
||||
return entries[0].runtime_data.adapter
|
||||
|
||||
|
||||
def get_operational_instance_id(
|
||||
|
||||
@@ -23,7 +23,6 @@ from homeassistant.components.light import (
|
||||
LightEntityFeature,
|
||||
filter_supported_color_modes,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
@@ -31,7 +30,7 @@ from homeassistant.util import color as color_util
|
||||
|
||||
from .const import LOGGER
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
from .util import (
|
||||
convert_to_hass_hs,
|
||||
@@ -86,11 +85,11 @@ TRANSITION_BLOCKLIST = (
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter Light from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.LIGHT, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ from homeassistant.components.lock import (
|
||||
LockEntityDescription,
|
||||
LockEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_CODE, Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
@@ -34,7 +33,7 @@ from .const import (
|
||||
LOGGER,
|
||||
)
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .lock_helpers import (
|
||||
DoorLockFeature,
|
||||
GetLockCredentialStatusResult,
|
||||
@@ -70,11 +69,11 @@ DOOR_LOCK_OPERATION_SOURCE: dict[int, str] = {
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter lock from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.LOCK, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ from homeassistant.components.number import (
|
||||
NumberEntityDescription,
|
||||
NumberMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
PERCENTAGE,
|
||||
EntityCategory,
|
||||
@@ -30,17 +29,17 @@ from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter Number Input from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.NUMBER, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -11,13 +11,12 @@ from chip.clusters.ClusterObjects import ClusterAttributeDescriptor, ClusterComm
|
||||
from chip.clusters.Types import Nullable
|
||||
|
||||
from homeassistant.components.select import SelectEntity, SelectEntityDescription
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import EntityCategory, Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
DOOR_LOCK_OPERATING_MODE_MAP = {
|
||||
@@ -66,11 +65,11 @@ type SelectCluster = (
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter ModeSelect from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.SELECT, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ from homeassistant.components.sensor import (
|
||||
SensorEntityDescription,
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
@@ -50,7 +49,7 @@ from homeassistant.util import dt as dt_util, slugify
|
||||
|
||||
from .const import CONCENTRATION_BECQUERELS_PER_CUBIC_METER
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
AIR_QUALITY_MAP = {
|
||||
@@ -225,11 +224,11 @@ def matter_epoch_microseconds_to_utc(x: int | None) -> datetime | None:
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter sensors from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.SENSOR, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -15,13 +15,12 @@ from homeassistant.components.switch import (
|
||||
SwitchEntity,
|
||||
SwitchEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import EntityCategory, Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
EVSE_SUPPLY_STATE_MAP = {
|
||||
@@ -34,11 +33,11 @@ EVSE_SUPPLY_STATE_MAP = {
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter switches from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.SWITCH, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ from homeassistant.components.update import (
|
||||
UpdateEntityDescription,
|
||||
UpdateEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import STATE_ON, Platform
|
||||
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
@@ -26,7 +25,7 @@ from homeassistant.helpers.event import async_call_later
|
||||
from homeassistant.helpers.restore_state import ExtraStoredData
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
SCAN_INTERVAL = timedelta(hours=12)
|
||||
@@ -59,11 +58,11 @@ class MatterUpdateExtraStoredData(ExtraStoredData):
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter lock from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.UPDATE, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -17,14 +17,13 @@ from homeassistant.components.vacuum import (
|
||||
VacuumActivity,
|
||||
VacuumEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@@ -55,11 +54,11 @@ class ModeTag(IntEnum):
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter vacuum platform from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.VACUUM, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -13,13 +13,12 @@ from homeassistant.components.valve import (
|
||||
ValveEntityDescription,
|
||||
ValveEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
ValveConfigurationAndControl = clusters.ValveConfigurationAndControl
|
||||
@@ -28,11 +27,11 @@ ValveStateEnum = ValveConfigurationAndControl.Enums.ValveStateEnum
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter valve platform from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.VALVE, async_add_entities)
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ from homeassistant.components.water_heater import (
|
||||
WaterHeaterEntityDescription,
|
||||
WaterHeaterEntityFeature,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
ATTR_TEMPERATURE,
|
||||
PRECISION_WHOLE,
|
||||
@@ -31,7 +30,7 @@ from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .entity import MatterEntity, MatterEntityDescription
|
||||
from .helpers import get_matter
|
||||
from .helpers import MatterConfigEntry
|
||||
from .models import MatterDiscoverySchema
|
||||
|
||||
TEMPERATURE_SCALING_FACTOR = 100
|
||||
@@ -48,11 +47,11 @@ DEFAULT_BOOST_DURATION = 3600 # 1 hour
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
config_entry: MatterConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Matter WaterHeater platform from Config Entry."""
|
||||
matter = get_matter(hass)
|
||||
matter = config_entry.runtime_data.adapter
|
||||
matter.register_platform_handler(Platform.WATER_HEATER, async_add_entities)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user