Remove class argument in favor of class variables (zha) (#102117)

* Drop id_suffix class argument

* Use lowecase attribute
pull/102139/head
Joakim Plate 2023-10-16 23:26:03 +02:00 committed by GitHub
parent f891fb6b41
commit 6d457e808f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 242 additions and 248 deletions

View File

@ -252,29 +252,32 @@ class SinopeLeakStatus(BinarySensor):
"_TZE200_htnnfasr",
},
)
class FrostLock(BinarySensor, id_suffix="frost_lock"):
class FrostLock(BinarySensor):
"""ZHA BinarySensor."""
SENSOR_ATTR = "frost_lock"
_unique_id_suffix = "frost_lock"
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.LOCK
_attr_name: str = "Frost lock"
@MULTI_MATCH(cluster_handler_names="ikea_airpurifier")
class ReplaceFilter(BinarySensor, id_suffix="replace_filter"):
class ReplaceFilter(BinarySensor):
"""ZHA BinarySensor."""
SENSOR_ATTR = "replace_filter"
_unique_id_suffix = "replace_filter"
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PROBLEM
_attr_entity_category: EntityCategory = EntityCategory.DIAGNOSTIC
_attr_name: str = "Replace filter"
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
class AqaraPetFeederErrorDetected(BinarySensor, id_suffix="error_detected"):
class AqaraPetFeederErrorDetected(BinarySensor):
"""ZHA aqara pet feeder error detected binary sensor."""
SENSOR_ATTR = "error_detected"
_unique_id_suffix = "error_detected"
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PROBLEM
_attr_name: str = "Error detected"
@ -283,28 +286,31 @@ class AqaraPetFeederErrorDetected(BinarySensor, id_suffix="error_detected"):
cluster_handler_names="opple_cluster",
models={"lumi.plug.mmeu01", "lumi.plug.maeu01"},
)
class XiaomiPlugConsumerConnected(BinarySensor, id_suffix="consumer_connected"):
class XiaomiPlugConsumerConnected(BinarySensor):
"""ZHA Xiaomi plug consumer connected binary sensor."""
SENSOR_ATTR = "consumer_connected"
_unique_id_suffix = "consumer_connected"
_attr_name: str = "Consumer connected"
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PLUG
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"})
class AqaraThermostatWindowOpen(BinarySensor, id_suffix="window_open"):
class AqaraThermostatWindowOpen(BinarySensor):
"""ZHA Aqara thermostat window open binary sensor."""
SENSOR_ATTR = "window_open"
_unique_id_suffix = "window_open"
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.WINDOW
_attr_name: str = "Window open"
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"})
class AqaraThermostatValveAlarm(BinarySensor, id_suffix="valve_alarm"):
class AqaraThermostatValveAlarm(BinarySensor):
"""ZHA Aqara thermostat valve alarm binary sensor."""
SENSOR_ATTR = "valve_alarm"
_unique_id_suffix = "valve_alarm"
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PROBLEM
_attr_name: str = "Valve alarm"
@ -312,10 +318,11 @@ class AqaraThermostatValveAlarm(BinarySensor, id_suffix="valve_alarm"):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
)
class AqaraThermostatCalibrated(BinarySensor, id_suffix="calibrated"):
class AqaraThermostatCalibrated(BinarySensor):
"""ZHA Aqara thermostat calibrated binary sensor."""
SENSOR_ATTR = "calibrated"
_unique_id_suffix = "calibrated"
_attr_entity_category: EntityCategory = EntityCategory.DIAGNOSTIC
_attr_name: str = "Calibrated"
@ -323,18 +330,20 @@ class AqaraThermostatCalibrated(BinarySensor, id_suffix="calibrated"):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
)
class AqaraThermostatExternalSensor(BinarySensor, id_suffix="sensor"):
class AqaraThermostatExternalSensor(BinarySensor):
"""ZHA Aqara thermostat external sensor binary sensor."""
SENSOR_ATTR = "sensor"
_unique_id_suffix = "sensor"
_attr_entity_category: EntityCategory = EntityCategory.DIAGNOSTIC
_attr_name: str = "External sensor"
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"})
class AqaraLinkageAlarmState(BinarySensor, id_suffix="linkage_alarm_state"):
class AqaraLinkageAlarmState(BinarySensor):
"""ZHA Aqara linkage alarm state binary sensor."""
SENSOR_ATTR = "linkage_alarm_state"
_unique_id_suffix = "linkage_alarm_state"
_attr_name: str = "Linkage alarm state"
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.SMOKE

View File

@ -145,9 +145,10 @@ class ZHAAttributeButton(ZhaEntity, ButtonEntity):
"_TZE200_htnnfasr",
},
)
class FrostLockResetButton(ZHAAttributeButton, id_suffix="reset_frost_lock"):
class FrostLockResetButton(ZHAAttributeButton):
"""Defines a ZHA frost lock reset button."""
_unique_id_suffix = "reset_frost_lock"
_attribute_name = "frost_lock_reset"
_attr_name = "Frost lock reset"
_attribute_value = 0
@ -158,11 +159,10 @@ class FrostLockResetButton(ZHAAttributeButton, id_suffix="reset_frost_lock"):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"}
)
class NoPresenceStatusResetButton(
ZHAAttributeButton, id_suffix="reset_no_presence_status"
):
class NoPresenceStatusResetButton(ZHAAttributeButton):
"""Defines a ZHA no presence status reset button."""
_unique_id_suffix = "reset_no_presence_status"
_attribute_name = "reset_no_presence_status"
_attr_name = "Presence status reset"
_attribute_value = 1
@ -171,9 +171,10 @@ class NoPresenceStatusResetButton(
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
class AqaraPetFeederFeedButton(ZHAAttributeButton, id_suffix="feeding"):
class AqaraPetFeederFeedButton(ZHAAttributeButton):
"""Defines a feed button for the aqara c1 pet feeder."""
_unique_id_suffix = "feeding"
_attribute_name = "feeding"
_attr_name = "Feed"
_attribute_value = 1
@ -182,9 +183,10 @@ class AqaraPetFeederFeedButton(ZHAAttributeButton, id_suffix="feeding"):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
)
class AqaraSelfTestButton(ZHAAttributeButton, id_suffix="self_test"):
class AqaraSelfTestButton(ZHAAttributeButton):
"""Defines a ZHA self-test button for Aqara smoke sensors."""
_unique_id_suffix = "self_test"
_attribute_name = "self_test"
_attr_name = "Self-test"
_attribute_value = 1

View File

