mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Don't bind all clusters unconditionally (#49793)
This commit is contained in:
parent
575b8340fc
commit
345873f94f
@ -88,6 +88,7 @@ class ZigbeeChannel(LogMixin):
|
|||||||
"""Base channel for a Zigbee cluster."""
|
"""Base channel for a Zigbee cluster."""
|
||||||
|
|
||||||
REPORT_CONFIG = ()
|
REPORT_CONFIG = ()
|
||||||
|
BIND: bool = True
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, cluster: zha_typing.ZigpyClusterType, ch_pool: zha_typing.ChannelPoolType
|
self, cluster: zha_typing.ZigpyClusterType, ch_pool: zha_typing.ChannelPoolType
|
||||||
@ -247,6 +248,7 @@ class ZigbeeChannel(LogMixin):
|
|||||||
async def async_configure(self) -> None:
|
async def async_configure(self) -> None:
|
||||||
"""Set cluster binding and attribute reporting."""
|
"""Set cluster binding and attribute reporting."""
|
||||||
if not self._ch_pool.skip_configuration:
|
if not self._ch_pool.skip_configuration:
|
||||||
|
if self.BIND:
|
||||||
await self.bind()
|
await self.bind()
|
||||||
if self.cluster.is_server:
|
if self.cluster.is_server:
|
||||||
await self.configure_reporting()
|
await self.configure_reporting()
|
||||||
|
@ -138,6 +138,7 @@ class BasicChannel(ZigbeeChannel):
|
|||||||
|
|
||||||
UNKNOWN = 0
|
UNKNOWN = 0
|
||||||
BATTERY = 3
|
BATTERY = 3
|
||||||
|
BIND: bool = False
|
||||||
|
|
||||||
POWER_SOURCES = {
|
POWER_SOURCES = {
|
||||||
UNKNOWN: "Unknown",
|
UNKNOWN: "Unknown",
|
||||||
@ -185,16 +186,22 @@ class DeviceTemperature(ZigbeeChannel):
|
|||||||
class GreenPowerProxy(ZigbeeChannel):
|
class GreenPowerProxy(ZigbeeChannel):
|
||||||
"""Green Power Proxy channel."""
|
"""Green Power Proxy channel."""
|
||||||
|
|
||||||
|
BIND: bool = False
|
||||||
|
|
||||||
|
|
||||||
@registries.ZIGBEE_CHANNEL_REGISTRY.register(general.Groups.cluster_id)
|
@registries.ZIGBEE_CHANNEL_REGISTRY.register(general.Groups.cluster_id)
|
||||||
class Groups(ZigbeeChannel):
|
class Groups(ZigbeeChannel):
|
||||||
"""Groups channel."""
|
"""Groups channel."""
|
||||||
|
|
||||||
|
BIND: bool = False
|
||||||
|
|
||||||
|
|
||||||
@registries.ZIGBEE_CHANNEL_REGISTRY.register(general.Identify.cluster_id)
|
@registries.ZIGBEE_CHANNEL_REGISTRY.register(general.Identify.cluster_id)
|
||||||
class Identify(ZigbeeChannel):
|
class Identify(ZigbeeChannel):
|
||||||
"""Identify channel."""
|
"""Identify channel."""
|
||||||
|
|
||||||
|
BIND: bool = False
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def cluster_command(self, tsn, command_id, args):
|
def cluster_command(self, tsn, command_id, args):
|
||||||
"""Handle commands received to this cluster."""
|
"""Handle commands received to this cluster."""
|
||||||
@ -368,6 +375,8 @@ class OnOffConfiguration(ZigbeeChannel):
|
|||||||
class Ota(ZigbeeChannel):
|
class Ota(ZigbeeChannel):
|
||||||
"""OTA Channel."""
|
"""OTA Channel."""
|
||||||
|
|
||||||
|
BIND: bool = False
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def cluster_command(
|
def cluster_command(
|
||||||
self, tsn: int, command_id: int, args: list[Any] | None
|
self, tsn: int, command_id: int, args: list[Any] | None
|
||||||
|
@ -13,6 +13,8 @@ from .base import ChannelStatus, ZigbeeChannel
|
|||||||
class LightLink(ZigbeeChannel):
|
class LightLink(ZigbeeChannel):
|
||||||
"""Lightlink channel."""
|
"""Lightlink channel."""
|
||||||
|
|
||||||
|
BIND: bool = False
|
||||||
|
|
||||||
async def async_configure(self) -> None:
|
async def async_configure(self) -> None:
|
||||||
"""Add Coordinator to LightLink group ."""
|
"""Add Coordinator to LightLink group ."""
|
||||||
|
|
||||||
|
@ -97,10 +97,10 @@ async def poll_control_device(zha_device_restored, zigpy_device_mock):
|
|||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"cluster_id, bind_count, attrs",
|
"cluster_id, bind_count, attrs",
|
||||||
[
|
[
|
||||||
(0x0000, 1, {}),
|
(0x0000, 0, {}),
|
||||||
(0x0001, 1, {"battery_voltage", "battery_percentage_remaining"}),
|
(0x0001, 1, {"battery_voltage", "battery_percentage_remaining"}),
|
||||||
(0x0003, 1, {}),
|
(0x0003, 0, {}),
|
||||||
(0x0004, 1, {}),
|
(0x0004, 0, {}),
|
||||||
(0x0005, 1, {}),
|
(0x0005, 1, {}),
|
||||||
(0x0006, 1, {"on_off"}),
|
(0x0006, 1, {"on_off"}),
|
||||||
(0x0007, 1, {}),
|
(0x0007, 1, {}),
|
||||||
@ -117,11 +117,11 @@ async def poll_control_device(zha_device_restored, zigpy_device_mock):
|
|||||||
(0x0014, 1, {"present_value"}),
|
(0x0014, 1, {"present_value"}),
|
||||||
(0x0015, 1, {}),
|
(0x0015, 1, {}),
|
||||||
(0x0016, 1, {}),
|
(0x0016, 1, {}),
|
||||||
(0x0019, 1, {}),
|
(0x0019, 0, {}),
|
||||||
(0x001A, 1, {}),
|
(0x001A, 1, {}),
|
||||||
(0x001B, 1, {}),
|
(0x001B, 1, {}),
|
||||||
(0x0020, 1, {}),
|
(0x0020, 1, {}),
|
||||||
(0x0021, 1, {}),
|
(0x0021, 0, {}),
|
||||||
(0x0101, 1, {"lock_state"}),
|
(0x0101, 1, {"lock_state"}),
|
||||||
(0x0202, 1, {"fan_mode"}),
|
(0x0202, 1, {"fan_mode"}),
|
||||||
(0x0300, 1, {"current_x", "current_y", "color_temperature"}),
|
(0x0300, 1, {"current_x", "current_y", "color_temperature"}),
|
||||||
@ -164,10 +164,10 @@ async def test_in_channel_config(
|
|||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"cluster_id, bind_count",
|
"cluster_id, bind_count",
|
||||||
[
|
[
|
||||||
(0x0000, 1),
|
(0x0000, 0),
|
||||||
(0x0001, 1),
|
(0x0001, 1),
|
||||||
(0x0003, 1),
|
(0x0003, 0),
|
||||||
(0x0004, 1),
|
(0x0004, 0),
|
||||||
(0x0005, 1),
|
(0x0005, 1),
|
||||||
(0x0006, 1),
|
(0x0006, 1),
|
||||||
(0x0007, 1),
|
(0x0007, 1),
|
||||||
@ -175,11 +175,11 @@ async def test_in_channel_config(
|
|||||||
(0x0009, 1),
|
(0x0009, 1),
|
||||||
(0x0015, 1),
|
(0x0015, 1),
|
||||||
(0x0016, 1),
|
(0x0016, 1),
|
||||||
(0x0019, 1),
|
(0x0019, 0),
|
||||||
(0x001A, 1),
|
(0x001A, 1),
|
||||||
(0x001B, 1),
|
(0x001B, 1),
|
||||||
(0x0020, 1),
|
(0x0020, 1),
|
||||||
(0x0021, 1),
|
(0x0021, 0),
|
||||||
(0x0101, 1),
|
(0x0101, 1),
|
||||||
(0x0202, 1),
|
(0x0202, 1),
|
||||||
(0x0300, 1),
|
(0x0300, 1),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user