Refactor ZHA entity matching process (#60063)

* Group multi-matches by channels

* Group multi-matched by explicit groups

* Registryless AnalogInput and PowerConfiguration

* Refactor single cluster sensor registry

* Refactor single cluster cover and lock registry

* Refactor single cluster binary_sensor registry

* Pylint
This commit is contained in:
Alexei Chetroi 2021-12-12 07:52:49 -05:00 committed by GitHub
parent 359affb856
commit 997809c6c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 80 additions and 94 deletions

View file

@ -36,6 +36,7 @@ CLASS_MAPPING = {
}
STRICT_MATCH = functools.partial(ZHA_ENTITIES.strict_match, Platform.BINARY_SENSOR)
MULTI_MATCH = functools.partial(ZHA_ENTITIES.multipass_match, Platform.BINARY_SENSOR)
async def async_setup_entry(
@ -103,7 +104,7 @@ class BinarySensor(ZhaEntity, BinarySensorEntity):
self._state = attr_value
@STRICT_MATCH(channel_names=CHANNEL_ACCELEROMETER)
@MULTI_MATCH(channel_names=CHANNEL_ACCELEROMETER)
class Accelerometer(BinarySensor):
"""ZHA BinarySensor."""
@ -111,7 +112,7 @@ class Accelerometer(BinarySensor):
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.MOVING
@STRICT_MATCH(channel_names=CHANNEL_OCCUPANCY)
@MULTI_MATCH(channel_names=CHANNEL_OCCUPANCY)
class Occupancy(BinarySensor):
"""ZHA BinarySensor."""
@ -127,7 +128,7 @@ class Opening(BinarySensor):
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.OPENING
@STRICT_MATCH(channel_names=CHANNEL_BINARY_INPUT)
@MULTI_MATCH(channel_names=CHANNEL_BINARY_INPUT)
class BinaryInput(BinarySensor):
"""ZHA BinarySensor."""
@ -153,7 +154,7 @@ class Motion(BinarySensor):
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.MOTION
@STRICT_MATCH(channel_names=CHANNEL_ZONE)
@MULTI_MATCH(channel_names=CHANNEL_ZONE)
class IASZone(BinarySensor):
"""ZHA IAS BinarySensor."""