@ -46,15 +46,18 @@ DEFAULT_UPDATE_GROUP_FROM_CHILD_DELAY = 0.5
class BaseZhaEntity(LogMixin, entity.Entity):
"""A base class for ZHA entities."""
unique_id_suffix: str | None = None
_unique_id_suffix: str | None = None
"""suffix to add to the unique_id of the entity. Used for multi
entities using the same cluster handler/cluster id for the entity."""
_attr_has_entity_name = True
_attr_should_poll = False
def __init__(self, unique_id: str, zha_device: ZHADevice, **kwargs: Any) -> None:
"""Init ZHA entity."""
self._unique_id: str = unique_id
if self.unique_id_suffix:
self._unique_id += f"-{self.unique_id_suffix}"
if self._unique_id_suffix:
self._unique_id += f"-{self._unique_id_suffix}"
self._state: Any = None
self._extra_state_attributes: dict[str, Any] = {}
self._zha_device = zha_device
@ -144,16 +147,6 @@ class ZhaEntity(BaseZhaEntity, RestoreEntity):
remove_future: asyncio.Future[Any]
def __init_subclass__(cls, id_suffix: str | None = None, **kwargs: Any) -> None:
"""Initialize subclass.
:param id_suffix: suffix to add to the unique_id of the entity. Used for multi
entities using the same cluster handler/cluster id for the entity.
"""
super().__init_subclass__(**kwargs)
if id_suffix:
cls.unique_id_suffix = id_suffix
def __init__(
self,
unique_id: str,

View File

@ -452,11 +452,10 @@ class ZHANumberConfigurationEntity(ZhaEntity, NumberEntity):
models={"lumi.motion.ac02", "lumi.motion.agl04"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraMotionDetectionInterval(
ZHANumberConfigurationEntity, id_suffix="detection_interval"
):
class AqaraMotionDetectionInterval(ZHANumberConfigurationEntity):
"""Representation of a ZHA motion detection interval configuration entity."""
_unique_id_suffix = "detection_interval"
_attr_native_min_value: float = 2
_attr_native_max_value: float = 65535
_zcl_attribute: str = "detection_interval"
@ -465,11 +464,10 @@ class AqaraMotionDetectionInterval(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class OnOffTransitionTimeConfigurationEntity(
ZHANumberConfigurationEntity, id_suffix="on_off_transition_time"
):
class OnOffTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
"""Representation of a ZHA on off transition time configuration entity."""
_unique_id_suffix = "on_off_transition_time"
_attr_native_min_value: float = 0x0000
_attr_native_max_value: float = 0xFFFF
_zcl_attribute: str = "on_off_transition_time"
@ -478,9 +476,10 @@ class OnOffTransitionTimeConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class OnLevelConfigurationEntity(ZHANumberConfigurationEntity, id_suffix="on_level"):
class OnLevelConfigurationEntity(ZHANumberConfigurationEntity):
"""Representation of a ZHA on level configuration entity."""
_unique_id_suffix = "on_level"
_attr_native_min_value: float = 0x00
_attr_native_max_value: float = 0xFF
_zcl_attribute: str = "on_level"
@ -489,11 +488,10 @@ class OnLevelConfigurationEntity(ZHANumberConfigurationEntity, id_suffix="on_lev
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class OnTransitionTimeConfigurationEntity(
ZHANumberConfigurationEntity, id_suffix="on_transition_time"
):
class OnTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
"""Representation of a ZHA on transition time configuration entity."""
_unique_id_suffix = "on_transition_time"
_attr_native_min_value: float = 0x0000
_attr_native_max_value: float = 0xFFFE
_zcl_attribute: str = "on_transition_time"
@ -502,11 +500,10 @@ class OnTransitionTimeConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class OffTransitionTimeConfigurationEntity(
ZHANumberConfigurationEntity, id_suffix="off_transition_time"
):
class OffTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
"""Representation of a ZHA off transition time configuration entity."""
_unique_id_suffix = "off_transition_time"
_attr_native_min_value: float = 0x0000
_attr_native_max_value: float = 0xFFFE
_zcl_attribute: str = "off_transition_time"
@ -515,11 +512,10 @@ class OffTransitionTimeConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class DefaultMoveRateConfigurationEntity(
ZHANumberConfigurationEntity, id_suffix="default_move_rate"
):
class DefaultMoveRateConfigurationEntity(ZHANumberConfigurationEntity):
"""Representation of a ZHA default move rate configuration entity."""
_unique_id_suffix = "default_move_rate"
_attr_native_min_value: float = 0x00
_attr_native_max_value: float = 0xFE
_zcl_attribute: str = "default_move_rate"
@ -528,11 +524,10 @@ class DefaultMoveRateConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class StartUpCurrentLevelConfigurationEntity(
ZHANumberConfigurationEntity, id_suffix="start_up_current_level"
):
class StartUpCurrentLevelConfigurationEntity(ZHANumberConfigurationEntity):
"""Representation of a ZHA startup current level configuration entity."""
_unique_id_suffix = "start_up_current_level"
_attr_native_min_value: float = 0x00
_attr_native_max_value: float = 0xFF
_zcl_attribute: str = "start_up_current_level"
@ -541,11 +536,10 @@ class StartUpCurrentLevelConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_COLOR)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class StartUpColorTemperatureConfigurationEntity(
ZHANumberConfigurationEntity, id_suffix="start_up_color_temperature"
):
class StartUpColorTemperatureConfigurationEntity(ZHANumberConfigurationEntity):
"""Representation of a ZHA startup color temperature configuration entity."""
_unique_id_suffix = "start_up_color_temperature"
_attr_native_min_value: float = 153
_attr_native_max_value: float = 500
_zcl_attribute: str = "start_up_color_temperature"
@ -572,9 +566,10 @@ class StartUpColorTemperatureConfigurationEntity(
},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class TimerDurationMinutes(ZHANumberConfigurationEntity, id_suffix="timer_duration"):
class TimerDurationMinutes(ZHANumberConfigurationEntity):
"""Representation of a ZHA timer duration configuration entity."""
_unique_id_suffix = "timer_duration"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0x00
@ -586,9 +581,10 @@ class TimerDurationMinutes(ZHANumberConfigurationEntity, id_suffix="timer_durati
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names="ikea_airpurifier")
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class FilterLifeTime(ZHANumberConfigurationEntity, id_suffix="filter_life_time"):
class FilterLifeTime(ZHANumberConfigurationEntity):
"""Representation of a ZHA filter lifetime configuration entity."""
_unique_id_suffix = "filter_life_time"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0x00
@ -604,9 +600,10 @@ class FilterLifeTime(ZHANumberConfigurationEntity, id_suffix="filter_life_time")
models={"ti.router"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class TiRouterTransmitPower(ZHANumberConfigurationEntity, id_suffix="transmit_power"):
class TiRouterTransmitPower(ZHANumberConfigurationEntity):
"""Representation of a ZHA TI transmit power configuration entity."""
_unique_id_suffix = "transmit_power"
_attr_native_min_value: float = -20
_attr_native_max_value: float = 20
_zcl_attribute: str = "transmit_power"
@ -615,11 +612,10 @@ class TiRouterTransmitPower(ZHANumberConfigurationEntity, id_suffix="transmit_po
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingUpSpeed(
ZHANumberConfigurationEntity, id_suffix="dimming_speed_up_remote"
):
class InovelliRemoteDimmingUpSpeed(ZHANumberConfigurationEntity):
"""Inovelli remote dimming up speed configuration entity."""
_unique_id_suffix = "dimming_speed_up_remote"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -630,9 +626,10 @@ class InovelliRemoteDimmingUpSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliButtonDelay(ZHANumberConfigurationEntity, id_suffix="button_delay"):
class InovelliButtonDelay(ZHANumberConfigurationEntity):
"""Inovelli button delay configuration entity."""
_unique_id_suffix = "dimming_speed_up_local"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -643,11 +640,10 @@ class InovelliButtonDelay(ZHANumberConfigurationEntity, id_suffix="button_delay"
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalDimmingUpSpeed(
ZHANumberConfigurationEntity, id_suffix="dimming_speed_up_local"
):
class InovelliLocalDimmingUpSpeed(ZHANumberConfigurationEntity):
"""Inovelli local dimming up speed configuration entity."""
_unique_id_suffix = "dimming_speed_up_local"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -658,11 +654,10 @@ class InovelliLocalDimmingUpSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalRampRateOffToOn(
ZHANumberConfigurationEntity, id_suffix="ramp_rate_off_to_on_local"
):
class InovelliLocalRampRateOffToOn(ZHANumberConfigurationEntity):
"""Inovelli off to on local ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_off_to_on_local"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -673,11 +668,10 @@ class InovelliLocalRampRateOffToOn(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingSpeedOffToOn(
ZHANumberConfigurationEntity, id_suffix="ramp_rate_off_to_on_remote"
):
class InovelliRemoteDimmingSpeedOffToOn(ZHANumberConfigurationEntity):
"""Inovelli off to on remote ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_off_to_on_remote"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -688,11 +682,10 @@ class InovelliRemoteDimmingSpeedOffToOn(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingDownSpeed(
ZHANumberConfigurationEntity, id_suffix="dimming_speed_down_remote"
):
class InovelliRemoteDimmingDownSpeed(ZHANumberConfigurationEntity):
"""Inovelli remote dimming down speed configuration entity."""
_unique_id_suffix = "dimming_speed_down_remote"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -703,11 +696,10 @@ class InovelliRemoteDimmingDownSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalDimmingDownSpeed(
ZHANumberConfigurationEntity, id_suffix="dimming_speed_down_local"
):
class InovelliLocalDimmingDownSpeed(ZHANumberConfigurationEntity):
"""Inovelli local dimming down speed configuration entity."""
_unique_id_suffix = "dimming_speed_down_local"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -718,11 +710,10 @@ class InovelliLocalDimmingDownSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalRampRateOnToOff(
ZHANumberConfigurationEntity, id_suffix="ramp_rate_on_to_off_local"
):
class InovelliLocalRampRateOnToOff(ZHANumberConfigurationEntity):
"""Inovelli local on to off ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_on_to_off_local"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -733,11 +724,10 @@ class InovelliLocalRampRateOnToOff(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingSpeedOnToOff(
ZHANumberConfigurationEntity, id_suffix="ramp_rate_on_to_off_remote"
):
class InovelliRemoteDimmingSpeedOnToOff(ZHANumberConfigurationEntity):
"""Inovelli remote on to off ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_on_to_off_remote"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0
@ -748,11 +738,10 @@ class InovelliRemoteDimmingSpeedOnToOff(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliMinimumLoadDimmingLevel(
ZHANumberConfigurationEntity, id_suffix="minimum_level"
):
class InovelliMinimumLoadDimmingLevel(ZHANumberConfigurationEntity):
"""Inovelli minimum load dimming level configuration entity."""
_unique_id_suffix = "minimum_level"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16]
_attr_native_min_value: float = 1
@ -763,11 +752,10 @@ class InovelliMinimumLoadDimmingLevel(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliMaximumLoadDimmingLevel(
ZHANumberConfigurationEntity, id_suffix="maximum_level"
):
class InovelliMaximumLoadDimmingLevel(ZHANumberConfigurationEntity):
"""Inovelli maximum load dimming level configuration entity."""
_unique_id_suffix = "maximum_level"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16]
_attr_native_min_value: float = 2
@ -778,11 +766,10 @@ class InovelliMaximumLoadDimmingLevel(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliAutoShutoffTimer(
ZHANumberConfigurationEntity, id_suffix="auto_off_timer"
):
class InovelliAutoShutoffTimer(ZHANumberConfigurationEntity):
"""Inovelli automatic switch shutoff timer configuration entity."""
_unique_id_suffix = "auto_off_timer"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0
@ -793,11 +780,10 @@ class InovelliAutoShutoffTimer(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLoadLevelIndicatorTimeout(
ZHANumberConfigurationEntity, id_suffix="load_level_indicator_timeout"
):
class InovelliLoadLevelIndicatorTimeout(ZHANumberConfigurationEntity):
"""Inovelli load level indicator timeout configuration entity."""
_unique_id_suffix = "load_level_indicator_timeout"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0
@ -808,11 +794,10 @@ class InovelliLoadLevelIndicatorTimeout(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOnColor(
ZHANumberConfigurationEntity, id_suffix="led_color_when_on"
):
class InovelliDefaultAllLEDOnColor(ZHANumberConfigurationEntity):
"""Inovelli default all led color when on configuration entity."""
_unique_id_suffix = "led_color_when_on"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[15]
_attr_native_min_value: float = 0
@ -823,11 +808,10 @@ class InovelliDefaultAllLEDOnColor(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOffColor(
ZHANumberConfigurationEntity, id_suffix="led_color_when_off"
):
class InovelliDefaultAllLEDOffColor(ZHANumberConfigurationEntity):
"""Inovelli default all led color when off configuration entity."""
_unique_id_suffix = "led_color_when_off"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[15]
_attr_native_min_value: float = 0
@ -838,11 +822,10 @@ class InovelliDefaultAllLEDOffColor(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOnIntensity(
ZHANumberConfigurationEntity, id_suffix="led_intensity_when_on"
):
class InovelliDefaultAllLEDOnIntensity(ZHANumberConfigurationEntity):
"""Inovelli default all led intensity when on configuration entity."""
_unique_id_suffix = "led_intensity_when_on"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16]
_attr_native_min_value: float = 0
@ -853,11 +836,10 @@ class InovelliDefaultAllLEDOnIntensity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOffIntensity(
ZHANumberConfigurationEntity, id_suffix="led_intensity_when_off"
):
class InovelliDefaultAllLEDOffIntensity(ZHANumberConfigurationEntity):
"""Inovelli default all led intensity when off configuration entity."""
_unique_id_suffix = "led_intensity_when_off"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16]
_attr_native_min_value: float = 0
@ -868,11 +850,10 @@ class InovelliDefaultAllLEDOffIntensity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDoubleTapUpLevel(
ZHANumberConfigurationEntity, id_suffix="double_tap_up_level"
):
class InovelliDoubleTapUpLevel(ZHANumberConfigurationEntity):
"""Inovelli double tap up level configuration entity."""
_unique_id_suffix = "double_tap_up_level"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16]
_attr_native_min_value: float = 2
@ -883,11 +864,10 @@ class InovelliDoubleTapUpLevel(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDoubleTapDownLevel(
ZHANumberConfigurationEntity, id_suffix="double_tap_down_level"
):
class InovelliDoubleTapDownLevel(ZHANumberConfigurationEntity):
"""Inovelli double tap down level configuration entity."""
_unique_id_suffix = "double_tap_down_level"
_attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16]
_attr_native_min_value: float = 0
@ -900,9 +880,10 @@ class InovelliDoubleTapDownLevel(
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraPetFeederServingSize(ZHANumberConfigurationEntity, id_suffix="serving_size"):
class AqaraPetFeederServingSize(ZHANumberConfigurationEntity):
"""Aqara pet feeder serving size configuration entity."""
_unique_id_suffix = "serving_size"
_attr_entity_category = EntityCategory.CONFIG
_attr_native_min_value: float = 1
_attr_native_max_value: float = 10
@ -916,11 +897,10 @@ class AqaraPetFeederServingSize(ZHANumberConfigurationEntity, id_suffix="serving
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraPetFeederPortionWeight(
ZHANumberConfigurationEntity, id_suffix="portion_weight"
):
class AqaraPetFeederPortionWeight(ZHANumberConfigurationEntity):
"""Aqara pet feeder portion weight configuration entity."""
_unique_id_suffix = "portion_weight"
_attr_entity_category = EntityCategory.CONFIG
_attr_native_min_value: float = 1
_attr_native_max_value: float = 100
@ -935,11 +915,10 @@ class AqaraPetFeederPortionWeight(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraThermostatAwayTemp(
ZHANumberConfigurationEntity, id_suffix="away_preset_temperature"
):
class AqaraThermostatAwayTemp(ZHANumberConfigurationEntity):
"""Aqara away preset temperature configuration entity."""
_unique_id_suffix = "away_preset_temperature"
_attr_entity_category = EntityCategory.CONFIG
_attr_native_min_value: float = 5
_attr_native_max_value: float = 30

View File

@ -117,39 +117,37 @@ class ZHANonZCLSelectEntity(ZHAEnumSelectEntity):
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
class ZHADefaultToneSelectEntity(
ZHANonZCLSelectEntity, id_suffix=IasWd.Warning.WarningMode.__name__
):
class ZHADefaultToneSelectEntity(ZHANonZCLSelectEntity):
"""Representation of a ZHA default siren tone select entity."""
_unique_id_suffix = IasWd.Warning.WarningMode.__name__
_enum = IasWd.Warning.WarningMode
_attr_name = "Default siren tone"
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
class ZHADefaultSirenLevelSelectEntity(
ZHANonZCLSelectEntity, id_suffix=IasWd.Warning.SirenLevel.__name__
):
class ZHADefaultSirenLevelSelectEntity(ZHANonZCLSelectEntity):
"""Representation of a ZHA default siren level select entity."""
_unique_id_suffix = IasWd.Warning.SirenLevel.__name__
_enum = IasWd.Warning.SirenLevel
_attr_name = "Default siren level"
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
class ZHADefaultStrobeLevelSelectEntity(
ZHANonZCLSelectEntity, id_suffix=IasWd.StrobeLevel.__name__
):
class ZHADefaultStrobeLevelSelectEntity(ZHANonZCLSelectEntity):
"""Representation of a ZHA default siren strobe level select entity."""
_unique_id_suffix = IasWd.StrobeLevel.__name__
_enum = IasWd.StrobeLevel
_attr_name = "Default strobe level"
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
class ZHADefaultStrobeSelectEntity(ZHANonZCLSelectEntity, id_suffix=Strobe.__name__):
class ZHADefaultStrobeSelectEntity(ZHANonZCLSelectEntity):
"""Representation of a ZHA default siren strobe select entity."""
_unique_id_suffix = Strobe.__name__
_enum = Strobe
_attr_name = "Default strobe"
@ -230,11 +228,10 @@ class ZCLEnumSelectEntity(ZhaEntity, SelectEntity):
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_ON_OFF)
class ZHAStartupOnOffSelectEntity(
ZCLEnumSelectEntity, id_suffix=OnOff.StartUpOnOff.__name__
):
class ZHAStartupOnOffSelectEntity(ZCLEnumSelectEntity):
"""Representation of a ZHA startup onoff select entity."""
_unique_id_suffix = OnOff.StartUpOnOff.__name__
_select_attr = "start_up_on_off"
_enum = OnOff.StartUpOnOff
_attr_name = "Start-up behavior"
@ -273,9 +270,10 @@ class TuyaPowerOnState(types.enum8):
"_TZE200_9mahtqtg",
},
)
class TuyaPowerOnStateSelectEntity(ZCLEnumSelectEntity, id_suffix="power_on_state"):
class TuyaPowerOnStateSelectEntity(ZCLEnumSelectEntity):
"""Representation of a ZHA power on state select entity."""
_unique_id_suffix = "power_on_state"
_select_attr = "power_on_state"
_enum = TuyaPowerOnState
_attr_name = "Power on state"
@ -293,9 +291,10 @@ class TuyaBacklightMode(types.enum8):
cluster_handler_names=CLUSTER_HANDLER_ON_OFF,
models={"TS011F", "TS0121", "TS0001", "TS0002", "TS0003", "TS0004"},
)
class TuyaBacklightModeSelectEntity(ZCLEnumSelectEntity, id_suffix="backlight_mode"):
class TuyaBacklightModeSelectEntity(ZCLEnumSelectEntity):
"""Representation of a ZHA backlight mode select entity."""
_unique_id_suffix = "backlight_mode"
_select_attr = "backlight_mode"
_enum = TuyaBacklightMode
_attr_name = "Backlight mode"
@ -331,9 +330,10 @@ class MoesBacklightMode(types.enum8):
"_TZE200_9mahtqtg",
},
)
class MoesBacklightModeSelectEntity(ZCLEnumSelectEntity, id_suffix="backlight_mode"):
class MoesBacklightModeSelectEntity(ZCLEnumSelectEntity):
"""Moes devices have a different backlight mode select options."""
_unique_id_suffix = "backlight_mode"
_select_attr = "backlight_mode"
_enum = MoesBacklightMode
_attr_name = "Backlight mode"
@ -351,9 +351,10 @@ class AqaraMotionSensitivities(types.enum8):
cluster_handler_names="opple_cluster",
models={"lumi.motion.ac01", "lumi.motion.ac02", "lumi.motion.agl04"},
)
class AqaraMotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"):
class AqaraMotionSensitivity(ZCLEnumSelectEntity):
"""Representation of a ZHA motion sensitivity configuration entity."""
_unique_id_suffix = "motion_sensitivity"
_select_attr = "motion_sensitivity"
_enum = AqaraMotionSensitivities
_attr_name = "Motion sensitivity"
@ -372,9 +373,10 @@ class HueV1MotionSensitivities(types.enum8):
manufacturers={"Philips", "Signify Netherlands B.V."},
models={"SML001"},
)
class HueV1MotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"):
class HueV1MotionSensitivity(ZCLEnumSelectEntity):
"""Representation of a ZHA motion sensitivity configuration entity."""
_unique_id_suffix = "motion_sensitivity"
_select_attr = "sensitivity"
_attr_name = "Hue motion sensitivity"
_enum = HueV1MotionSensitivities
@ -395,9 +397,10 @@ class HueV2MotionSensitivities(types.enum8):
manufacturers={"Philips", "Signify Netherlands B.V."},
models={"SML002", "SML003", "SML004"},
)
class HueV2MotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"):
class HueV2MotionSensitivity(ZCLEnumSelectEntity):
"""Representation of a ZHA motion sensitivity configuration entity."""
_unique_id_suffix = "motion_sensitivity"
_select_attr = "sensitivity"
_attr_name = "Hue motion sensitivity"
_enum = HueV2MotionSensitivities
@ -413,9 +416,10 @@ class AqaraMonitoringModess(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"}
)
class AqaraMonitoringMode(ZCLEnumSelectEntity, id_suffix="monitoring_mode"):
class AqaraMonitoringMode(ZCLEnumSelectEntity):
"""Representation of a ZHA monitoring mode configuration entity."""
_unique_id_suffix = "monitoring_mode"
_select_attr = "monitoring_mode"
_enum = AqaraMonitoringModess
_attr_name = "Monitoring mode"
@ -432,9 +436,10 @@ class AqaraApproachDistances(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"}
)
class AqaraApproachDistance(ZCLEnumSelectEntity, id_suffix="approach_distance"):
class AqaraApproachDistance(ZCLEnumSelectEntity):
"""Representation of a ZHA approach distance configuration entity."""
_unique_id_suffix = "approach_distance"
_select_attr = "approach_distance"
_enum = AqaraApproachDistances
_attr_name = "Approach distance"
@ -450,9 +455,10 @@ class AqaraE1ReverseDirection(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="window_covering", models={"lumi.curtain.agl001"}
)
class AqaraCurtainMode(ZCLEnumSelectEntity, id_suffix="window_covering_mode"):
class AqaraCurtainMode(ZCLEnumSelectEntity):
"""Representation of a ZHA curtain mode configuration entity."""
_unique_id_suffix = "window_covering_mode"
_select_attr = "window_covering_mode"
_enum = AqaraE1ReverseDirection
_attr_name = "Curtain mode"
@ -468,9 +474,10 @@ class InovelliOutputMode(types.enum1):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliOutputModeEntity(ZCLEnumSelectEntity, id_suffix="output_mode"):
class InovelliOutputModeEntity(ZCLEnumSelectEntity):
"""Inovelli output mode control."""
_unique_id_suffix = "output_mode"
_select_attr = "output_mode"
_enum = InovelliOutputMode
_attr_name: str = "Output mode"
@ -488,9 +495,10 @@ class InovelliSwitchType(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliSwitchTypeEntity(ZCLEnumSelectEntity, id_suffix="switch_type"):
class InovelliSwitchTypeEntity(ZCLEnumSelectEntity):
"""Inovelli switch type control."""
_unique_id_suffix = "switch_type"
_select_attr = "switch_type"
_enum = InovelliSwitchType
_attr_name: str = "Switch type"
@ -506,9 +514,10 @@ class InovelliLedScalingMode(types.enum1):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliLedScalingModeEntity(ZCLEnumSelectEntity, id_suffix="led_scaling_mode"):
class InovelliLedScalingModeEntity(ZCLEnumSelectEntity):
"""Inovelli led mode control."""
_unique_id_suffix = "led_scaling_mode"
_select_attr = "led_scaling_mode"
_enum = InovelliLedScalingMode
_attr_name: str = "Led scaling mode"
@ -524,11 +533,10 @@ class InovelliNonNeutralOutput(types.enum1):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliNonNeutralOutputEntity(
ZCLEnumSelectEntity, id_suffix="increased_non_neutral_output"
):
class InovelliNonNeutralOutputEntity(ZCLEnumSelectEntity):
"""Inovelli non neutral output control."""
_unique_id_suffix = "increased_non_neutral_output"
_select_attr = "increased_non_neutral_output"
_enum = InovelliNonNeutralOutput
_attr_name: str = "Non neutral output"
@ -544,9 +552,10 @@ class AqaraFeedingMode(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
)
class AqaraPetFeederMode(ZCLEnumSelectEntity, id_suffix="feeding_mode"):
class AqaraPetFeederMode(ZCLEnumSelectEntity):
"""Representation of an Aqara pet feeder mode configuration entity."""
_unique_id_suffix = "feeding_mode"
_select_attr = "feeding_mode"
_enum = AqaraFeedingMode
_attr_name = "Mode"
@ -564,9 +573,10 @@ class AqaraThermostatPresetMode(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
)
class AqaraThermostatPreset(ZCLEnumSelectEntity, id_suffix="preset"):
class AqaraThermostatPreset(ZCLEnumSelectEntity):
"""Representation of an Aqara thermostat preset configuration entity."""
_unique_id_suffix = "preset"
_select_attr = "preset"
_enum = AqaraThermostatPresetMode
_attr_name = "Preset"

View File

@ -319,12 +319,11 @@ class PolledElectricalMeasurement(ElectricalMeasurement):
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class ElectricalMeasurementApparentPower(
ElectricalMeasurement, id_suffix="apparent_power"
):
class ElectricalMeasurementApparentPower(ElectricalMeasurement):
"""Apparent power measurement."""
SENSOR_ATTR = "apparent_power"
_unique_id_suffix = "apparent_power"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.APPARENT_POWER
_attr_name: str = "Apparent power"
_attr_native_unit_of_measurement = UnitOfApparentPower.VOLT_AMPERE
@ -333,10 +332,11 @@ class ElectricalMeasurementApparentPower(
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class ElectricalMeasurementRMSCurrent(ElectricalMeasurement, id_suffix="rms_current"):
class ElectricalMeasurementRMSCurrent(ElectricalMeasurement):
"""RMS current measurement."""
SENSOR_ATTR = "rms_current"
_unique_id_suffix = "rms_current"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.CURRENT
_attr_name: str = "RMS current"
_attr_native_unit_of_measurement = UnitOfElectricCurrent.AMPERE
@ -345,10 +345,11 @@ class ElectricalMeasurementRMSCurrent(ElectricalMeasurement, id_suffix="rms_curr
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class ElectricalMeasurementRMSVoltage(ElectricalMeasurement, id_suffix="rms_voltage"):
class ElectricalMeasurementRMSVoltage(ElectricalMeasurement):
"""RMS Voltage measurement."""
SENSOR_ATTR = "rms_voltage"
_unique_id_suffix = "rms_voltage"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.VOLTAGE
_attr_name: str = "RMS voltage"
_attr_native_unit_of_measurement = UnitOfElectricPotential.VOLT
@ -357,10 +358,11 @@ class ElectricalMeasurementRMSVoltage(ElectricalMeasurement, id_suffix="rms_volt
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class ElectricalMeasurementFrequency(ElectricalMeasurement, id_suffix="ac_frequency"):
class ElectricalMeasurementFrequency(ElectricalMeasurement):
"""Frequency measurement."""
SENSOR_ATTR = "ac_frequency"
_unique_id_suffix = "ac_frequency"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.FREQUENCY
_attr_name: str = "AC frequency"
_attr_native_unit_of_measurement = UnitOfFrequency.HERTZ
@ -369,10 +371,11 @@ class ElectricalMeasurementFrequency(ElectricalMeasurement, id_suffix="ac_freque
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class ElectricalMeasurementPowerFactor(ElectricalMeasurement, id_suffix="power_factor"):
class ElectricalMeasurementPowerFactor(ElectricalMeasurement):
"""Frequency measurement."""
SENSOR_ATTR = "power_factor"
_unique_id_suffix = "power_factor"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.POWER_FACTOR
_attr_name: str = "Power factor"
_attr_native_unit_of_measurement = PERCENTAGE
@ -499,10 +502,11 @@ class SmartEnergyMetering(Sensor):
stop_on_match_group=CLUSTER_HANDLER_SMARTENERGY_METERING,
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class SmartEnergySummation(SmartEnergyMetering, id_suffix="summation_delivered"):
class SmartEnergySummation(SmartEnergyMetering):
"""Smart Energy Metering summation sensor."""
SENSOR_ATTR: int | str = "current_summ_delivered"
_unique_id_suffix = "summation_delivered"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.ENERGY
_attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING
_attr_name: str = "Summation delivered"
@ -558,12 +562,11 @@ class PolledSmartEnergySummation(SmartEnergySummation):
models={"ZLinky_TIC"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class Tier1SmartEnergySummation(
PolledSmartEnergySummation, id_suffix="tier1_summation_delivered"
):
class Tier1SmartEnergySummation(PolledSmartEnergySummation):
"""Tier 1 Smart Energy Metering summation sensor."""
SENSOR_ATTR: int | str = "current_tier1_summ_delivered"
_unique_id_suffix = "tier1_summation_delivered"
_attr_name: str = "Tier 1 summation delivered"
@ -572,12 +575,11 @@ class Tier1SmartEnergySummation(
models={"ZLinky_TIC"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class Tier2SmartEnergySummation(
PolledSmartEnergySummation, id_suffix="tier2_summation_delivered"
):
class Tier2SmartEnergySummation(PolledSmartEnergySummation):
"""Tier 2 Smart Energy Metering summation sensor."""
SENSOR_ATTR: int | str = "current_tier2_summ_delivered"
_unique_id_suffix = "tier2_summation_delivered"
_attr_name: str = "Tier 2 summation delivered"
@ -586,12 +588,11 @@ class Tier2SmartEnergySummation(
models={"ZLinky_TIC"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class Tier3SmartEnergySummation(
PolledSmartEnergySummation, id_suffix="tier3_summation_delivered"
):
class Tier3SmartEnergySummation(PolledSmartEnergySummation):
"""Tier 3 Smart Energy Metering summation sensor."""
SENSOR_ATTR: int | str = "current_tier3_summ_delivered"
_unique_id_suffix = "tier3_summation_delivered"
_attr_name: str = "Tier 3 summation delivered"
@ -600,12 +601,11 @@ class Tier3SmartEnergySummation(
models={"ZLinky_TIC"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class Tier4SmartEnergySummation(
PolledSmartEnergySummation, id_suffix="tier4_summation_delivered"
):
class Tier4SmartEnergySummation(PolledSmartEnergySummation):
"""Tier 4 Smart Energy Metering summation sensor."""
SENSOR_ATTR: int | str = "current_tier4_summ_delivered"
_unique_id_suffix = "tier4_summation_delivered"
_attr_name: str = "Tier 4 summation delivered"
@ -614,12 +614,11 @@ class Tier4SmartEnergySummation(
models={"ZLinky_TIC"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class Tier5SmartEnergySummation(
PolledSmartEnergySummation, id_suffix="tier5_summation_delivered"
):
class Tier5SmartEnergySummation(PolledSmartEnergySummation):
"""Tier 5 Smart Energy Metering summation sensor."""
SENSOR_ATTR: int | str = "current_tier5_summ_delivered"
_unique_id_suffix = "tier5_summation_delivered"
_attr_name: str = "Tier 5 summation delivered"
@ -628,12 +627,11 @@ class Tier5SmartEnergySummation(
models={"ZLinky_TIC"},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class Tier6SmartEnergySummation(
PolledSmartEnergySummation, id_suffix="tier6_summation_delivered"
):
class Tier6SmartEnergySummation(PolledSmartEnergySummation):
"""Tier 6 Smart Energy Metering summation sensor."""
SENSOR_ATTR: int | str = "current_tier6_summ_delivered"
_unique_id_suffix = "tier6_summation_delivered"
_attr_name: str = "Tier 6 summation delivered"
@ -772,9 +770,10 @@ class FormaldehydeConcentration(Sensor):
stop_on_match_group=CLUSTER_HANDLER_THERMOSTAT,
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class ThermostatHVACAction(Sensor, id_suffix="hvac_action"):
class ThermostatHVACAction(Sensor):
"""Thermostat HVAC action sensor."""
_unique_id_suffix = "hvac_action"
_attr_name: str = "HVAC action"
@classmethod
@ -891,9 +890,11 @@ class SinopeHVACAction(ThermostatHVACAction):
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_BASIC)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class RSSISensor(Sensor, id_suffix="rssi"):
class RSSISensor(Sensor):
"""RSSI sensor for a device."""
SENSOR_ATTR = "rssi"
_unique_id_suffix = "rssi"
_attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT
_attr_device_class: SensorDeviceClass | None = SensorDeviceClass.SIGNAL_STRENGTH
_attr_native_unit_of_measurement: str | None = SIGNAL_STRENGTH_DECIBELS_MILLIWATT
@ -901,7 +902,6 @@ class RSSISensor(Sensor, id_suffix="rssi"):
_attr_entity_registry_enabled_default = False
_attr_should_poll = True # BaseZhaEntity defaults to False
_attr_name: str = "RSSI"
unique_id_suffix: str
@classmethod
def create_entity(
@ -915,7 +915,7 @@ class RSSISensor(Sensor, id_suffix="rssi"):
Return entity if it is a supported configuration, otherwise return None
"""
key = f"{CLUSTER_HANDLER_BASIC}_{cls.unique_id_suffix}"
key = f"{CLUSTER_HANDLER_BASIC}_{cls._unique_id_suffix}"
if ZHA_ENTITIES.prevent_entity_creation(Platform.SENSOR, zha_device.ieee, key):
return None
return cls(unique_id, zha_device, cluster_handlers, **kwargs)
@ -923,14 +923,16 @@ class RSSISensor(Sensor, id_suffix="rssi"):
@property
def native_value(self) -> StateType:
"""Return the state of the entity."""
return getattr(self._zha_device.device, self.unique_id_suffix)
return getattr(self._zha_device.device, self.SENSOR_ATTR)
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_BASIC)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class LQISensor(RSSISensor, id_suffix="lqi"):
class LQISensor(RSSISensor):
"""LQI sensor for a device."""
SENSOR_ATTR = "lqi"
_unique_id_suffix = "lqi"
_attr_name: str = "LQI"
_attr_device_class = None
_attr_native_unit_of_measurement = None
@ -943,10 +945,11 @@ class LQISensor(RSSISensor, id_suffix="lqi"):
},
)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class TimeLeft(Sensor, id_suffix="time_left"):
class TimeLeft(Sensor):
"""Sensor that displays time left value."""
SENSOR_ATTR = "timer_time_left"
_unique_id_suffix = "time_left"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.DURATION
_attr_icon = "mdi:timer"
_attr_name: str = "Time left"
@ -955,10 +958,11 @@ class TimeLeft(Sensor, id_suffix="time_left"):
@MULTI_MATCH(cluster_handler_names="ikea_airpurifier")
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class IkeaDeviceRunTime(Sensor, id_suffix="device_run_time"):
class IkeaDeviceRunTime(Sensor):
"""Sensor that displays device run time (in minutes)."""
SENSOR_ATTR = "device_run_time"
_unique_id_suffix = "device_run_time"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.DURATION
_attr_icon = "mdi:timer"
_attr_name: str = "Device run time"
@ -968,10 +972,11 @@ class IkeaDeviceRunTime(Sensor, id_suffix="device_run_time"):
@MULTI_MATCH(cluster_handler_names="ikea_airpurifier")
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class IkeaFilterRunTime(Sensor, id_suffix="filter_run_time"):
class IkeaFilterRunTime(Sensor):
"""Sensor that displays run time of the current filter (in minutes)."""
SENSOR_ATTR = "filter_run_time"
_unique_id_suffix = "filter_run_time"
_attr_device_class: SensorDeviceClass = SensorDeviceClass.DURATION
_attr_icon = "mdi:timer"
_attr_name: str = "Filter run time"
@ -988,10 +993,11 @@ class AqaraFeedingSource(types.enum8):
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraPetFeederLastFeedingSource(Sensor, id_suffix="last_feeding_source"):
class AqaraPetFeederLastFeedingSource(Sensor):
"""Sensor that displays the last feeding source of pet feeder."""
SENSOR_ATTR = "last_feeding_source"
_unique_id_suffix = "last_feeding_source"
_attr_name: str = "Last feeding source"
_attr_icon = "mdi:devices"
@ -1002,20 +1008,22 @@ class AqaraPetFeederLastFeedingSource(Sensor, id_suffix="last_feeding_source"):
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraPetFeederLastFeedingSize(Sensor, id_suffix="last_feeding_size"):
class AqaraPetFeederLastFeedingSize(Sensor):
"""Sensor that displays the last feeding size of the pet feeder."""
SENSOR_ATTR = "last_feeding_size"
_unique_id_suffix = "last_feeding_size"
_attr_name: str = "Last feeding size"
_attr_icon: str = "mdi:counter"
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraPetFeederPortionsDispensed(Sensor, id_suffix="portions_dispensed"):
class AqaraPetFeederPortionsDispensed(Sensor):
"""Sensor that displays the number of portions dispensed by the pet feeder."""
SENSOR_ATTR = "portions_dispensed"
_unique_id_suffix = "portions_dispensed"
_attr_name: str = "Portions dispensed today"
_attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING
_attr_icon: str = "mdi:counter"
@ -1023,10 +1031,11 @@ class AqaraPetFeederPortionsDispensed(Sensor, id_suffix="portions_dispensed"):
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraPetFeederWeightDispensed(Sensor, id_suffix="weight_dispensed"):
class AqaraPetFeederWeightDispensed(Sensor):
"""Sensor that displays the weight dispensed by the pet feeder."""
SENSOR_ATTR = "weight_dispensed"
_unique_id_suffix = "weight_dispensed"
_attr_name: str = "Weight dispensed today"
_attr_native_unit_of_measurement = UnitOfMass.GRAMS
_attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING
@ -1035,10 +1044,11 @@ class AqaraPetFeederWeightDispensed(Sensor, id_suffix="weight_dispensed"):
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"})
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraSmokeDensityDbm(Sensor, id_suffix="smoke_density_dbm"):
class AqaraSmokeDensityDbm(Sensor):
"""Sensor that displays the smoke density of an Aqara smoke sensor in dB/m."""
SENSOR_ATTR = "smoke_density_dbm"
_unique_id_suffix = "smoke_density_dbm"
_attr_name: str = "Smoke density"
_attr_native_unit_of_measurement = "dB/m"
_attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT

View File

@ -270,11 +270,10 @@ class ZHASwitchConfigurationEntity(ZhaEntity, SwitchEntity):
"_TZE200_b6wax7g0",
},
)
class OnOffWindowDetectionFunctionConfigurationEntity(
ZHASwitchConfigurationEntity, id_suffix="on_off_window_opened_detection"
):
class OnOffWindowDetectionFunctionConfigurationEntity(ZHASwitchConfigurationEntity):
"""Representation of a ZHA window detection configuration entity."""
_unique_id_suffix = "on_off_window_opened_detection"
_zcl_attribute: str = "window_detection_function"
_zcl_inverter_attribute: str = "window_detection_function_inverter"
_attr_name: str = "Invert window detection"
@ -283,11 +282,10 @@ class OnOffWindowDetectionFunctionConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.motion.ac02"}
)
class P1MotionTriggerIndicatorSwitch(
ZHASwitchConfigurationEntity, id_suffix="trigger_indicator"
):
class P1MotionTriggerIndicatorSwitch(ZHASwitchConfigurationEntity):
"""Representation of a ZHA motion triggering configuration entity."""
_unique_id_suffix = "trigger_indicator"
_zcl_attribute: str = "trigger_indicator"
_attr_name = "LED trigger indicator"
@ -296,11 +294,10 @@ class P1MotionTriggerIndicatorSwitch(
cluster_handler_names="opple_cluster",
models={"lumi.plug.mmeu01", "lumi.plug.maeu01"},
)
class XiaomiPlugPowerOutageMemorySwitch(
ZHASwitchConfigurationEntity, id_suffix="power_outage_memory"
):
class XiaomiPlugPowerOutageMemorySwitch(ZHASwitchConfigurationEntity):
"""Representation of a ZHA power outage memory configuration entity."""
_unique_id_suffix = "power_outage_memory"
_zcl_attribute: str = "power_outage_memory"
_attr_name = "Power outage memory"
@ -310,11 +307,10 @@ class XiaomiPlugPowerOutageMemorySwitch(
manufacturers={"Philips", "Signify Netherlands B.V."},
models={"SML001", "SML002", "SML003", "SML004"},
)
class HueMotionTriggerIndicatorSwitch(
ZHASwitchConfigurationEntity, id_suffix="trigger_indicator"
):
class HueMotionTriggerIndicatorSwitch(ZHASwitchConfigurationEntity):
"""Representation of a ZHA motion triggering configuration entity."""
_unique_id_suffix = "trigger_indicator"
_zcl_attribute: str = "trigger_indicator"
_attr_name = "LED trigger indicator"
@ -323,9 +319,10 @@ class HueMotionTriggerIndicatorSwitch(
cluster_handler_names="ikea_airpurifier",
models={"STARKVIND Air purifier", "STARKVIND Air purifier table"},
)
class ChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
class ChildLock(ZHASwitchConfigurationEntity):
"""ZHA BinarySensor."""
_unique_id_suffix = "child_lock"
_zcl_attribute: str = "child_lock"
_attr_name = "Child lock"
@ -334,9 +331,10 @@ class ChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
cluster_handler_names="ikea_airpurifier",
models={"STARKVIND Air purifier", "STARKVIND Air purifier table"},
)
class DisableLed(ZHASwitchConfigurationEntity, id_suffix="disable_led"):
class DisableLed(ZHASwitchConfigurationEntity):
"""ZHA BinarySensor."""
_unique_id_suffix = "disable_led"
_zcl_attribute: str = "disable_led"
_attr_name = "Disable LED"
@ -344,9 +342,10 @@ class DisableLed(ZHASwitchConfigurationEntity, id_suffix="disable_led"):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliInvertSwitch(ZHASwitchConfigurationEntity, id_suffix="invert_switch"):
class InovelliInvertSwitch(ZHASwitchConfigurationEntity):
"""Inovelli invert switch control."""
_unique_id_suffix = "invert_switch"
_zcl_attribute: str = "invert_switch"
_attr_name: str = "Invert switch"
@ -354,9 +353,10 @@ class InovelliInvertSwitch(ZHASwitchConfigurationEntity, id_suffix="invert_switc
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliSmartBulbMode(ZHASwitchConfigurationEntity, id_suffix="smart_bulb_mode"):
class InovelliSmartBulbMode(ZHASwitchConfigurationEntity):
"""Inovelli smart bulb mode control."""
_unique_id_suffix = "smart_bulb_mode"
_zcl_attribute: str = "smart_bulb_mode"
_attr_name: str = "Smart bulb mode"
@ -364,11 +364,10 @@ class InovelliSmartBulbMode(ZHASwitchConfigurationEntity, id_suffix="smart_bulb_
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliDoubleTapUpEnabled(
ZHASwitchConfigurationEntity, id_suffix="double_tap_up_enabled"
):
class InovelliDoubleTapUpEnabled(ZHASwitchConfigurationEntity):
"""Inovelli double tap up enabled."""
_unique_id_suffix = "double_tap_up_enabled"
_zcl_attribute: str = "double_tap_up_enabled"
_attr_name: str = "Double tap up enabled"
@ -376,11 +375,10 @@ class InovelliDoubleTapUpEnabled(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliDoubleTapDownEnabled(
ZHASwitchConfigurationEntity, id_suffix="double_tap_down_enabled"
):
class InovelliDoubleTapDownEnabled(ZHASwitchConfigurationEntity):
"""Inovelli double tap down enabled."""
_unique_id_suffix = "double_tap_down_enabled"
_zcl_attribute: str = "double_tap_down_enabled"
_attr_name: str = "Double tap down enabled"
@ -388,11 +386,10 @@ class InovelliDoubleTapDownEnabled(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliAuxSwitchScenes(
ZHASwitchConfigurationEntity, id_suffix="aux_switch_scenes"
):
class InovelliAuxSwitchScenes(ZHASwitchConfigurationEntity):
"""Inovelli unique aux switch scenes."""
_unique_id_suffix = "aux_switch_scenes"
_zcl_attribute: str = "aux_switch_scenes"
_attr_name: str = "Aux switch scenes"
@ -400,11 +397,10 @@ class InovelliAuxSwitchScenes(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliBindingOffToOnSyncLevel(
ZHASwitchConfigurationEntity, id_suffix="binding_off_to_on_sync_level"
):
class InovelliBindingOffToOnSyncLevel(ZHASwitchConfigurationEntity):
"""Inovelli send move to level with on/off to bound devices."""
_unique_id_suffix = "binding_off_to_on_sync_level"
_zcl_attribute: str = "binding_off_to_on_sync_level"
_attr_name: str = "Binding off to on sync level"
@ -412,11 +408,10 @@ class InovelliBindingOffToOnSyncLevel(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliLocalProtection(
ZHASwitchConfigurationEntity, id_suffix="local_protection"
):
class InovelliLocalProtection(ZHASwitchConfigurationEntity):
"""Inovelli local protection control."""
_unique_id_suffix = "local_protection"
_zcl_attribute: str = "local_protection"
_attr_name: str = "Local protection"
@ -424,9 +419,10 @@ class InovelliLocalProtection(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliOnOffLEDMode(ZHASwitchConfigurationEntity, id_suffix="on_off_led_mode"):
class InovelliOnOffLEDMode(ZHASwitchConfigurationEntity):
"""Inovelli only 1 LED mode control."""
_unique_id_suffix = "on_off_led_mode"
_zcl_attribute: str = "on_off_led_mode"
_attr_name: str = "Only 1 LED mode"
@ -434,11 +430,10 @@ class InovelliOnOffLEDMode(ZHASwitchConfigurationEntity, id_suffix="on_off_led_m
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliFirmwareProgressLED(
ZHASwitchConfigurationEntity, id_suffix="firmware_progress_led"
):
class InovelliFirmwareProgressLED(ZHASwitchConfigurationEntity):
"""Inovelli firmware progress LED control."""
_unique_id_suffix = "firmware_progress_led"
_zcl_attribute: str = "firmware_progress_led"
_attr_name: str = "Firmware progress LED"
@ -446,11 +441,10 @@ class InovelliFirmwareProgressLED(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliRelayClickInOnOffMode(
ZHASwitchConfigurationEntity, id_suffix="relay_click_in_on_off_mode"
):
class InovelliRelayClickInOnOffMode(ZHASwitchConfigurationEntity):
"""Inovelli relay click in on off mode control."""
_unique_id_suffix = "relay_click_in_on_off_mode"
_zcl_attribute: str = "relay_click_in_on_off_mode"
_attr_name: str = "Disable relay click in on off mode"
@ -458,11 +452,10 @@ class InovelliRelayClickInOnOffMode(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
)
class InovelliDisableDoubleTapClearNotificationsMode(
ZHASwitchConfigurationEntity, id_suffix="disable_clear_notifications_double_tap"
):
class InovelliDisableDoubleTapClearNotificationsMode(ZHASwitchConfigurationEntity):
"""Inovelli disable clear notifications double tap control."""
_unique_id_suffix = "disable_clear_notifications_double_tap"
_zcl_attribute: str = "disable_clear_notifications_double_tap"
_attr_name: str = "Disable config 2x tap to clear notifications"
@ -470,11 +463,10 @@ class InovelliDisableDoubleTapClearNotificationsMode(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
)
class AqaraPetFeederLEDIndicator(
ZHASwitchConfigurationEntity, id_suffix="disable_led_indicator"
):
class AqaraPetFeederLEDIndicator(ZHASwitchConfigurationEntity):
"""Representation of a LED indicator configuration entity."""
_unique_id_suffix = "disable_led_indicator"
_zcl_attribute: str = "disable_led_indicator"
_attr_name = "LED indicator"
_force_inverted = True
@ -484,9 +476,10 @@ class AqaraPetFeederLEDIndicator(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
)
class AqaraPetFeederChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
class AqaraPetFeederChildLock(ZHASwitchConfigurationEntity):
"""Representation of a child lock configuration entity."""
_unique_id_suffix = "child_lock"
_zcl_attribute: str = "child_lock"
_attr_name = "Child lock"
_attr_icon: str = "mdi:account-lock"
@ -496,9 +489,10 @@ class AqaraPetFeederChildLock(ZHASwitchConfigurationEntity, id_suffix="child_loc
cluster_handler_names=CLUSTER_HANDLER_ON_OFF,
models={"TS011F"},
)
class TuyaChildLockSwitch(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
class TuyaChildLockSwitch(ZHASwitchConfigurationEntity):
"""Representation of a child lock configuration entity."""
_unique_id_suffix = "child_lock"
_zcl_attribute: str = "child_lock"
_attr_name = "Child lock"
_attr_icon: str = "mdi:account-lock"
@ -507,11 +501,10 @@ class TuyaChildLockSwitch(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
)
class AqaraThermostatWindowDetection(
ZHASwitchConfigurationEntity, id_suffix="window_detection"
):
class AqaraThermostatWindowDetection(ZHASwitchConfigurationEntity):
"""Representation of an Aqara thermostat window detection configuration entity."""
_unique_id_suffix = "window_detection"
_zcl_attribute: str = "window_detection"
_attr_name = "Window detection"
@ -519,11 +512,10 @@ class AqaraThermostatWindowDetection(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
)
class AqaraThermostatValveDetection(
ZHASwitchConfigurationEntity, id_suffix="valve_detection"
):
class AqaraThermostatValveDetection(ZHASwitchConfigurationEntity):
"""Representation of an Aqara thermostat valve detection configuration entity."""
_unique_id_suffix = "valve_detection"
_zcl_attribute: str = "valve_detection"
_attr_name = "Valve detection"
@ -531,9 +523,10 @@ class AqaraThermostatValveDetection(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
)
class AqaraThermostatChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
class AqaraThermostatChildLock(ZHASwitchConfigurationEntity):
"""Representation of an Aqara thermostat child lock configuration entity."""
_unique_id_suffix = "child_lock"
_zcl_attribute: str = "child_lock"
_attr_name = "Child lock"
_attr_icon: str = "mdi:account-lock"
@ -542,11 +535,10 @@ class AqaraThermostatChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lo
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
)
class AqaraHeartbeatIndicator(
ZHASwitchConfigurationEntity, id_suffix="heartbeat_indicator"
):
class AqaraHeartbeatIndicator(ZHASwitchConfigurationEntity):
"""Representation of a heartbeat indicator configuration entity for Aqara smoke sensors."""
_unique_id_suffix = "heartbeat_indicator"
_zcl_attribute: str = "heartbeat_indicator"
_attr_name = "Heartbeat indicator"
_attr_icon: str = "mdi:heart-flash"
@ -555,9 +547,10 @@ class AqaraHeartbeatIndicator(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
)
class AqaraLinkageAlarm(ZHASwitchConfigurationEntity, id_suffix="linkage_alarm"):
class AqaraLinkageAlarm(ZHASwitchConfigurationEntity):
"""Representation of a linkage alarm configuration entity for Aqara smoke sensors."""
_unique_id_suffix = "linkage_alarm"
_zcl_attribute: str = "linkage_alarm"
_attr_name = "Linkage alarm"
_attr_icon: str = "mdi:shield-link-variant"
@ -566,11 +559,10 @@ class AqaraLinkageAlarm(ZHASwitchConfigurationEntity, id_suffix="linkage_alarm")
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
)
class AqaraBuzzerManualMute(
ZHASwitchConfigurationEntity, id_suffix="buzzer_manual_mute"
):
class AqaraBuzzerManualMute(ZHASwitchConfigurationEntity):
"""Representation of a buzzer manual mute configuration entity for Aqara smoke sensors."""
_unique_id_suffix = "buzzer_manual_mute"
_zcl_attribute: str = "buzzer_manual_mute"
_attr_name = "Buzzer manual mute"
_attr_icon: str = "mdi:volume-off"
@ -579,11 +571,10 @@ class AqaraBuzzerManualMute(
@CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
)
class AqaraBuzzerManualAlarm(
ZHASwitchConfigurationEntity, id_suffix="buzzer_manual_alarm"
):
class AqaraBuzzerManualAlarm(ZHASwitchConfigurationEntity):
"""Representation of a buzzer manual mute configuration entity for Aqara smoke sensors."""
_unique_id_suffix = "buzzer_manual_alarm"
_zcl_attribute: str = "buzzer_manual_alarm"
_attr_name = "Buzzer manual alarm"
_attr_icon: str = "mdi:bullhorn"