Remove class argument in favor of class variables (zha) (#102117)
* Drop id_suffix class argument * Use lowecase attributepull/102139/head
parent
f891fb6b41
commit
6d457e808f
|
@ -252,29 +252,32 @@ class SinopeLeakStatus(BinarySensor):
|
|||
"_TZE200_htnnfasr",
|
||||
},
|
||||
)
|
||||
class FrostLock(BinarySensor, id_suffix="frost_lock"):
|
||||
class FrostLock(BinarySensor):
|
||||
"""ZHA BinarySensor."""
|
||||
|
||||
SENSOR_ATTR = "frost_lock"
|
||||
_unique_id_suffix = "frost_lock"
|
||||
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.LOCK
|
||||
_attr_name: str = "Frost lock"
|
||||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names="ikea_airpurifier")
|
||||
class ReplaceFilter(BinarySensor, id_suffix="replace_filter"):
|
||||
class ReplaceFilter(BinarySensor):
|
||||
"""ZHA BinarySensor."""
|
||||
|
||||
SENSOR_ATTR = "replace_filter"
|
||||
_unique_id_suffix = "replace_filter"
|
||||
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PROBLEM
|
||||
_attr_entity_category: EntityCategory = EntityCategory.DIAGNOSTIC
|
||||
_attr_name: str = "Replace filter"
|
||||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
|
||||
class AqaraPetFeederErrorDetected(BinarySensor, id_suffix="error_detected"):
|
||||
class AqaraPetFeederErrorDetected(BinarySensor):
|
||||
"""ZHA aqara pet feeder error detected binary sensor."""
|
||||
|
||||
SENSOR_ATTR = "error_detected"
|
||||
_unique_id_suffix = "error_detected"
|
||||
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PROBLEM
|
||||
_attr_name: str = "Error detected"
|
||||
|
||||
|
@ -283,28 +286,31 @@ class AqaraPetFeederErrorDetected(BinarySensor, id_suffix="error_detected"):
|
|||
cluster_handler_names="opple_cluster",
|
||||
models={"lumi.plug.mmeu01", "lumi.plug.maeu01"},
|
||||
)
|
||||
class XiaomiPlugConsumerConnected(BinarySensor, id_suffix="consumer_connected"):
|
||||
class XiaomiPlugConsumerConnected(BinarySensor):
|
||||
"""ZHA Xiaomi plug consumer connected binary sensor."""
|
||||
|
||||
SENSOR_ATTR = "consumer_connected"
|
||||
_unique_id_suffix = "consumer_connected"
|
||||
_attr_name: str = "Consumer connected"
|
||||
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PLUG
|
||||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"})
|
||||
class AqaraThermostatWindowOpen(BinarySensor, id_suffix="window_open"):
|
||||
class AqaraThermostatWindowOpen(BinarySensor):
|
||||
"""ZHA Aqara thermostat window open binary sensor."""
|
||||
|
||||
SENSOR_ATTR = "window_open"
|
||||
_unique_id_suffix = "window_open"
|
||||
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.WINDOW
|
||||
_attr_name: str = "Window open"
|
||||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"})
|
||||
class AqaraThermostatValveAlarm(BinarySensor, id_suffix="valve_alarm"):
|
||||
class AqaraThermostatValveAlarm(BinarySensor):
|
||||
"""ZHA Aqara thermostat valve alarm binary sensor."""
|
||||
|
||||
SENSOR_ATTR = "valve_alarm"
|
||||
_unique_id_suffix = "valve_alarm"
|
||||
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PROBLEM
|
||||
_attr_name: str = "Valve alarm"
|
||||
|
||||
|
@ -312,10 +318,11 @@ class AqaraThermostatValveAlarm(BinarySensor, id_suffix="valve_alarm"):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
|
||||
)
|
||||
class AqaraThermostatCalibrated(BinarySensor, id_suffix="calibrated"):
|
||||
class AqaraThermostatCalibrated(BinarySensor):
|
||||
"""ZHA Aqara thermostat calibrated binary sensor."""
|
||||
|
||||
SENSOR_ATTR = "calibrated"
|
||||
_unique_id_suffix = "calibrated"
|
||||
_attr_entity_category: EntityCategory = EntityCategory.DIAGNOSTIC
|
||||
_attr_name: str = "Calibrated"
|
||||
|
||||
|
@ -323,18 +330,20 @@ class AqaraThermostatCalibrated(BinarySensor, id_suffix="calibrated"):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
|
||||
)
|
||||
class AqaraThermostatExternalSensor(BinarySensor, id_suffix="sensor"):
|
||||
class AqaraThermostatExternalSensor(BinarySensor):
|
||||
"""ZHA Aqara thermostat external sensor binary sensor."""
|
||||
|
||||
SENSOR_ATTR = "sensor"
|
||||
_unique_id_suffix = "sensor"
|
||||
_attr_entity_category: EntityCategory = EntityCategory.DIAGNOSTIC
|
||||
_attr_name: str = "External sensor"
|
||||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"})
|
||||
class AqaraLinkageAlarmState(BinarySensor, id_suffix="linkage_alarm_state"):
|
||||
class AqaraLinkageAlarmState(BinarySensor):
|
||||
"""ZHA Aqara linkage alarm state binary sensor."""
|
||||
|
||||
SENSOR_ATTR = "linkage_alarm_state"
|
||||
_unique_id_suffix = "linkage_alarm_state"
|
||||
_attr_name: str = "Linkage alarm state"
|
||||
_attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.SMOKE
|
||||
|
|
|
@ -145,9 +145,10 @@ class ZHAAttributeButton(ZhaEntity, ButtonEntity):
|
|||
"_TZE200_htnnfasr",
|
||||
},
|
||||
)
|
||||
class FrostLockResetButton(ZHAAttributeButton, id_suffix="reset_frost_lock"):
|
||||
class FrostLockResetButton(ZHAAttributeButton):
|
||||
"""Defines a ZHA frost lock reset button."""
|
||||
|
||||
_unique_id_suffix = "reset_frost_lock"
|
||||
_attribute_name = "frost_lock_reset"
|
||||
_attr_name = "Frost lock reset"
|
||||
_attribute_value = 0
|
||||
|
@ -158,11 +159,10 @@ class FrostLockResetButton(ZHAAttributeButton, id_suffix="reset_frost_lock"):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"}
|
||||
)
|
||||
class NoPresenceStatusResetButton(
|
||||
ZHAAttributeButton, id_suffix="reset_no_presence_status"
|
||||
):
|
||||
class NoPresenceStatusResetButton(ZHAAttributeButton):
|
||||
"""Defines a ZHA no presence status reset button."""
|
||||
|
||||
_unique_id_suffix = "reset_no_presence_status"
|
||||
_attribute_name = "reset_no_presence_status"
|
||||
_attr_name = "Presence status reset"
|
||||
_attribute_value = 1
|
||||
|
@ -171,9 +171,10 @@ class NoPresenceStatusResetButton(
|
|||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
|
||||
class AqaraPetFeederFeedButton(ZHAAttributeButton, id_suffix="feeding"):
|
||||
class AqaraPetFeederFeedButton(ZHAAttributeButton):
|
||||
"""Defines a feed button for the aqara c1 pet feeder."""
|
||||
|
||||
_unique_id_suffix = "feeding"
|
||||
_attribute_name = "feeding"
|
||||
_attr_name = "Feed"
|
||||
_attribute_value = 1
|
||||
|
@ -182,9 +183,10 @@ class AqaraPetFeederFeedButton(ZHAAttributeButton, id_suffix="feeding"):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
|
||||
)
|
||||
class AqaraSelfTestButton(ZHAAttributeButton, id_suffix="self_test"):
|
||||
class AqaraSelfTestButton(ZHAAttributeButton):
|
||||
"""Defines a ZHA self-test button for Aqara smoke sensors."""
|
||||
|
||||
_unique_id_suffix = "self_test"
|
||||
_attribute_name = "self_test"
|
||||
_attr_name = "Self-test"
|
||||
_attribute_value = 1
|
||||
|
|
|
@ -46,15 +46,18 @@ DEFAULT_UPDATE_GROUP_FROM_CHILD_DELAY = 0.5
|
|||
class BaseZhaEntity(LogMixin, entity.Entity):
|
||||
"""A base class for ZHA entities."""
|
||||
|
||||
unique_id_suffix: str | None = None
|
||||
_unique_id_suffix: str | None = None
|
||||
"""suffix to add to the unique_id of the entity. Used for multi
|
||||
entities using the same cluster handler/cluster id for the entity."""
|
||||
|
||||
_attr_has_entity_name = True
|
||||
_attr_should_poll = False
|
||||
|
||||
def __init__(self, unique_id: str, zha_device: ZHADevice, **kwargs: Any) -> None:
|
||||
"""Init ZHA entity."""
|
||||
self._unique_id: str = unique_id
|
||||
if self.unique_id_suffix:
|
||||
self._unique_id += f"-{self.unique_id_suffix}"
|
||||
if self._unique_id_suffix:
|
||||
self._unique_id += f"-{self._unique_id_suffix}"
|
||||
self._state: Any = None
|
||||
self._extra_state_attributes: dict[str, Any] = {}
|
||||
self._zha_device = zha_device
|
||||
|
@ -144,16 +147,6 @@ class ZhaEntity(BaseZhaEntity, RestoreEntity):
|
|||
|
||||
remove_future: asyncio.Future[Any]
|
||||
|
||||
def __init_subclass__(cls, id_suffix: str | None = None, **kwargs: Any) -> None:
|
||||
"""Initialize subclass.
|
||||
|
||||
:param id_suffix: suffix to add to the unique_id of the entity. Used for multi
|
||||
entities using the same cluster handler/cluster id for the entity.
|
||||
"""
|
||||
super().__init_subclass__(**kwargs)
|
||||
if id_suffix:
|
||||
cls.unique_id_suffix = id_suffix
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
unique_id: str,
|
||||
|
|
|
@ -452,11 +452,10 @@ class ZHANumberConfigurationEntity(ZhaEntity, NumberEntity):
|
|||
models={"lumi.motion.ac02", "lumi.motion.agl04"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraMotionDetectionInterval(
|
||||
ZHANumberConfigurationEntity, id_suffix="detection_interval"
|
||||
):
|
||||
class AqaraMotionDetectionInterval(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA motion detection interval configuration entity."""
|
||||
|
||||
_unique_id_suffix = "detection_interval"
|
||||
_attr_native_min_value: float = 2
|
||||
_attr_native_max_value: float = 65535
|
||||
_zcl_attribute: str = "detection_interval"
|
||||
|
@ -465,11 +464,10 @@ class AqaraMotionDetectionInterval(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class OnOffTransitionTimeConfigurationEntity(
|
||||
ZHANumberConfigurationEntity, id_suffix="on_off_transition_time"
|
||||
):
|
||||
class OnOffTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA on off transition time configuration entity."""
|
||||
|
||||
_unique_id_suffix = "on_off_transition_time"
|
||||
_attr_native_min_value: float = 0x0000
|
||||
_attr_native_max_value: float = 0xFFFF
|
||||
_zcl_attribute: str = "on_off_transition_time"
|
||||
|
@ -478,9 +476,10 @@ class OnOffTransitionTimeConfigurationEntity(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class OnLevelConfigurationEntity(ZHANumberConfigurationEntity, id_suffix="on_level"):
|
||||
class OnLevelConfigurationEntity(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA on level configuration entity."""
|
||||
|
||||
_unique_id_suffix = "on_level"
|
||||
_attr_native_min_value: float = 0x00
|
||||
_attr_native_max_value: float = 0xFF
|
||||
_zcl_attribute: str = "on_level"
|
||||
|
@ -489,11 +488,10 @@ class OnLevelConfigurationEntity(ZHANumberConfigurationEntity, id_suffix="on_lev
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class OnTransitionTimeConfigurationEntity(
|
||||
ZHANumberConfigurationEntity, id_suffix="on_transition_time"
|
||||
):
|
||||
class OnTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA on transition time configuration entity."""
|
||||
|
||||
_unique_id_suffix = "on_transition_time"
|
||||
_attr_native_min_value: float = 0x0000
|
||||
_attr_native_max_value: float = 0xFFFE
|
||||
_zcl_attribute: str = "on_transition_time"
|
||||
|
@ -502,11 +500,10 @@ class OnTransitionTimeConfigurationEntity(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class OffTransitionTimeConfigurationEntity(
|
||||
ZHANumberConfigurationEntity, id_suffix="off_transition_time"
|
||||
):
|
||||
class OffTransitionTimeConfigurationEntity(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA off transition time configuration entity."""
|
||||
|
||||
_unique_id_suffix = "off_transition_time"
|
||||
_attr_native_min_value: float = 0x0000
|
||||
_attr_native_max_value: float = 0xFFFE
|
||||
_zcl_attribute: str = "off_transition_time"
|
||||
|
@ -515,11 +512,10 @@ class OffTransitionTimeConfigurationEntity(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class DefaultMoveRateConfigurationEntity(
|
||||
ZHANumberConfigurationEntity, id_suffix="default_move_rate"
|
||||
):
|
||||
class DefaultMoveRateConfigurationEntity(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA default move rate configuration entity."""
|
||||
|
||||
_unique_id_suffix = "default_move_rate"
|
||||
_attr_native_min_value: float = 0x00
|
||||
_attr_native_max_value: float = 0xFE
|
||||
_zcl_attribute: str = "default_move_rate"
|
||||
|
@ -528,11 +524,10 @@ class DefaultMoveRateConfigurationEntity(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_LEVEL)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class StartUpCurrentLevelConfigurationEntity(
|
||||
ZHANumberConfigurationEntity, id_suffix="start_up_current_level"
|
||||
):
|
||||
class StartUpCurrentLevelConfigurationEntity(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA startup current level configuration entity."""
|
||||
|
||||
_unique_id_suffix = "start_up_current_level"
|
||||
_attr_native_min_value: float = 0x00
|
||||
_attr_native_max_value: float = 0xFF
|
||||
_zcl_attribute: str = "start_up_current_level"
|
||||
|
@ -541,11 +536,10 @@ class StartUpCurrentLevelConfigurationEntity(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_COLOR)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class StartUpColorTemperatureConfigurationEntity(
|
||||
ZHANumberConfigurationEntity, id_suffix="start_up_color_temperature"
|
||||
):
|
||||
class StartUpColorTemperatureConfigurationEntity(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA startup color temperature configuration entity."""
|
||||
|
||||
_unique_id_suffix = "start_up_color_temperature"
|
||||
_attr_native_min_value: float = 153
|
||||
_attr_native_max_value: float = 500
|
||||
_zcl_attribute: str = "start_up_color_temperature"
|
||||
|
@ -572,9 +566,10 @@ class StartUpColorTemperatureConfigurationEntity(
|
|||
},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class TimerDurationMinutes(ZHANumberConfigurationEntity, id_suffix="timer_duration"):
|
||||
class TimerDurationMinutes(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA timer duration configuration entity."""
|
||||
|
||||
_unique_id_suffix = "timer_duration"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[14]
|
||||
_attr_native_min_value: float = 0x00
|
||||
|
@ -586,9 +581,10 @@ class TimerDurationMinutes(ZHANumberConfigurationEntity, id_suffix="timer_durati
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names="ikea_airpurifier")
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class FilterLifeTime(ZHANumberConfigurationEntity, id_suffix="filter_life_time"):
|
||||
class FilterLifeTime(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA filter lifetime configuration entity."""
|
||||
|
||||
_unique_id_suffix = "filter_life_time"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[14]
|
||||
_attr_native_min_value: float = 0x00
|
||||
|
@ -604,9 +600,10 @@ class FilterLifeTime(ZHANumberConfigurationEntity, id_suffix="filter_life_time")
|
|||
models={"ti.router"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class TiRouterTransmitPower(ZHANumberConfigurationEntity, id_suffix="transmit_power"):
|
||||
class TiRouterTransmitPower(ZHANumberConfigurationEntity):
|
||||
"""Representation of a ZHA TI transmit power configuration entity."""
|
||||
|
||||
_unique_id_suffix = "transmit_power"
|
||||
_attr_native_min_value: float = -20
|
||||
_attr_native_max_value: float = 20
|
||||
_zcl_attribute: str = "transmit_power"
|
||||
|
@ -615,11 +612,10 @@ class TiRouterTransmitPower(ZHANumberConfigurationEntity, id_suffix="transmit_po
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliRemoteDimmingUpSpeed(
|
||||
ZHANumberConfigurationEntity, id_suffix="dimming_speed_up_remote"
|
||||
):
|
||||
class InovelliRemoteDimmingUpSpeed(ZHANumberConfigurationEntity):
|
||||
"""Inovelli remote dimming up speed configuration entity."""
|
||||
|
||||
_unique_id_suffix = "dimming_speed_up_remote"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -630,9 +626,10 @@ class InovelliRemoteDimmingUpSpeed(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliButtonDelay(ZHANumberConfigurationEntity, id_suffix="button_delay"):
|
||||
class InovelliButtonDelay(ZHANumberConfigurationEntity):
|
||||
"""Inovelli button delay configuration entity."""
|
||||
|
||||
_unique_id_suffix = "dimming_speed_up_local"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -643,11 +640,10 @@ class InovelliButtonDelay(ZHANumberConfigurationEntity, id_suffix="button_delay"
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliLocalDimmingUpSpeed(
|
||||
ZHANumberConfigurationEntity, id_suffix="dimming_speed_up_local"
|
||||
):
|
||||
class InovelliLocalDimmingUpSpeed(ZHANumberConfigurationEntity):
|
||||
"""Inovelli local dimming up speed configuration entity."""
|
||||
|
||||
_unique_id_suffix = "dimming_speed_up_local"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -658,11 +654,10 @@ class InovelliLocalDimmingUpSpeed(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliLocalRampRateOffToOn(
|
||||
ZHANumberConfigurationEntity, id_suffix="ramp_rate_off_to_on_local"
|
||||
):
|
||||
class InovelliLocalRampRateOffToOn(ZHANumberConfigurationEntity):
|
||||
"""Inovelli off to on local ramp rate configuration entity."""
|
||||
|
||||
_unique_id_suffix = "ramp_rate_off_to_on_local"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -673,11 +668,10 @@ class InovelliLocalRampRateOffToOn(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliRemoteDimmingSpeedOffToOn(
|
||||
ZHANumberConfigurationEntity, id_suffix="ramp_rate_off_to_on_remote"
|
||||
):
|
||||
class InovelliRemoteDimmingSpeedOffToOn(ZHANumberConfigurationEntity):
|
||||
"""Inovelli off to on remote ramp rate configuration entity."""
|
||||
|
||||
_unique_id_suffix = "ramp_rate_off_to_on_remote"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -688,11 +682,10 @@ class InovelliRemoteDimmingSpeedOffToOn(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliRemoteDimmingDownSpeed(
|
||||
ZHANumberConfigurationEntity, id_suffix="dimming_speed_down_remote"
|
||||
):
|
||||
class InovelliRemoteDimmingDownSpeed(ZHANumberConfigurationEntity):
|
||||
"""Inovelli remote dimming down speed configuration entity."""
|
||||
|
||||
_unique_id_suffix = "dimming_speed_down_remote"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -703,11 +696,10 @@ class InovelliRemoteDimmingDownSpeed(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliLocalDimmingDownSpeed(
|
||||
ZHANumberConfigurationEntity, id_suffix="dimming_speed_down_local"
|
||||
):
|
||||
class InovelliLocalDimmingDownSpeed(ZHANumberConfigurationEntity):
|
||||
"""Inovelli local dimming down speed configuration entity."""
|
||||
|
||||
_unique_id_suffix = "dimming_speed_down_local"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -718,11 +710,10 @@ class InovelliLocalDimmingDownSpeed(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliLocalRampRateOnToOff(
|
||||
ZHANumberConfigurationEntity, id_suffix="ramp_rate_on_to_off_local"
|
||||
):
|
||||
class InovelliLocalRampRateOnToOff(ZHANumberConfigurationEntity):
|
||||
"""Inovelli local on to off ramp rate configuration entity."""
|
||||
|
||||
_unique_id_suffix = "ramp_rate_on_to_off_local"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -733,11 +724,10 @@ class InovelliLocalRampRateOnToOff(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliRemoteDimmingSpeedOnToOff(
|
||||
ZHANumberConfigurationEntity, id_suffix="ramp_rate_on_to_off_remote"
|
||||
):
|
||||
class InovelliRemoteDimmingSpeedOnToOff(ZHANumberConfigurationEntity):
|
||||
"""Inovelli remote on to off ramp rate configuration entity."""
|
||||
|
||||
_unique_id_suffix = "ramp_rate_on_to_off_remote"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[3]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -748,11 +738,10 @@ class InovelliRemoteDimmingSpeedOnToOff(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliMinimumLoadDimmingLevel(
|
||||
ZHANumberConfigurationEntity, id_suffix="minimum_level"
|
||||
):
|
||||
class InovelliMinimumLoadDimmingLevel(ZHANumberConfigurationEntity):
|
||||
"""Inovelli minimum load dimming level configuration entity."""
|
||||
|
||||
_unique_id_suffix = "minimum_level"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[16]
|
||||
_attr_native_min_value: float = 1
|
||||
|
@ -763,11 +752,10 @@ class InovelliMinimumLoadDimmingLevel(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliMaximumLoadDimmingLevel(
|
||||
ZHANumberConfigurationEntity, id_suffix="maximum_level"
|
||||
):
|
||||
class InovelliMaximumLoadDimmingLevel(ZHANumberConfigurationEntity):
|
||||
"""Inovelli maximum load dimming level configuration entity."""
|
||||
|
||||
_unique_id_suffix = "maximum_level"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[16]
|
||||
_attr_native_min_value: float = 2
|
||||
|
@ -778,11 +766,10 @@ class InovelliMaximumLoadDimmingLevel(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliAutoShutoffTimer(
|
||||
ZHANumberConfigurationEntity, id_suffix="auto_off_timer"
|
||||
):
|
||||
class InovelliAutoShutoffTimer(ZHANumberConfigurationEntity):
|
||||
"""Inovelli automatic switch shutoff timer configuration entity."""
|
||||
|
||||
_unique_id_suffix = "auto_off_timer"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[14]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -793,11 +780,10 @@ class InovelliAutoShutoffTimer(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliLoadLevelIndicatorTimeout(
|
||||
ZHANumberConfigurationEntity, id_suffix="load_level_indicator_timeout"
|
||||
):
|
||||
class InovelliLoadLevelIndicatorTimeout(ZHANumberConfigurationEntity):
|
||||
"""Inovelli load level indicator timeout configuration entity."""
|
||||
|
||||
_unique_id_suffix = "load_level_indicator_timeout"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[14]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -808,11 +794,10 @@ class InovelliLoadLevelIndicatorTimeout(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliDefaultAllLEDOnColor(
|
||||
ZHANumberConfigurationEntity, id_suffix="led_color_when_on"
|
||||
):
|
||||
class InovelliDefaultAllLEDOnColor(ZHANumberConfigurationEntity):
|
||||
"""Inovelli default all led color when on configuration entity."""
|
||||
|
||||
_unique_id_suffix = "led_color_when_on"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[15]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -823,11 +808,10 @@ class InovelliDefaultAllLEDOnColor(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliDefaultAllLEDOffColor(
|
||||
ZHANumberConfigurationEntity, id_suffix="led_color_when_off"
|
||||
):
|
||||
class InovelliDefaultAllLEDOffColor(ZHANumberConfigurationEntity):
|
||||
"""Inovelli default all led color when off configuration entity."""
|
||||
|
||||
_unique_id_suffix = "led_color_when_off"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[15]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -838,11 +822,10 @@ class InovelliDefaultAllLEDOffColor(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliDefaultAllLEDOnIntensity(
|
||||
ZHANumberConfigurationEntity, id_suffix="led_intensity_when_on"
|
||||
):
|
||||
class InovelliDefaultAllLEDOnIntensity(ZHANumberConfigurationEntity):
|
||||
"""Inovelli default all led intensity when on configuration entity."""
|
||||
|
||||
_unique_id_suffix = "led_intensity_when_on"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[16]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -853,11 +836,10 @@ class InovelliDefaultAllLEDOnIntensity(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliDefaultAllLEDOffIntensity(
|
||||
ZHANumberConfigurationEntity, id_suffix="led_intensity_when_off"
|
||||
):
|
||||
class InovelliDefaultAllLEDOffIntensity(ZHANumberConfigurationEntity):
|
||||
"""Inovelli default all led intensity when off configuration entity."""
|
||||
|
||||
_unique_id_suffix = "led_intensity_when_off"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[16]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -868,11 +850,10 @@ class InovelliDefaultAllLEDOffIntensity(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliDoubleTapUpLevel(
|
||||
ZHANumberConfigurationEntity, id_suffix="double_tap_up_level"
|
||||
):
|
||||
class InovelliDoubleTapUpLevel(ZHANumberConfigurationEntity):
|
||||
"""Inovelli double tap up level configuration entity."""
|
||||
|
||||
_unique_id_suffix = "double_tap_up_level"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[16]
|
||||
_attr_native_min_value: float = 2
|
||||
|
@ -883,11 +864,10 @@ class InovelliDoubleTapUpLevel(
|
|||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_INOVELLI)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class InovelliDoubleTapDownLevel(
|
||||
ZHANumberConfigurationEntity, id_suffix="double_tap_down_level"
|
||||
):
|
||||
class InovelliDoubleTapDownLevel(ZHANumberConfigurationEntity):
|
||||
"""Inovelli double tap down level configuration entity."""
|
||||
|
||||
_unique_id_suffix = "double_tap_down_level"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_icon: str = ICONS[16]
|
||||
_attr_native_min_value: float = 0
|
||||
|
@ -900,9 +880,10 @@ class InovelliDoubleTapDownLevel(
|
|||
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraPetFeederServingSize(ZHANumberConfigurationEntity, id_suffix="serving_size"):
|
||||
class AqaraPetFeederServingSize(ZHANumberConfigurationEntity):
|
||||
"""Aqara pet feeder serving size configuration entity."""
|
||||
|
||||
_unique_id_suffix = "serving_size"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_native_min_value: float = 1
|
||||
_attr_native_max_value: float = 10
|
||||
|
@ -916,11 +897,10 @@ class AqaraPetFeederServingSize(ZHANumberConfigurationEntity, id_suffix="serving
|
|||
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraPetFeederPortionWeight(
|
||||
ZHANumberConfigurationEntity, id_suffix="portion_weight"
|
||||
):
|
||||
class AqaraPetFeederPortionWeight(ZHANumberConfigurationEntity):
|
||||
"""Aqara pet feeder portion weight configuration entity."""
|
||||
|
||||
_unique_id_suffix = "portion_weight"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_native_min_value: float = 1
|
||||
_attr_native_max_value: float = 100
|
||||
|
@ -935,11 +915,10 @@ class AqaraPetFeederPortionWeight(
|
|||
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraThermostatAwayTemp(
|
||||
ZHANumberConfigurationEntity, id_suffix="away_preset_temperature"
|
||||
):
|
||||
class AqaraThermostatAwayTemp(ZHANumberConfigurationEntity):
|
||||
"""Aqara away preset temperature configuration entity."""
|
||||
|
||||
_unique_id_suffix = "away_preset_temperature"
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_native_min_value: float = 5
|
||||
_attr_native_max_value: float = 30
|
||||
|
|
|
@ -117,39 +117,37 @@ class ZHANonZCLSelectEntity(ZHAEnumSelectEntity):
|
|||
|
||||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
|
||||
class ZHADefaultToneSelectEntity(
|
||||
ZHANonZCLSelectEntity, id_suffix=IasWd.Warning.WarningMode.__name__
|
||||
):
|
||||
class ZHADefaultToneSelectEntity(ZHANonZCLSelectEntity):
|
||||
"""Representation of a ZHA default siren tone select entity."""
|
||||
|
||||
_unique_id_suffix = IasWd.Warning.WarningMode.__name__
|
||||
_enum = IasWd.Warning.WarningMode
|
||||
_attr_name = "Default siren tone"
|
||||
|
||||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
|
||||
class ZHADefaultSirenLevelSelectEntity(
|
||||
ZHANonZCLSelectEntity, id_suffix=IasWd.Warning.SirenLevel.__name__
|
||||
):
|
||||
class ZHADefaultSirenLevelSelectEntity(ZHANonZCLSelectEntity):
|
||||
"""Representation of a ZHA default siren level select entity."""
|
||||
|
||||
_unique_id_suffix = IasWd.Warning.SirenLevel.__name__
|
||||
_enum = IasWd.Warning.SirenLevel
|
||||
_attr_name = "Default siren level"
|
||||
|
||||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
|
||||
class ZHADefaultStrobeLevelSelectEntity(
|
||||
ZHANonZCLSelectEntity, id_suffix=IasWd.StrobeLevel.__name__
|
||||
):
|
||||
class ZHADefaultStrobeLevelSelectEntity(ZHANonZCLSelectEntity):
|
||||
"""Representation of a ZHA default siren strobe level select entity."""
|
||||
|
||||
_unique_id_suffix = IasWd.StrobeLevel.__name__
|
||||
_enum = IasWd.StrobeLevel
|
||||
_attr_name = "Default strobe level"
|
||||
|
||||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_IAS_WD)
|
||||
class ZHADefaultStrobeSelectEntity(ZHANonZCLSelectEntity, id_suffix=Strobe.__name__):
|
||||
class ZHADefaultStrobeSelectEntity(ZHANonZCLSelectEntity):
|
||||
"""Representation of a ZHA default siren strobe select entity."""
|
||||
|
||||
_unique_id_suffix = Strobe.__name__
|
||||
_enum = Strobe
|
||||
_attr_name = "Default strobe"
|
||||
|
||||
|
@ -230,11 +228,10 @@ class ZCLEnumSelectEntity(ZhaEntity, SelectEntity):
|
|||
|
||||
|
||||
@CONFIG_DIAGNOSTIC_MATCH(cluster_handler_names=CLUSTER_HANDLER_ON_OFF)
|
||||
class ZHAStartupOnOffSelectEntity(
|
||||
ZCLEnumSelectEntity, id_suffix=OnOff.StartUpOnOff.__name__
|
||||
):
|
||||
class ZHAStartupOnOffSelectEntity(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA startup onoff select entity."""
|
||||
|
||||
_unique_id_suffix = OnOff.StartUpOnOff.__name__
|
||||
_select_attr = "start_up_on_off"
|
||||
_enum = OnOff.StartUpOnOff
|
||||
_attr_name = "Start-up behavior"
|
||||
|
@ -273,9 +270,10 @@ class TuyaPowerOnState(types.enum8):
|
|||
"_TZE200_9mahtqtg",
|
||||
},
|
||||
)
|
||||
class TuyaPowerOnStateSelectEntity(ZCLEnumSelectEntity, id_suffix="power_on_state"):
|
||||
class TuyaPowerOnStateSelectEntity(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA power on state select entity."""
|
||||
|
||||
_unique_id_suffix = "power_on_state"
|
||||
_select_attr = "power_on_state"
|
||||
_enum = TuyaPowerOnState
|
||||
_attr_name = "Power on state"
|
||||
|
@ -293,9 +291,10 @@ class TuyaBacklightMode(types.enum8):
|
|||
cluster_handler_names=CLUSTER_HANDLER_ON_OFF,
|
||||
models={"TS011F", "TS0121", "TS0001", "TS0002", "TS0003", "TS0004"},
|
||||
)
|
||||
class TuyaBacklightModeSelectEntity(ZCLEnumSelectEntity, id_suffix="backlight_mode"):
|
||||
class TuyaBacklightModeSelectEntity(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA backlight mode select entity."""
|
||||
|
||||
_unique_id_suffix = "backlight_mode"
|
||||
_select_attr = "backlight_mode"
|
||||
_enum = TuyaBacklightMode
|
||||
_attr_name = "Backlight mode"
|
||||
|
@ -331,9 +330,10 @@ class MoesBacklightMode(types.enum8):
|
|||
"_TZE200_9mahtqtg",
|
||||
},
|
||||
)
|
||||
class MoesBacklightModeSelectEntity(ZCLEnumSelectEntity, id_suffix="backlight_mode"):
|
||||
class MoesBacklightModeSelectEntity(ZCLEnumSelectEntity):
|
||||
"""Moes devices have a different backlight mode select options."""
|
||||
|
||||
_unique_id_suffix = "backlight_mode"
|
||||
_select_attr = "backlight_mode"
|
||||
_enum = MoesBacklightMode
|
||||
_attr_name = "Backlight mode"
|
||||
|
@ -351,9 +351,10 @@ class AqaraMotionSensitivities(types.enum8):
|
|||
cluster_handler_names="opple_cluster",
|
||||
models={"lumi.motion.ac01", "lumi.motion.ac02", "lumi.motion.agl04"},
|
||||
)
|
||||
class AqaraMotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"):
|
||||
class AqaraMotionSensitivity(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA motion sensitivity configuration entity."""
|
||||
|
||||
_unique_id_suffix = "motion_sensitivity"
|
||||
_select_attr = "motion_sensitivity"
|
||||
_enum = AqaraMotionSensitivities
|
||||
_attr_name = "Motion sensitivity"
|
||||
|
@ -372,9 +373,10 @@ class HueV1MotionSensitivities(types.enum8):
|
|||
manufacturers={"Philips", "Signify Netherlands B.V."},
|
||||
models={"SML001"},
|
||||
)
|
||||
class HueV1MotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"):
|
||||
class HueV1MotionSensitivity(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA motion sensitivity configuration entity."""
|
||||
|
||||
_unique_id_suffix = "motion_sensitivity"
|
||||
_select_attr = "sensitivity"
|
||||
_attr_name = "Hue motion sensitivity"
|
||||
_enum = HueV1MotionSensitivities
|
||||
|
@ -395,9 +397,10 @@ class HueV2MotionSensitivities(types.enum8):
|
|||
manufacturers={"Philips", "Signify Netherlands B.V."},
|
||||
models={"SML002", "SML003", "SML004"},
|
||||
)
|
||||
class HueV2MotionSensitivity(ZCLEnumSelectEntity, id_suffix="motion_sensitivity"):
|
||||
class HueV2MotionSensitivity(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA motion sensitivity configuration entity."""
|
||||
|
||||
_unique_id_suffix = "motion_sensitivity"
|
||||
_select_attr = "sensitivity"
|
||||
_attr_name = "Hue motion sensitivity"
|
||||
_enum = HueV2MotionSensitivities
|
||||
|
@ -413,9 +416,10 @@ class AqaraMonitoringModess(types.enum8):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"}
|
||||
)
|
||||
class AqaraMonitoringMode(ZCLEnumSelectEntity, id_suffix="monitoring_mode"):
|
||||
class AqaraMonitoringMode(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA monitoring mode configuration entity."""
|
||||
|
||||
_unique_id_suffix = "monitoring_mode"
|
||||
_select_attr = "monitoring_mode"
|
||||
_enum = AqaraMonitoringModess
|
||||
_attr_name = "Monitoring mode"
|
||||
|
@ -432,9 +436,10 @@ class AqaraApproachDistances(types.enum8):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.motion.ac01"}
|
||||
)
|
||||
class AqaraApproachDistance(ZCLEnumSelectEntity, id_suffix="approach_distance"):
|
||||
class AqaraApproachDistance(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA approach distance configuration entity."""
|
||||
|
||||
_unique_id_suffix = "approach_distance"
|
||||
_select_attr = "approach_distance"
|
||||
_enum = AqaraApproachDistances
|
||||
_attr_name = "Approach distance"
|
||||
|
@ -450,9 +455,10 @@ class AqaraE1ReverseDirection(types.enum8):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="window_covering", models={"lumi.curtain.agl001"}
|
||||
)
|
||||
class AqaraCurtainMode(ZCLEnumSelectEntity, id_suffix="window_covering_mode"):
|
||||
class AqaraCurtainMode(ZCLEnumSelectEntity):
|
||||
"""Representation of a ZHA curtain mode configuration entity."""
|
||||
|
||||
_unique_id_suffix = "window_covering_mode"
|
||||
_select_attr = "window_covering_mode"
|
||||
_enum = AqaraE1ReverseDirection
|
||||
_attr_name = "Curtain mode"
|
||||
|
@ -468,9 +474,10 @@ class InovelliOutputMode(types.enum1):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliOutputModeEntity(ZCLEnumSelectEntity, id_suffix="output_mode"):
|
||||
class InovelliOutputModeEntity(ZCLEnumSelectEntity):
|
||||
"""Inovelli output mode control."""
|
||||
|
||||
_unique_id_suffix = "output_mode"
|
||||
_select_attr = "output_mode"
|
||||
_enum = InovelliOutputMode
|
||||
_attr_name: str = "Output mode"
|
||||
|
@ -488,9 +495,10 @@ class InovelliSwitchType(types.enum8):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliSwitchTypeEntity(ZCLEnumSelectEntity, id_suffix="switch_type"):
|
||||
class InovelliSwitchTypeEntity(ZCLEnumSelectEntity):
|
||||
"""Inovelli switch type control."""
|
||||
|
||||
_unique_id_suffix = "switch_type"
|
||||
_select_attr = "switch_type"
|
||||
_enum = InovelliSwitchType
|
||||
_attr_name: str = "Switch type"
|
||||
|
@ -506,9 +514,10 @@ class InovelliLedScalingMode(types.enum1):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliLedScalingModeEntity(ZCLEnumSelectEntity, id_suffix="led_scaling_mode"):
|
||||
class InovelliLedScalingModeEntity(ZCLEnumSelectEntity):
|
||||
"""Inovelli led mode control."""
|
||||
|
||||
_unique_id_suffix = "led_scaling_mode"
|
||||
_select_attr = "led_scaling_mode"
|
||||
_enum = InovelliLedScalingMode
|
||||
_attr_name: str = "Led scaling mode"
|
||||
|
@ -524,11 +533,10 @@ class InovelliNonNeutralOutput(types.enum1):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliNonNeutralOutputEntity(
|
||||
ZCLEnumSelectEntity, id_suffix="increased_non_neutral_output"
|
||||
):
|
||||
class InovelliNonNeutralOutputEntity(ZCLEnumSelectEntity):
|
||||
"""Inovelli non neutral output control."""
|
||||
|
||||
_unique_id_suffix = "increased_non_neutral_output"
|
||||
_select_attr = "increased_non_neutral_output"
|
||||
_enum = InovelliNonNeutralOutput
|
||||
_attr_name: str = "Non neutral output"
|
||||
|
@ -544,9 +552,10 @@ class AqaraFeedingMode(types.enum8):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
|
||||
)
|
||||
class AqaraPetFeederMode(ZCLEnumSelectEntity, id_suffix="feeding_mode"):
|
||||
class AqaraPetFeederMode(ZCLEnumSelectEntity):
|
||||
"""Representation of an Aqara pet feeder mode configuration entity."""
|
||||
|
||||
_unique_id_suffix = "feeding_mode"
|
||||
_select_attr = "feeding_mode"
|
||||
_enum = AqaraFeedingMode
|
||||
_attr_name = "Mode"
|
||||
|
@ -564,9 +573,10 @@ class AqaraThermostatPresetMode(types.enum8):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
|
||||
)
|
||||
class AqaraThermostatPreset(ZCLEnumSelectEntity, id_suffix="preset"):
|
||||
class AqaraThermostatPreset(ZCLEnumSelectEntity):
|
||||
"""Representation of an Aqara thermostat preset configuration entity."""
|
||||
|
||||
_unique_id_suffix = "preset"
|
||||
_select_attr = "preset"
|
||||
_enum = AqaraThermostatPresetMode
|
||||
_attr_name = "Preset"
|
||||
|
|
|
@ -319,12 +319,11 @@ class PolledElectricalMeasurement(ElectricalMeasurement):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class ElectricalMeasurementApparentPower(
|
||||
ElectricalMeasurement, id_suffix="apparent_power"
|
||||
):
|
||||
class ElectricalMeasurementApparentPower(ElectricalMeasurement):
|
||||
"""Apparent power measurement."""
|
||||
|
||||
SENSOR_ATTR = "apparent_power"
|
||||
_unique_id_suffix = "apparent_power"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.APPARENT_POWER
|
||||
_attr_name: str = "Apparent power"
|
||||
_attr_native_unit_of_measurement = UnitOfApparentPower.VOLT_AMPERE
|
||||
|
@ -333,10 +332,11 @@ class ElectricalMeasurementApparentPower(
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class ElectricalMeasurementRMSCurrent(ElectricalMeasurement, id_suffix="rms_current"):
|
||||
class ElectricalMeasurementRMSCurrent(ElectricalMeasurement):
|
||||
"""RMS current measurement."""
|
||||
|
||||
SENSOR_ATTR = "rms_current"
|
||||
_unique_id_suffix = "rms_current"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.CURRENT
|
||||
_attr_name: str = "RMS current"
|
||||
_attr_native_unit_of_measurement = UnitOfElectricCurrent.AMPERE
|
||||
|
@ -345,10 +345,11 @@ class ElectricalMeasurementRMSCurrent(ElectricalMeasurement, id_suffix="rms_curr
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class ElectricalMeasurementRMSVoltage(ElectricalMeasurement, id_suffix="rms_voltage"):
|
||||
class ElectricalMeasurementRMSVoltage(ElectricalMeasurement):
|
||||
"""RMS Voltage measurement."""
|
||||
|
||||
SENSOR_ATTR = "rms_voltage"
|
||||
_unique_id_suffix = "rms_voltage"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.VOLTAGE
|
||||
_attr_name: str = "RMS voltage"
|
||||
_attr_native_unit_of_measurement = UnitOfElectricPotential.VOLT
|
||||
|
@ -357,10 +358,11 @@ class ElectricalMeasurementRMSVoltage(ElectricalMeasurement, id_suffix="rms_volt
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class ElectricalMeasurementFrequency(ElectricalMeasurement, id_suffix="ac_frequency"):
|
||||
class ElectricalMeasurementFrequency(ElectricalMeasurement):
|
||||
"""Frequency measurement."""
|
||||
|
||||
SENSOR_ATTR = "ac_frequency"
|
||||
_unique_id_suffix = "ac_frequency"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.FREQUENCY
|
||||
_attr_name: str = "AC frequency"
|
||||
_attr_native_unit_of_measurement = UnitOfFrequency.HERTZ
|
||||
|
@ -369,10 +371,11 @@ class ElectricalMeasurementFrequency(ElectricalMeasurement, id_suffix="ac_freque
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_ELECTRICAL_MEASUREMENT)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class ElectricalMeasurementPowerFactor(ElectricalMeasurement, id_suffix="power_factor"):
|
||||
class ElectricalMeasurementPowerFactor(ElectricalMeasurement):
|
||||
"""Frequency measurement."""
|
||||
|
||||
SENSOR_ATTR = "power_factor"
|
||||
_unique_id_suffix = "power_factor"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.POWER_FACTOR
|
||||
_attr_name: str = "Power factor"
|
||||
_attr_native_unit_of_measurement = PERCENTAGE
|
||||
|
@ -499,10 +502,11 @@ class SmartEnergyMetering(Sensor):
|
|||
stop_on_match_group=CLUSTER_HANDLER_SMARTENERGY_METERING,
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class SmartEnergySummation(SmartEnergyMetering, id_suffix="summation_delivered"):
|
||||
class SmartEnergySummation(SmartEnergyMetering):
|
||||
"""Smart Energy Metering summation sensor."""
|
||||
|
||||
SENSOR_ATTR: int | str = "current_summ_delivered"
|
||||
_unique_id_suffix = "summation_delivered"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.ENERGY
|
||||
_attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING
|
||||
_attr_name: str = "Summation delivered"
|
||||
|
@ -558,12 +562,11 @@ class PolledSmartEnergySummation(SmartEnergySummation):
|
|||
models={"ZLinky_TIC"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class Tier1SmartEnergySummation(
|
||||
PolledSmartEnergySummation, id_suffix="tier1_summation_delivered"
|
||||
):
|
||||
class Tier1SmartEnergySummation(PolledSmartEnergySummation):
|
||||
"""Tier 1 Smart Energy Metering summation sensor."""
|
||||
|
||||
SENSOR_ATTR: int | str = "current_tier1_summ_delivered"
|
||||
_unique_id_suffix = "tier1_summation_delivered"
|
||||
_attr_name: str = "Tier 1 summation delivered"
|
||||
|
||||
|
||||
|
@ -572,12 +575,11 @@ class Tier1SmartEnergySummation(
|
|||
models={"ZLinky_TIC"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class Tier2SmartEnergySummation(
|
||||
PolledSmartEnergySummation, id_suffix="tier2_summation_delivered"
|
||||
):
|
||||
class Tier2SmartEnergySummation(PolledSmartEnergySummation):
|
||||
"""Tier 2 Smart Energy Metering summation sensor."""
|
||||
|
||||
SENSOR_ATTR: int | str = "current_tier2_summ_delivered"
|
||||
_unique_id_suffix = "tier2_summation_delivered"
|
||||
_attr_name: str = "Tier 2 summation delivered"
|
||||
|
||||
|
||||
|
@ -586,12 +588,11 @@ class Tier2SmartEnergySummation(
|
|||
models={"ZLinky_TIC"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class Tier3SmartEnergySummation(
|
||||
PolledSmartEnergySummation, id_suffix="tier3_summation_delivered"
|
||||
):
|
||||
class Tier3SmartEnergySummation(PolledSmartEnergySummation):
|
||||
"""Tier 3 Smart Energy Metering summation sensor."""
|
||||
|
||||
SENSOR_ATTR: int | str = "current_tier3_summ_delivered"
|
||||
_unique_id_suffix = "tier3_summation_delivered"
|
||||
_attr_name: str = "Tier 3 summation delivered"
|
||||
|
||||
|
||||
|
@ -600,12 +601,11 @@ class Tier3SmartEnergySummation(
|
|||
models={"ZLinky_TIC"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class Tier4SmartEnergySummation(
|
||||
PolledSmartEnergySummation, id_suffix="tier4_summation_delivered"
|
||||
):
|
||||
class Tier4SmartEnergySummation(PolledSmartEnergySummation):
|
||||
"""Tier 4 Smart Energy Metering summation sensor."""
|
||||
|
||||
SENSOR_ATTR: int | str = "current_tier4_summ_delivered"
|
||||
_unique_id_suffix = "tier4_summation_delivered"
|
||||
_attr_name: str = "Tier 4 summation delivered"
|
||||
|
||||
|
||||
|
@ -614,12 +614,11 @@ class Tier4SmartEnergySummation(
|
|||
models={"ZLinky_TIC"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class Tier5SmartEnergySummation(
|
||||
PolledSmartEnergySummation, id_suffix="tier5_summation_delivered"
|
||||
):
|
||||
class Tier5SmartEnergySummation(PolledSmartEnergySummation):
|
||||
"""Tier 5 Smart Energy Metering summation sensor."""
|
||||
|
||||
SENSOR_ATTR: int | str = "current_tier5_summ_delivered"
|
||||
_unique_id_suffix = "tier5_summation_delivered"
|
||||
_attr_name: str = "Tier 5 summation delivered"
|
||||
|
||||
|
||||
|
@ -628,12 +627,11 @@ class Tier5SmartEnergySummation(
|
|||
models={"ZLinky_TIC"},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class Tier6SmartEnergySummation(
|
||||
PolledSmartEnergySummation, id_suffix="tier6_summation_delivered"
|
||||
):
|
||||
class Tier6SmartEnergySummation(PolledSmartEnergySummation):
|
||||
"""Tier 6 Smart Energy Metering summation sensor."""
|
||||
|
||||
SENSOR_ATTR: int | str = "current_tier6_summ_delivered"
|
||||
_unique_id_suffix = "tier6_summation_delivered"
|
||||
_attr_name: str = "Tier 6 summation delivered"
|
||||
|
||||
|
||||
|
@ -772,9 +770,10 @@ class FormaldehydeConcentration(Sensor):
|
|||
stop_on_match_group=CLUSTER_HANDLER_THERMOSTAT,
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class ThermostatHVACAction(Sensor, id_suffix="hvac_action"):
|
||||
class ThermostatHVACAction(Sensor):
|
||||
"""Thermostat HVAC action sensor."""
|
||||
|
||||
_unique_id_suffix = "hvac_action"
|
||||
_attr_name: str = "HVAC action"
|
||||
|
||||
@classmethod
|
||||
|
@ -891,9 +890,11 @@ class SinopeHVACAction(ThermostatHVACAction):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_BASIC)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class RSSISensor(Sensor, id_suffix="rssi"):
|
||||
class RSSISensor(Sensor):
|
||||
"""RSSI sensor for a device."""
|
||||
|
||||
SENSOR_ATTR = "rssi"
|
||||
_unique_id_suffix = "rssi"
|
||||
_attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT
|
||||
_attr_device_class: SensorDeviceClass | None = SensorDeviceClass.SIGNAL_STRENGTH
|
||||
_attr_native_unit_of_measurement: str | None = SIGNAL_STRENGTH_DECIBELS_MILLIWATT
|
||||
|
@ -901,7 +902,6 @@ class RSSISensor(Sensor, id_suffix="rssi"):
|
|||
_attr_entity_registry_enabled_default = False
|
||||
_attr_should_poll = True # BaseZhaEntity defaults to False
|
||||
_attr_name: str = "RSSI"
|
||||
unique_id_suffix: str
|
||||
|
||||
@classmethod
|
||||
def create_entity(
|
||||
|
@ -915,7 +915,7 @@ class RSSISensor(Sensor, id_suffix="rssi"):
|
|||
|
||||
Return entity if it is a supported configuration, otherwise return None
|
||||
"""
|
||||
key = f"{CLUSTER_HANDLER_BASIC}_{cls.unique_id_suffix}"
|
||||
key = f"{CLUSTER_HANDLER_BASIC}_{cls._unique_id_suffix}"
|
||||
if ZHA_ENTITIES.prevent_entity_creation(Platform.SENSOR, zha_device.ieee, key):
|
||||
return None
|
||||
return cls(unique_id, zha_device, cluster_handlers, **kwargs)
|
||||
|
@ -923,14 +923,16 @@ class RSSISensor(Sensor, id_suffix="rssi"):
|
|||
@property
|
||||
def native_value(self) -> StateType:
|
||||
"""Return the state of the entity."""
|
||||
return getattr(self._zha_device.device, self.unique_id_suffix)
|
||||
return getattr(self._zha_device.device, self.SENSOR_ATTR)
|
||||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names=CLUSTER_HANDLER_BASIC)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class LQISensor(RSSISensor, id_suffix="lqi"):
|
||||
class LQISensor(RSSISensor):
|
||||
"""LQI sensor for a device."""
|
||||
|
||||
SENSOR_ATTR = "lqi"
|
||||
_unique_id_suffix = "lqi"
|
||||
_attr_name: str = "LQI"
|
||||
_attr_device_class = None
|
||||
_attr_native_unit_of_measurement = None
|
||||
|
@ -943,10 +945,11 @@ class LQISensor(RSSISensor, id_suffix="lqi"):
|
|||
},
|
||||
)
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class TimeLeft(Sensor, id_suffix="time_left"):
|
||||
class TimeLeft(Sensor):
|
||||
"""Sensor that displays time left value."""
|
||||
|
||||
SENSOR_ATTR = "timer_time_left"
|
||||
_unique_id_suffix = "time_left"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.DURATION
|
||||
_attr_icon = "mdi:timer"
|
||||
_attr_name: str = "Time left"
|
||||
|
@ -955,10 +958,11 @@ class TimeLeft(Sensor, id_suffix="time_left"):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names="ikea_airpurifier")
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class IkeaDeviceRunTime(Sensor, id_suffix="device_run_time"):
|
||||
class IkeaDeviceRunTime(Sensor):
|
||||
"""Sensor that displays device run time (in minutes)."""
|
||||
|
||||
SENSOR_ATTR = "device_run_time"
|
||||
_unique_id_suffix = "device_run_time"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.DURATION
|
||||
_attr_icon = "mdi:timer"
|
||||
_attr_name: str = "Device run time"
|
||||
|
@ -968,10 +972,11 @@ class IkeaDeviceRunTime(Sensor, id_suffix="device_run_time"):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names="ikea_airpurifier")
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class IkeaFilterRunTime(Sensor, id_suffix="filter_run_time"):
|
||||
class IkeaFilterRunTime(Sensor):
|
||||
"""Sensor that displays run time of the current filter (in minutes)."""
|
||||
|
||||
SENSOR_ATTR = "filter_run_time"
|
||||
_unique_id_suffix = "filter_run_time"
|
||||
_attr_device_class: SensorDeviceClass = SensorDeviceClass.DURATION
|
||||
_attr_icon = "mdi:timer"
|
||||
_attr_name: str = "Filter run time"
|
||||
|
@ -988,10 +993,11 @@ class AqaraFeedingSource(types.enum8):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraPetFeederLastFeedingSource(Sensor, id_suffix="last_feeding_source"):
|
||||
class AqaraPetFeederLastFeedingSource(Sensor):
|
||||
"""Sensor that displays the last feeding source of pet feeder."""
|
||||
|
||||
SENSOR_ATTR = "last_feeding_source"
|
||||
_unique_id_suffix = "last_feeding_source"
|
||||
_attr_name: str = "Last feeding source"
|
||||
_attr_icon = "mdi:devices"
|
||||
|
||||
|
@ -1002,20 +1008,22 @@ class AqaraPetFeederLastFeedingSource(Sensor, id_suffix="last_feeding_source"):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraPetFeederLastFeedingSize(Sensor, id_suffix="last_feeding_size"):
|
||||
class AqaraPetFeederLastFeedingSize(Sensor):
|
||||
"""Sensor that displays the last feeding size of the pet feeder."""
|
||||
|
||||
SENSOR_ATTR = "last_feeding_size"
|
||||
_unique_id_suffix = "last_feeding_size"
|
||||
_attr_name: str = "Last feeding size"
|
||||
_attr_icon: str = "mdi:counter"
|
||||
|
||||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraPetFeederPortionsDispensed(Sensor, id_suffix="portions_dispensed"):
|
||||
class AqaraPetFeederPortionsDispensed(Sensor):
|
||||
"""Sensor that displays the number of portions dispensed by the pet feeder."""
|
||||
|
||||
SENSOR_ATTR = "portions_dispensed"
|
||||
_unique_id_suffix = "portions_dispensed"
|
||||
_attr_name: str = "Portions dispensed today"
|
||||
_attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING
|
||||
_attr_icon: str = "mdi:counter"
|
||||
|
@ -1023,10 +1031,11 @@ class AqaraPetFeederPortionsDispensed(Sensor, id_suffix="portions_dispensed"):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"})
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraPetFeederWeightDispensed(Sensor, id_suffix="weight_dispensed"):
|
||||
class AqaraPetFeederWeightDispensed(Sensor):
|
||||
"""Sensor that displays the weight dispensed by the pet feeder."""
|
||||
|
||||
SENSOR_ATTR = "weight_dispensed"
|
||||
_unique_id_suffix = "weight_dispensed"
|
||||
_attr_name: str = "Weight dispensed today"
|
||||
_attr_native_unit_of_measurement = UnitOfMass.GRAMS
|
||||
_attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING
|
||||
|
@ -1035,10 +1044,11 @@ class AqaraPetFeederWeightDispensed(Sensor, id_suffix="weight_dispensed"):
|
|||
|
||||
@MULTI_MATCH(cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"})
|
||||
# pylint: disable-next=hass-invalid-inheritance # needs fixing
|
||||
class AqaraSmokeDensityDbm(Sensor, id_suffix="smoke_density_dbm"):
|
||||
class AqaraSmokeDensityDbm(Sensor):
|
||||
"""Sensor that displays the smoke density of an Aqara smoke sensor in dB/m."""
|
||||
|
||||
SENSOR_ATTR = "smoke_density_dbm"
|
||||
_unique_id_suffix = "smoke_density_dbm"
|
||||
_attr_name: str = "Smoke density"
|
||||
_attr_native_unit_of_measurement = "dB/m"
|
||||
_attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT
|
||||
|
|
|
@ -270,11 +270,10 @@ class ZHASwitchConfigurationEntity(ZhaEntity, SwitchEntity):
|
|||
"_TZE200_b6wax7g0",
|
||||
},
|
||||
)
|
||||
class OnOffWindowDetectionFunctionConfigurationEntity(
|
||||
ZHASwitchConfigurationEntity, id_suffix="on_off_window_opened_detection"
|
||||
):
|
||||
class OnOffWindowDetectionFunctionConfigurationEntity(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a ZHA window detection configuration entity."""
|
||||
|
||||
_unique_id_suffix = "on_off_window_opened_detection"
|
||||
_zcl_attribute: str = "window_detection_function"
|
||||
_zcl_inverter_attribute: str = "window_detection_function_inverter"
|
||||
_attr_name: str = "Invert window detection"
|
||||
|
@ -283,11 +282,10 @@ class OnOffWindowDetectionFunctionConfigurationEntity(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.motion.ac02"}
|
||||
)
|
||||
class P1MotionTriggerIndicatorSwitch(
|
||||
ZHASwitchConfigurationEntity, id_suffix="trigger_indicator"
|
||||
):
|
||||
class P1MotionTriggerIndicatorSwitch(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a ZHA motion triggering configuration entity."""
|
||||
|
||||
_unique_id_suffix = "trigger_indicator"
|
||||
_zcl_attribute: str = "trigger_indicator"
|
||||
_attr_name = "LED trigger indicator"
|
||||
|
||||
|
@ -296,11 +294,10 @@ class P1MotionTriggerIndicatorSwitch(
|
|||
cluster_handler_names="opple_cluster",
|
||||
models={"lumi.plug.mmeu01", "lumi.plug.maeu01"},
|
||||
)
|
||||
class XiaomiPlugPowerOutageMemorySwitch(
|
||||
ZHASwitchConfigurationEntity, id_suffix="power_outage_memory"
|
||||
):
|
||||
class XiaomiPlugPowerOutageMemorySwitch(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a ZHA power outage memory configuration entity."""
|
||||
|
||||
_unique_id_suffix = "power_outage_memory"
|
||||
_zcl_attribute: str = "power_outage_memory"
|
||||
_attr_name = "Power outage memory"
|
||||
|
||||
|
@ -310,11 +307,10 @@ class XiaomiPlugPowerOutageMemorySwitch(
|
|||
manufacturers={"Philips", "Signify Netherlands B.V."},
|
||||
models={"SML001", "SML002", "SML003", "SML004"},
|
||||
)
|
||||
class HueMotionTriggerIndicatorSwitch(
|
||||
ZHASwitchConfigurationEntity, id_suffix="trigger_indicator"
|
||||
):
|
||||
class HueMotionTriggerIndicatorSwitch(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a ZHA motion triggering configuration entity."""
|
||||
|
||||
_unique_id_suffix = "trigger_indicator"
|
||||
_zcl_attribute: str = "trigger_indicator"
|
||||
_attr_name = "LED trigger indicator"
|
||||
|
||||
|
@ -323,9 +319,10 @@ class HueMotionTriggerIndicatorSwitch(
|
|||
cluster_handler_names="ikea_airpurifier",
|
||||
models={"STARKVIND Air purifier", "STARKVIND Air purifier table"},
|
||||
)
|
||||
class ChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
|
||||
class ChildLock(ZHASwitchConfigurationEntity):
|
||||
"""ZHA BinarySensor."""
|
||||
|
||||
_unique_id_suffix = "child_lock"
|
||||
_zcl_attribute: str = "child_lock"
|
||||
_attr_name = "Child lock"
|
||||
|
||||
|
@ -334,9 +331,10 @@ class ChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
|
|||
cluster_handler_names="ikea_airpurifier",
|
||||
models={"STARKVIND Air purifier", "STARKVIND Air purifier table"},
|
||||
)
|
||||
class DisableLed(ZHASwitchConfigurationEntity, id_suffix="disable_led"):
|
||||
class DisableLed(ZHASwitchConfigurationEntity):
|
||||
"""ZHA BinarySensor."""
|
||||
|
||||
_unique_id_suffix = "disable_led"
|
||||
_zcl_attribute: str = "disable_led"
|
||||
_attr_name = "Disable LED"
|
||||
|
||||
|
@ -344,9 +342,10 @@ class DisableLed(ZHASwitchConfigurationEntity, id_suffix="disable_led"):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliInvertSwitch(ZHASwitchConfigurationEntity, id_suffix="invert_switch"):
|
||||
class InovelliInvertSwitch(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli invert switch control."""
|
||||
|
||||
_unique_id_suffix = "invert_switch"
|
||||
_zcl_attribute: str = "invert_switch"
|
||||
_attr_name: str = "Invert switch"
|
||||
|
||||
|
@ -354,9 +353,10 @@ class InovelliInvertSwitch(ZHASwitchConfigurationEntity, id_suffix="invert_switc
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliSmartBulbMode(ZHASwitchConfigurationEntity, id_suffix="smart_bulb_mode"):
|
||||
class InovelliSmartBulbMode(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli smart bulb mode control."""
|
||||
|
||||
_unique_id_suffix = "smart_bulb_mode"
|
||||
_zcl_attribute: str = "smart_bulb_mode"
|
||||
_attr_name: str = "Smart bulb mode"
|
||||
|
||||
|
@ -364,11 +364,10 @@ class InovelliSmartBulbMode(ZHASwitchConfigurationEntity, id_suffix="smart_bulb_
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliDoubleTapUpEnabled(
|
||||
ZHASwitchConfigurationEntity, id_suffix="double_tap_up_enabled"
|
||||
):
|
||||
class InovelliDoubleTapUpEnabled(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli double tap up enabled."""
|
||||
|
||||
_unique_id_suffix = "double_tap_up_enabled"
|
||||
_zcl_attribute: str = "double_tap_up_enabled"
|
||||
_attr_name: str = "Double tap up enabled"
|
||||
|
||||
|
@ -376,11 +375,10 @@ class InovelliDoubleTapUpEnabled(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliDoubleTapDownEnabled(
|
||||
ZHASwitchConfigurationEntity, id_suffix="double_tap_down_enabled"
|
||||
):
|
||||
class InovelliDoubleTapDownEnabled(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli double tap down enabled."""
|
||||
|
||||
_unique_id_suffix = "double_tap_down_enabled"
|
||||
_zcl_attribute: str = "double_tap_down_enabled"
|
||||
_attr_name: str = "Double tap down enabled"
|
||||
|
||||
|
@ -388,11 +386,10 @@ class InovelliDoubleTapDownEnabled(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliAuxSwitchScenes(
|
||||
ZHASwitchConfigurationEntity, id_suffix="aux_switch_scenes"
|
||||
):
|
||||
class InovelliAuxSwitchScenes(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli unique aux switch scenes."""
|
||||
|
||||
_unique_id_suffix = "aux_switch_scenes"
|
||||
_zcl_attribute: str = "aux_switch_scenes"
|
||||
_attr_name: str = "Aux switch scenes"
|
||||
|
||||
|
@ -400,11 +397,10 @@ class InovelliAuxSwitchScenes(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliBindingOffToOnSyncLevel(
|
||||
ZHASwitchConfigurationEntity, id_suffix="binding_off_to_on_sync_level"
|
||||
):
|
||||
class InovelliBindingOffToOnSyncLevel(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli send move to level with on/off to bound devices."""
|
||||
|
||||
_unique_id_suffix = "binding_off_to_on_sync_level"
|
||||
_zcl_attribute: str = "binding_off_to_on_sync_level"
|
||||
_attr_name: str = "Binding off to on sync level"
|
||||
|
||||
|
@ -412,11 +408,10 @@ class InovelliBindingOffToOnSyncLevel(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliLocalProtection(
|
||||
ZHASwitchConfigurationEntity, id_suffix="local_protection"
|
||||
):
|
||||
class InovelliLocalProtection(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli local protection control."""
|
||||
|
||||
_unique_id_suffix = "local_protection"
|
||||
_zcl_attribute: str = "local_protection"
|
||||
_attr_name: str = "Local protection"
|
||||
|
||||
|
@ -424,9 +419,10 @@ class InovelliLocalProtection(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliOnOffLEDMode(ZHASwitchConfigurationEntity, id_suffix="on_off_led_mode"):
|
||||
class InovelliOnOffLEDMode(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli only 1 LED mode control."""
|
||||
|
||||
_unique_id_suffix = "on_off_led_mode"
|
||||
_zcl_attribute: str = "on_off_led_mode"
|
||||
_attr_name: str = "Only 1 LED mode"
|
||||
|
||||
|
@ -434,11 +430,10 @@ class InovelliOnOffLEDMode(ZHASwitchConfigurationEntity, id_suffix="on_off_led_m
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliFirmwareProgressLED(
|
||||
ZHASwitchConfigurationEntity, id_suffix="firmware_progress_led"
|
||||
):
|
||||
class InovelliFirmwareProgressLED(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli firmware progress LED control."""
|
||||
|
||||
_unique_id_suffix = "firmware_progress_led"
|
||||
_zcl_attribute: str = "firmware_progress_led"
|
||||
_attr_name: str = "Firmware progress LED"
|
||||
|
||||
|
@ -446,11 +441,10 @@ class InovelliFirmwareProgressLED(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliRelayClickInOnOffMode(
|
||||
ZHASwitchConfigurationEntity, id_suffix="relay_click_in_on_off_mode"
|
||||
):
|
||||
class InovelliRelayClickInOnOffMode(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli relay click in on off mode control."""
|
||||
|
||||
_unique_id_suffix = "relay_click_in_on_off_mode"
|
||||
_zcl_attribute: str = "relay_click_in_on_off_mode"
|
||||
_attr_name: str = "Disable relay click in on off mode"
|
||||
|
||||
|
@ -458,11 +452,10 @@ class InovelliRelayClickInOnOffMode(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names=CLUSTER_HANDLER_INOVELLI,
|
||||
)
|
||||
class InovelliDisableDoubleTapClearNotificationsMode(
|
||||
ZHASwitchConfigurationEntity, id_suffix="disable_clear_notifications_double_tap"
|
||||
):
|
||||
class InovelliDisableDoubleTapClearNotificationsMode(ZHASwitchConfigurationEntity):
|
||||
"""Inovelli disable clear notifications double tap control."""
|
||||
|
||||
_unique_id_suffix = "disable_clear_notifications_double_tap"
|
||||
_zcl_attribute: str = "disable_clear_notifications_double_tap"
|
||||
_attr_name: str = "Disable config 2x tap to clear notifications"
|
||||
|
||||
|
@ -470,11 +463,10 @@ class InovelliDisableDoubleTapClearNotificationsMode(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
|
||||
)
|
||||
class AqaraPetFeederLEDIndicator(
|
||||
ZHASwitchConfigurationEntity, id_suffix="disable_led_indicator"
|
||||
):
|
||||
class AqaraPetFeederLEDIndicator(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a LED indicator configuration entity."""
|
||||
|
||||
_unique_id_suffix = "disable_led_indicator"
|
||||
_zcl_attribute: str = "disable_led_indicator"
|
||||
_attr_name = "LED indicator"
|
||||
_force_inverted = True
|
||||
|
@ -484,9 +476,10 @@ class AqaraPetFeederLEDIndicator(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"aqara.feeder.acn001"}
|
||||
)
|
||||
class AqaraPetFeederChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
|
||||
class AqaraPetFeederChildLock(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a child lock configuration entity."""
|
||||
|
||||
_unique_id_suffix = "child_lock"
|
||||
_zcl_attribute: str = "child_lock"
|
||||
_attr_name = "Child lock"
|
||||
_attr_icon: str = "mdi:account-lock"
|
||||
|
@ -496,9 +489,10 @@ class AqaraPetFeederChildLock(ZHASwitchConfigurationEntity, id_suffix="child_loc
|
|||
cluster_handler_names=CLUSTER_HANDLER_ON_OFF,
|
||||
models={"TS011F"},
|
||||
)
|
||||
class TuyaChildLockSwitch(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
|
||||
class TuyaChildLockSwitch(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a child lock configuration entity."""
|
||||
|
||||
_unique_id_suffix = "child_lock"
|
||||
_zcl_attribute: str = "child_lock"
|
||||
_attr_name = "Child lock"
|
||||
_attr_icon: str = "mdi:account-lock"
|
||||
|
@ -507,11 +501,10 @@ class TuyaChildLockSwitch(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
|
||||
)
|
||||
class AqaraThermostatWindowDetection(
|
||||
ZHASwitchConfigurationEntity, id_suffix="window_detection"
|
||||
):
|
||||
class AqaraThermostatWindowDetection(ZHASwitchConfigurationEntity):
|
||||
"""Representation of an Aqara thermostat window detection configuration entity."""
|
||||
|
||||
_unique_id_suffix = "window_detection"
|
||||
_zcl_attribute: str = "window_detection"
|
||||
_attr_name = "Window detection"
|
||||
|
||||
|
@ -519,11 +512,10 @@ class AqaraThermostatWindowDetection(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
|
||||
)
|
||||
class AqaraThermostatValveDetection(
|
||||
ZHASwitchConfigurationEntity, id_suffix="valve_detection"
|
||||
):
|
||||
class AqaraThermostatValveDetection(ZHASwitchConfigurationEntity):
|
||||
"""Representation of an Aqara thermostat valve detection configuration entity."""
|
||||
|
||||
_unique_id_suffix = "valve_detection"
|
||||
_zcl_attribute: str = "valve_detection"
|
||||
_attr_name = "Valve detection"
|
||||
|
||||
|
@ -531,9 +523,10 @@ class AqaraThermostatValveDetection(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.airrtc.agl001"}
|
||||
)
|
||||
class AqaraThermostatChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lock"):
|
||||
class AqaraThermostatChildLock(ZHASwitchConfigurationEntity):
|
||||
"""Representation of an Aqara thermostat child lock configuration entity."""
|
||||
|
||||
_unique_id_suffix = "child_lock"
|
||||
_zcl_attribute: str = "child_lock"
|
||||
_attr_name = "Child lock"
|
||||
_attr_icon: str = "mdi:account-lock"
|
||||
|
@ -542,11 +535,10 @@ class AqaraThermostatChildLock(ZHASwitchConfigurationEntity, id_suffix="child_lo
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
|
||||
)
|
||||
class AqaraHeartbeatIndicator(
|
||||
ZHASwitchConfigurationEntity, id_suffix="heartbeat_indicator"
|
||||
):
|
||||
class AqaraHeartbeatIndicator(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a heartbeat indicator configuration entity for Aqara smoke sensors."""
|
||||
|
||||
_unique_id_suffix = "heartbeat_indicator"
|
||||
_zcl_attribute: str = "heartbeat_indicator"
|
||||
_attr_name = "Heartbeat indicator"
|
||||
_attr_icon: str = "mdi:heart-flash"
|
||||
|
@ -555,9 +547,10 @@ class AqaraHeartbeatIndicator(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
|
||||
)
|
||||
class AqaraLinkageAlarm(ZHASwitchConfigurationEntity, id_suffix="linkage_alarm"):
|
||||
class AqaraLinkageAlarm(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a linkage alarm configuration entity for Aqara smoke sensors."""
|
||||
|
||||
_unique_id_suffix = "linkage_alarm"
|
||||
_zcl_attribute: str = "linkage_alarm"
|
||||
_attr_name = "Linkage alarm"
|
||||
_attr_icon: str = "mdi:shield-link-variant"
|
||||
|
@ -566,11 +559,10 @@ class AqaraLinkageAlarm(ZHASwitchConfigurationEntity, id_suffix="linkage_alarm")
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
|
||||
)
|
||||
class AqaraBuzzerManualMute(
|
||||
ZHASwitchConfigurationEntity, id_suffix="buzzer_manual_mute"
|
||||
):
|
||||
class AqaraBuzzerManualMute(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a buzzer manual mute configuration entity for Aqara smoke sensors."""
|
||||
|
||||
_unique_id_suffix = "buzzer_manual_mute"
|
||||
_zcl_attribute: str = "buzzer_manual_mute"
|
||||
_attr_name = "Buzzer manual mute"
|
||||
_attr_icon: str = "mdi:volume-off"
|
||||
|
@ -579,11 +571,10 @@ class AqaraBuzzerManualMute(
|
|||
@CONFIG_DIAGNOSTIC_MATCH(
|
||||
cluster_handler_names="opple_cluster", models={"lumi.sensor_smoke.acn03"}
|
||||
)
|
||||
class AqaraBuzzerManualAlarm(
|
||||
ZHASwitchConfigurationEntity, id_suffix="buzzer_manual_alarm"
|
||||
):
|
||||
class AqaraBuzzerManualAlarm(ZHASwitchConfigurationEntity):
|
||||
"""Representation of a buzzer manual mute configuration entity for Aqara smoke sensors."""
|
||||
|
||||
_unique_id_suffix = "buzzer_manual_alarm"
|
||||
_zcl_attribute: str = "buzzer_manual_alarm"
|
||||
_attr_name = "Buzzer manual alarm"
|
||||
_attr_icon: str = "mdi:bullhorn"
|
||||
|
|
Loading…
Reference in New Issue