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

View File

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

View File

@ -46,15 +46,18 @@ DEFAULT_UPDATE_GROUP_FROM_CHILD_DELAY = 0.5
class BaseZhaEntity(LogMixin, entity.Entity): class BaseZhaEntity(LogMixin, entity.Entity):
"""A base class for ZHA entities.""" """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_has_entity_name = True
_attr_should_poll = False _attr_should_poll = False
def __init__(self, unique_id: str, zha_device: ZHADevice, **kwargs: Any) -> None: def __init__(self, unique_id: str, zha_device: ZHADevice, **kwargs: Any) -> None:
"""Init ZHA entity.""" """Init ZHA entity."""
self._unique_id: str = unique_id self._unique_id: str = unique_id
if self.unique_id_suffix: if self._unique_id_suffix:
self._unique_id += f"-{self.unique_id_suffix}" self._unique_id += f"-{self._unique_id_suffix}"
self._state: Any = None self._state: Any = None
self._extra_state_attributes: dict[str, Any] = {} self._extra_state_attributes: dict[str, Any] = {}
self._zha_device = zha_device self._zha_device = zha_device
@ -144,16 +147,6 @@ class ZhaEntity(BaseZhaEntity, RestoreEntity):
remove_future: asyncio.Future[Any] 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__( def __init__(
self, self,
unique_id: str, unique_id: str,

View File

@ -452,11 +452,10 @@ class ZHANumberConfigurationEntity(ZhaEntity, NumberEntity):
models={"lumi.motion.ac02", "lumi.motion.agl04"}, models={"lumi.motion.ac02", "lumi.motion.agl04"},
) )
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraMotionDetectionInterval( class AqaraMotionDetectionInterval(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="detection_interval"
):
"""Representation of a ZHA motion detection interval configuration entity.""" """Representation of a ZHA motion detection interval configuration entity."""
_unique_id_suffix = "detection_interval"
_attr_native_min_value: float = 2 _attr_native_min_value: float = 2
_attr_native_max_value: float = 65535 _attr_native_max_value: float = 65535
_zcl_attribute: str = "detection_interval" _zcl_attribute: str = "detection_interval"
@ -465,11 +464,10 @@ class AqaraMotionDetectionInterval(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class OnOffTransitionTimeConfigurationEntity( class OnOffTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="on_off_transition_time"
):
"""Representation of a ZHA on off transition time configuration entity.""" """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_min_value: float = 0x0000
_attr_native_max_value: float = 0xFFFF _attr_native_max_value: float = 0xFFFF
_zcl_attribute: str = "on_off_transition_time" _zcl_attribute: str = "on_off_transition_time"
@ -478,9 +476,10 @@ class OnOffTransitionTimeConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # 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.""" """Representation of a ZHA on level configuration entity."""
_unique_id_suffix = "on_level"
_attr_native_min_value: float = 0x00 _attr_native_min_value: float = 0x00
_attr_native_max_value: float = 0xFF _attr_native_max_value: float = 0xFF
_zcl_attribute: str = "on_level" _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) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class OnTransitionTimeConfigurationEntity( class OnTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="on_transition_time"
):
"""Representation of a ZHA on transition time configuration entity.""" """Representation of a ZHA on transition time configuration entity."""
_unique_id_suffix = "on_transition_time"
_attr_native_min_value: float = 0x0000 _attr_native_min_value: float = 0x0000
_attr_native_max_value: float = 0xFFFE _attr_native_max_value: float = 0xFFFE
_zcl_attribute: str = "on_transition_time" _zcl_attribute: str = "on_transition_time"
@ -502,11 +500,10 @@ class OnTransitionTimeConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class OffTransitionTimeConfigurationEntity( class OffTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="off_transition_time"
):
"""Representation of a ZHA off transition time configuration entity.""" """Representation of a ZHA off transition time configuration entity."""
_unique_id_suffix = "off_transition_time"
_attr_native_min_value: float = 0x0000 _attr_native_min_value: float = 0x0000
_attr_native_max_value: float = 0xFFFE _attr_native_max_value: float = 0xFFFE
_zcl_attribute: str = "off_transition_time" _zcl_attribute: str = "off_transition_time"
@ -515,11 +512,10 @@ class OffTransitionTimeConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class DefaultMoveRateConfigurationEntity( class DefaultMoveRateConfigurationEntity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="default_move_rate"
):
"""Representation of a ZHA default move rate configuration entity.""" """Representation of a ZHA default move rate configuration entity."""
_unique_id_suffix = "default_move_rate"
_attr_native_min_value: float = 0x00 _attr_native_min_value: float = 0x00
_attr_native_max_value: float = 0xFE _attr_native_max_value: float = 0xFE
_zcl_attribute: str = "default_move_rate" _zcl_attribute: str = "default_move_rate"
@ -528,11 +524,10 @@ class DefaultMoveRateConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class StartUpCurrentLevelConfigurationEntity( class StartUpCurrentLevelConfigurationEntity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="start_up_current_level"
):
"""Representation of a ZHA startup current level configuration entity.""" """Representation of a ZHA startup current level configuration entity."""
_unique_id_suffix = "start_up_current_level"
_attr_native_min_value: float = 0x00 _attr_native_min_value: float = 0x00
_attr_native_max_value: float = 0xFF _attr_native_max_value: float = 0xFF
_zcl_attribute: str = "start_up_current_level" _zcl_attribute: str = "start_up_current_level"
@ -541,11 +536,10 @@ class StartUpCurrentLevelConfigurationEntity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_COLOR) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_COLOR)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class StartUpColorTemperatureConfigurationEntity( class StartUpColorTemperatureConfigurationEntity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="start_up_color_temperature"
):
"""Representation of a ZHA startup color temperature configuration entity.""" """Representation of a ZHA startup color temperature configuration entity."""
_unique_id_suffix = "start_up_color_temperature"
_attr_native_min_value: float = 153 _attr_native_min_value: float = 153
_attr_native_max_value: float = 500 _attr_native_max_value: float = 500
_zcl_attribute: str = "start_up_color_temperature" _zcl_attribute: str = "start_up_color_temperature"
@ -572,9 +566,10 @@ class StartUpColorTemperatureConfigurationEntity(
}, },
) )
# pylint: disable-next=hass-invalid-inheritance # needs fixing # 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.""" """Representation of a ZHA timer duration configuration entity."""
_unique_id_suffix = "timer_duration"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14] _attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0x00 _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") @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names="ikea_airpurifier")
# pylint: disable-next=hass-invalid-inheritance # needs fixing # 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.""" """Representation of a ZHA filter lifetime configuration entity."""
_unique_id_suffix = "filter_life_time"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14] _attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0x00 _attr_native_min_value: float = 0x00
@ -604,9 +600,10 @@ class FilterLifeTime(ZHANumberConfigurationEntity, id_suffix="filter_life_time")
models={"ti.router"}, models={"ti.router"},
) )
# pylint: disable-next=hass-invalid-inheritance # needs fixing # 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.""" """Representation of a ZHA TI transmit power configuration entity."""
_unique_id_suffix = "transmit_power"
_attr_native_min_value: float = -20 _attr_native_min_value: float = -20
_attr_native_max_value: float = 20 _attr_native_max_value: float = 20
_zcl_attribute: str = "transmit_power" _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) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingUpSpeed( class InovelliRemoteDimmingUpSpeed(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="dimming_speed_up_remote"
):
"""Inovelli remote dimming up speed configuration entity.""" """Inovelli remote dimming up speed configuration entity."""
_unique_id_suffix = "dimming_speed_up_remote"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -630,9 +626,10 @@ class InovelliRemoteDimmingUpSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliButtonDelay(ZHANumberConfigurationEntity, id_suffix="button_delay"): class InovelliButtonDelay(ZHANumberConfigurationEntity):
"""Inovelli button delay configuration entity.""" """Inovelli button delay configuration entity."""
_unique_id_suffix = "dimming_speed_up_local"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _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) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalDimmingUpSpeed( class InovelliLocalDimmingUpSpeed(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="dimming_speed_up_local"
):
"""Inovelli local dimming up speed configuration entity.""" """Inovelli local dimming up speed configuration entity."""
_unique_id_suffix = "dimming_speed_up_local"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -658,11 +654,10 @@ class InovelliLocalDimmingUpSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalRampRateOffToOn( class InovelliLocalRampRateOffToOn(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="ramp_rate_off_to_on_local"
):
"""Inovelli off to on local ramp rate configuration entity.""" """Inovelli off to on local ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_off_to_on_local"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -673,11 +668,10 @@ class InovelliLocalRampRateOffToOn(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingSpeedOffToOn( class InovelliRemoteDimmingSpeedOffToOn(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="ramp_rate_off_to_on_remote"
):
"""Inovelli off to on remote ramp rate configuration entity.""" """Inovelli off to on remote ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_off_to_on_remote"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -688,11 +682,10 @@ class InovelliRemoteDimmingSpeedOffToOn(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingDownSpeed( class InovelliRemoteDimmingDownSpeed(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="dimming_speed_down_remote"
):
"""Inovelli remote dimming down speed configuration entity.""" """Inovelli remote dimming down speed configuration entity."""
_unique_id_suffix = "dimming_speed_down_remote"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -703,11 +696,10 @@ class InovelliRemoteDimmingDownSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalDimmingDownSpeed( class InovelliLocalDimmingDownSpeed(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="dimming_speed_down_local"
):
"""Inovelli local dimming down speed configuration entity.""" """Inovelli local dimming down speed configuration entity."""
_unique_id_suffix = "dimming_speed_down_local"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -718,11 +710,10 @@ class InovelliLocalDimmingDownSpeed(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLocalRampRateOnToOff( class InovelliLocalRampRateOnToOff(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="ramp_rate_on_to_off_local"
):
"""Inovelli local on to off ramp rate configuration entity.""" """Inovelli local on to off ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_on_to_off_local"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -733,11 +724,10 @@ class InovelliLocalRampRateOnToOff(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliRemoteDimmingSpeedOnToOff( class InovelliRemoteDimmingSpeedOnToOff(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="ramp_rate_on_to_off_remote"
):
"""Inovelli remote on to off ramp rate configuration entity.""" """Inovelli remote on to off ramp rate configuration entity."""
_unique_id_suffix = "ramp_rate_on_to_off_remote"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[3] _attr_icon: str = ICONS[3]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -748,11 +738,10 @@ class InovelliRemoteDimmingSpeedOnToOff(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliMinimumLoadDimmingLevel( class InovelliMinimumLoadDimmingLevel(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="minimum_level"
):
"""Inovelli minimum load dimming level configuration entity.""" """Inovelli minimum load dimming level configuration entity."""
_unique_id_suffix = "minimum_level"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16] _attr_icon: str = ICONS[16]
_attr_native_min_value: float = 1 _attr_native_min_value: float = 1
@ -763,11 +752,10 @@ class InovelliMinimumLoadDimmingLevel(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliMaximumLoadDimmingLevel( class InovelliMaximumLoadDimmingLevel(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="maximum_level"
):
"""Inovelli maximum load dimming level configuration entity.""" """Inovelli maximum load dimming level configuration entity."""
_unique_id_suffix = "maximum_level"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16] _attr_icon: str = ICONS[16]
_attr_native_min_value: float = 2 _attr_native_min_value: float = 2
@ -778,11 +766,10 @@ class InovelliMaximumLoadDimmingLevel(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliAutoShutoffTimer( class InovelliAutoShutoffTimer(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="auto_off_timer"
):
"""Inovelli automatic switch shutoff timer configuration entity.""" """Inovelli automatic switch shutoff timer configuration entity."""
_unique_id_suffix = "auto_off_timer"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14] _attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -793,11 +780,10 @@ class InovelliAutoShutoffTimer(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliLoadLevelIndicatorTimeout( class InovelliLoadLevelIndicatorTimeout(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="load_level_indicator_timeout"
):
"""Inovelli load level indicator timeout configuration entity.""" """Inovelli load level indicator timeout configuration entity."""
_unique_id_suffix = "load_level_indicator_timeout"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[14] _attr_icon: str = ICONS[14]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -808,11 +794,10 @@ class InovelliLoadLevelIndicatorTimeout(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOnColor( class InovelliDefaultAllLEDOnColor(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="led_color_when_on"
):
"""Inovelli default all led color when on configuration entity.""" """Inovelli default all led color when on configuration entity."""
_unique_id_suffix = "led_color_when_on"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[15] _attr_icon: str = ICONS[15]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -823,11 +808,10 @@ class InovelliDefaultAllLEDOnColor(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOffColor( class InovelliDefaultAllLEDOffColor(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="led_color_when_off"
):
"""Inovelli default all led color when off configuration entity.""" """Inovelli default all led color when off configuration entity."""
_unique_id_suffix = "led_color_when_off"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[15] _attr_icon: str = ICONS[15]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -838,11 +822,10 @@ class InovelliDefaultAllLEDOffColor(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOnIntensity( class InovelliDefaultAllLEDOnIntensity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="led_intensity_when_on"
):
"""Inovelli default all led intensity when on configuration entity.""" """Inovelli default all led intensity when on configuration entity."""
_unique_id_suffix = "led_intensity_when_on"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16] _attr_icon: str = ICONS[16]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -853,11 +836,10 @@ class InovelliDefaultAllLEDOnIntensity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDefaultAllLEDOffIntensity( class InovelliDefaultAllLEDOffIntensity(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="led_intensity_when_off"
):
"""Inovelli default all led intensity when off configuration entity.""" """Inovelli default all led intensity when off configuration entity."""
_unique_id_suffix = "led_intensity_when_off"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16] _attr_icon: str = ICONS[16]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -868,11 +850,10 @@ class InovelliDefaultAllLEDOffIntensity(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDoubleTapUpLevel( class InovelliDoubleTapUpLevel(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="double_tap_up_level"
):
"""Inovelli double tap up level configuration entity.""" """Inovelli double tap up level configuration entity."""
_unique_id_suffix = "double_tap_up_level"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16] _attr_icon: str = ICONS[16]
_attr_native_min_value: float = 2 _attr_native_min_value: float = 2
@ -883,11 +864,10 @@ class InovelliDoubleTapUpLevel(
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class InovelliDoubleTapDownLevel( class InovelliDoubleTapDownLevel(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="double_tap_down_level"
):
"""Inovelli double tap down level configuration entity.""" """Inovelli double tap down level configuration entity."""
_unique_id_suffix = "double_tap_down_level"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_icon: str = ICONS[16] _attr_icon: str = ICONS[16]
_attr_native_min_value: float = 0 _attr_native_min_value: float = 0
@ -900,9 +880,10 @@ class InovelliDoubleTapDownLevel(
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"} cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
) )
# pylint: disable-next=hass-invalid-inheritance # needs fixing # 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.""" """Aqara pet feeder serving size configuration entity."""
_unique_id_suffix = "serving_size"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_native_min_value: float = 1 _attr_native_min_value: float = 1
_attr_native_max_value: float = 10 _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"} cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
) )
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraPetFeederPortionWeight( class AqaraPetFeederPortionWeight(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="portion_weight"
):
"""Aqara pet feeder portion weight configuration entity.""" """Aqara pet feeder portion weight configuration entity."""
_unique_id_suffix = "portion_weight"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_native_min_value: float = 1 _attr_native_min_value: float = 1
_attr_native_max_value: float = 100 _attr_native_max_value: float = 100
@ -935,11 +915,10 @@ class AqaraPetFeederPortionWeight(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"} cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
) )
# pylint: disable-next=hass-invalid-inheritance # needs fixing # pylint: disable-next=hass-invalid-inheritance # needs fixing
class AqaraThermostatAwayTemp( class AqaraThermostatAwayTemp(ZHANumberConfigurationEntity):
ZHANumberConfigurationEntity, id_suffix="away_preset_temperature"
):
"""Aqara away preset temperature configuration entity.""" """Aqara away preset temperature configuration entity."""
_unique_id_suffix = "away_preset_temperature"
_attr_entity_category = EntityCategory.CONFIG _attr_entity_category = EntityCategory.CONFIG
_attr_native_min_value: float = 5 _attr_native_min_value: float = 5
_attr_native_max_value: float = 30 _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) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
class ZHADefaultToneSelectEntity( class ZHADefaultToneSelectEntity(ZHANonZCLSelectEntity):
ZHANonZCLSelectEntity, id_suffix=IasWd.Warning.WarningMode.__name__
):
"""Representation of a ZHA default siren tone select entity.""" """Representation of a ZHA default siren tone select entity."""
_unique_id_suffix = IasWd.Warning.WarningMode.__name__
_enum = IasWd.Warning.WarningMode _enum = IasWd.Warning.WarningMode
_attr_name = "Default siren tone" _attr_name = "Default siren tone"
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
class ZHADefaultSirenLevelSelectEntity( class ZHADefaultSirenLevelSelectEntity(ZHANonZCLSelectEntity):
ZHANonZCLSelectEntity, id_suffix=IasWd.Warning.SirenLevel.__name__
):
"""Representation of a ZHA default siren level select entity.""" """Representation of a ZHA default siren level select entity."""
_unique_id_suffix = IasWd.Warning.SirenLevel.__name__
_enum = IasWd.Warning.SirenLevel _enum = IasWd.Warning.SirenLevel
_attr_name = "Default siren level" _attr_name = "Default siren level"
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
class ZHADefaultStrobeLevelSelectEntity( class ZHADefaultStrobeLevelSelectEntity(ZHANonZCLSelectEntity):
ZHANonZCLSelectEntity, id_suffix=IasWd.StrobeLevel.__name__
):
"""Representation of a ZHA default siren strobe level select entity.""" """Representation of a ZHA default siren strobe level select entity."""
_unique_id_suffix = IasWd.StrobeLevel.__name__
_enum = IasWd.StrobeLevel _enum = IasWd.StrobeLevel
_attr_name = "Default strobe level" _attr_name = "Default strobe level"
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD) @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.""" """Representation of a ZHA default siren strobe select entity."""
_unique_id_suffix = Strobe.__name__
_enum = Strobe _enum = Strobe
_attr_name = "Default strobe" _attr_name = "Default strobe"
@ -230,11 +228,10 @@ class ZCLEnumSelectEntity(ZhaEntity, SelectEntity):
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_ON_OFF) @CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_ON_OFF)
class ZHAStartupOnOffSelectEntity( class ZHAStartupOnOffSelectEntity(ZCLEnumSelectEntity):
ZCLEnumSelectEntity, id_suffix=OnOff.StartUpOnOff.__name__
):
"""Representation of a ZHA startup onoff select entity.""" """Representation of a ZHA startup onoff select entity."""
_unique_id_suffix = OnOff.StartUpOnOff.__name__
_select_attr = "start_up_on_off" _select_attr = "start_up_on_off"
_enum = OnOff.StartUpOnOff _enum = OnOff.StartUpOnOff
_attr_name = "Start-up behavior" _attr_name = "Start-up behavior"
@ -273,9 +270,10 @@ class TuyaPowerOnState(types.enum8):
"_TZE200_9mahtqtg", "_TZE200_9mahtqtg",
}, },
) )
class TuyaPowerOnStateSelectEntity(ZCLEnumSelectEntity, id_suffix="power_on_state"): class TuyaPowerOnStateSelectEntity(ZCLEnumSelectEntity):
"""Representation of a ZHA power on state select entity.""" """Representation of a ZHA power on state select entity."""
_unique_id_suffix = "power_on_state"
_select_attr = "power_on_state" _select_attr = "power_on_state"
_enum = TuyaPowerOnState _enum = TuyaPowerOnState
_attr_name = "Power on state" _attr_name = "Power on state"
@ -293,9 +291,10 @@ class TuyaBacklightMode(types.enum8):
cluster_handler_names=CLUSTER_HANDLER_ON_OFF, cluster_handler_names=CLUSTER_HANDLER_ON_OFF,
models={"TS011F", "TS0121", "TS0001", "TS0002", "TS0003", "TS0004"}, 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.""" """Representation of a ZHA backlight mode select entity."""
_unique_id_suffix = "backlight_mode"
_select_attr = "backlight_mode" _select_attr = "backlight_mode"
_enum = TuyaBacklightMode _enum = TuyaBacklightMode
_attr_name = "Backlight mode" _attr_name = "Backlight mode"
@ -331,9 +330,10 @@ class MoesBacklightMode(types.enum8):
"_TZE200_9mahtqtg", "_TZE200_9mahtqtg",
}, },
) )
class MoesBacklightModeSelectEntity(ZCLEnumSelectEntity, id_suffix="backlight_mode"): class MoesBacklightModeSelectEntity(ZCLEnumSelectEntity):
"""Moes devices have a different backlight mode select options.""" """Moes devices have a different backlight mode select options."""
_unique_id_suffix = "backlight_mode"
_select_attr = "backlight_mode" _select_attr = "backlight_mode"
_enum = MoesBacklightMode _enum = MoesBacklightMode
_attr_name = "Backlight mode" _attr_name = "Backlight mode"
@ -351,9 +351,10 @@ class AqaraMotionSensitivities(types.enum8):
cluster_handler_names="opple_cluster", cluster_handler_names="opple_cluster",
models={"lumi.motion.ac01", "lumi.motion.ac02", "lumi.motion.agl04"}, 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.""" """Representation of a ZHA motion sensitivity configuration entity."""
_unique_id_suffix = "motion_sensitivity"
_select_attr = "motion_sensitivity" _select_attr = "motion_sensitivity"
_enum = AqaraMotionSensitivities _enum = AqaraMotionSensitivities
_attr_name = "Motion sensitivity" _attr_name = "Motion sensitivity"
@ -372,9 +373,10 @@ class HueV1MotionSensitivities(types.enum8):
manufacturers={"Philips", "Signify Netherlands B.V."}, manufacturers={"Philips", "Signify Netherlands B.V."},
models={"SML001"}, models={"SML001"},
) )
class HueV1MotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"): class HueV1MotionSensitivity(ZCLEnumSelectEntity):
"""Representation of a ZHA motion sensitivity configuration entity.""" """Representation of a ZHA motion sensitivity configuration entity."""
_unique_id_suffix = "motion_sensitivity"
_select_attr = "sensitivity" _select_attr = "sensitivity"
_attr_name = "Hue motion sensitivity" _attr_name = "Hue motion sensitivity"
_enum = HueV1MotionSensitivities _enum = HueV1MotionSensitivities
@ -395,9 +397,10 @@ class HueV2MotionSensitivities(types.enum8):
manufacturers={"Philips", "Signify Netherlands B.V."}, manufacturers={"Philips", "Signify Netherlands B.V."},
models={"SML002", "SML003", "SML004"}, models={"SML002", "SML003", "SML004"},
) )
class HueV2MotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"): class HueV2MotionSensitivity(ZCLEnumSelectEntity):
"""Representation of a ZHA motion sensitivity configuration entity.""" """Representation of a ZHA motion sensitivity configuration entity."""
_unique_id_suffix = "motion_sensitivity"
_select_attr = "sensitivity" _select_attr = "sensitivity"
_attr_name = "Hue motion sensitivity" _attr_name = "Hue motion sensitivity"
_enum = HueV2MotionSensitivities _enum = HueV2MotionSensitivities
@ -413,9 +416,10 @@ class AqaraMonitoringModess(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"} 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.""" """Representation of a ZHA monitoring mode configuration entity."""
_unique_id_suffix = "monitoring_mode"
_select_attr = "monitoring_mode" _select_attr = "monitoring_mode"
_enum = AqaraMonitoringModess _enum = AqaraMonitoringModess
_attr_name = "Monitoring mode" _attr_name = "Monitoring mode"
@ -432,9 +436,10 @@ class AqaraApproachDistances(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"} 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.""" """Representation of a ZHA approach distance configuration entity."""
_unique_id_suffix = "approach_distance"
_select_attr = "approach_distance" _select_attr = "approach_distance"
_enum = AqaraApproachDistances _enum = AqaraApproachDistances
_attr_name = "Approach distance" _attr_name = "Approach distance"
@ -450,9 +455,10 @@ class AqaraE1ReverseDirection(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="window_covering", models={"lumi.curtain.agl001"} 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.""" """Representation of a ZHA curtain mode configuration entity."""
_unique_id_suffix = "window_covering_mode"
_select_attr = "window_covering_mode" _select_attr = "window_covering_mode"
_enum = AqaraE1ReverseDirection _enum = AqaraE1ReverseDirection
_attr_name = "Curtain mode" _attr_name = "Curtain mode"
@ -468,9 +474,10 @@ class InovelliOutputMode(types.enum1):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI, cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
) )
class InovelliOutputModeEntity(ZCLEnumSelectEntity, id_suffix="output_mode"): class InovelliOutputModeEntity(ZCLEnumSelectEntity):
"""Inovelli output mode control.""" """Inovelli output mode control."""
_unique_id_suffix = "output_mode"
_select_attr = "output_mode" _select_attr = "output_mode"
_enum = InovelliOutputMode _enum = InovelliOutputMode
_attr_name: str = "Output mode" _attr_name: str = "Output mode"
@ -488,9 +495,10 @@ class InovelliSwitchType(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI, cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
) )
class InovelliSwitchTypeEntity(ZCLEnumSelectEntity, id_suffix="switch_type"): class InovelliSwitchTypeEntity(ZCLEnumSelectEntity):
"""Inovelli switch type control.""" """Inovelli switch type control."""
_unique_id_suffix = "switch_type"
_select_attr = "switch_type" _select_attr = "switch_type"
_enum = InovelliSwitchType _enum = InovelliSwitchType
_attr_name: str = "Switch type" _attr_name: str = "Switch type"
@ -506,9 +514,10 @@ class InovelliLedScalingMode(types.enum1):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI, cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
) )
class InovelliLedScalingModeEntity(ZCLEnumSelectEntity, id_suffix="led_scaling_mode"): class InovelliLedScalingModeEntity(ZCLEnumSelectEntity):
"""Inovelli led mode control.""" """Inovelli led mode control."""
_unique_id_suffix = "led_scaling_mode"
_select_attr = "led_scaling_mode" _select_attr = "led_scaling_mode"
_enum = InovelliLedScalingMode _enum = InovelliLedScalingMode
_attr_name: str = "Led scaling mode" _attr_name: str = "Led scaling mode"
@ -524,11 +533,10 @@ class InovelliNonNeutralOutput(types.enum1):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names=CLUSTER_HANDLER_INOVELLI, cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
) )
class InovelliNonNeutralOutputEntity( class InovelliNonNeutralOutputEntity(ZCLEnumSelectEntity):
ZCLEnumSelectEntity, id_suffix="increased_non_neutral_output"
):
"""Inovelli non neutral output control.""" """Inovelli non neutral output control."""
_unique_id_suffix = "increased_non_neutral_output"
_select_attr = "increased_non_neutral_output" _select_attr = "increased_non_neutral_output"
_enum = InovelliNonNeutralOutput _enum = InovelliNonNeutralOutput
_attr_name: str = "Non neutral output" _attr_name: str = "Non neutral output"
@ -544,9 +552,10 @@ class AqaraFeedingMode(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"} 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.""" """Representation of an Aqara pet feeder mode configuration entity."""
_unique_id_suffix = "feeding_mode"
_select_attr = "feeding_mode" _select_attr = "feeding_mode"
_enum = AqaraFeedingMode _enum = AqaraFeedingMode
_attr_name = "Mode" _attr_name = "Mode"
@ -564,9 +573,10 @@ class AqaraThermostatPresetMode(types.enum8):
@CONFIG_DIAGNOSTIC_MATCH( @CONFIG_DIAGNOSTIC_MATCH(
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"} 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.""" """Representation of an Aqara thermostat preset configuration entity."""
_unique_id_suffix = "preset"
_select_attr = "preset" _select_attr = "preset"
_enum = AqaraThermostatPresetMode _enum = AqaraThermostatPresetMode
_attr_name = "Preset" _attr_name = "Preset"

View File

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

View File

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