From 86fa0ee398ac109e4d8680055d2a1b9586e4a504 Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:48:17 -0400 Subject: [PATCH 1/8] Update __init__.py Remove AqaraPetFeederErrorDetected --- .../platforms/binary_sensor/__init__.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/zha/application/platforms/binary_sensor/__init__.py b/zha/application/platforms/binary_sensor/__init__.py index 07e1e8de4..cf9d3e2b4 100644 --- a/zha/application/platforms/binary_sensor/__init__.py +++ b/zha/application/platforms/binary_sensor/__init__.py @@ -515,21 +515,6 @@ class ReplaceFilter(BinarySensor): ) -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederErrorDetected(BinarySensor): - """ZHA aqara pet feeder error detected binary sensor.""" - - _attribute_name = "error_detected" - _unique_id_suffix = "error_detected" - _attr_device_class: BinarySensorDeviceClass = BinarySensorDeviceClass.PROBLEM - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - @register_entity(AQARA_OPPLE_CLUSTER) class XiaomiPlugConsumerConnected(BinarySensor): """ZHA Xiaomi plug consumer connected binary sensor.""" From 3ff0de10a32cd8caea9f1fedf121d04a4d0e4623 Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:49:18 -0400 Subject: [PATCH 2/8] Update __init__.py Remove AqaraPetFeederFeedButton --- zha/application/platforms/button/__init__.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/zha/application/platforms/button/__init__.py b/zha/application/platforms/button/__init__.py index 03eb39aee..e3417a910 100644 --- a/zha/application/platforms/button/__init__.py +++ b/zha/application/platforms/button/__init__.py @@ -222,22 +222,6 @@ class NoPresenceStatusResetButton(WriteAttributeButton): ) -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederFeedButton(WriteAttributeButton): - """Defines a feed button for the aqara c1 pet feeder.""" - - _unique_id_suffix = "feeding" - _attribute_name = "feeding" - _attribute_value = 1 - _attr_translation_key = "feed" - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - @register_entity(AQARA_OPPLE_CLUSTER) class AqaraSelfTestButton(WriteAttributeButton): """Defines a ZHA self-test button for Aqara smoke sensors.""" From 18540f6c6b19ad0402a5538b63b7bda91fd0a7bf Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:50:16 -0400 Subject: [PATCH 3/8] Update __init__.py Remove AqaraPetFeederPortionWeight and AqaraPetFeederServingSize --- zha/application/platforms/number/__init__.py | 41 -------------------- 1 file changed, 41 deletions(-) diff --git a/zha/application/platforms/number/__init__.py b/zha/application/platforms/number/__init__.py index 3d0a5ab51..98a469b25 100644 --- a/zha/application/platforms/number/__init__.py +++ b/zha/application/platforms/number/__init__.py @@ -787,47 +787,6 @@ class TiRouterTransmitPower(NumberConfigurationEntity): } -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederServingSize(NumberConfigurationEntity): - """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 - _attribute_name = "serving_size" - _attr_translation_key: str = "serving_size" - _cluster_id = AQARA_OPPLE_CLUSTER - - _attr_mode: NumberMode = NumberMode.BOX - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederPortionWeight(NumberConfigurationEntity): - """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 - _attribute_name = "portion_weight" - _attr_translation_key: str = "portion_weight" - _cluster_id = AQARA_OPPLE_CLUSTER - - _attr_mode: NumberMode = NumberMode.BOX - _attr_native_unit_of_measurement: str = UnitOfMass.GRAMS - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - @register_entity(AQARA_OPPLE_CLUSTER) class AqaraThermostatAwayTemp(NumberConfigurationEntity): """Aqara away preset temperature configuration entity.""" From e7764e7330ed4f3792ee8cea0843a5d194eaf0f2 Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:52:16 -0400 Subject: [PATCH 4/8] Update __init__.py Remove AqaraFeedingSource, AqaraPetFeederWeightDispensed, AqaraPetFeederPortionsDispensed, AqaraPetFeederLastFeedingSize, and AqaraPetFeederLastFeedingSource --- zha/application/platforms/sensor/__init__.py | 71 -------------------- 1 file changed, 71 deletions(-) diff --git a/zha/application/platforms/sensor/__init__.py b/zha/application/platforms/sensor/__init__.py index af816e216..6e84c7d9a 100644 --- a/zha/application/platforms/sensor/__init__.py +++ b/zha/application/platforms/sensor/__init__.py @@ -3350,77 +3350,6 @@ class IkeaFilterRunTime(Sensor): ) -class AqaraFeedingSource(types.enum8): - """Aqara pet feeder feeding source.""" - - Feeder = 0x01 - HomeAssistant = 0x02 - - -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederLastFeedingSource(EnumSensor): - """Sensor that displays the last feeding source of pet feeder.""" - - _attribute_name = "last_feeding_source" - _unique_id_suffix = "last_feeding_source" - _attr_translation_key: str = "last_feeding_source" - _enum = AqaraFeedingSource - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederLastFeedingSize(Sensor): - """Sensor that displays the last feeding size of the pet feeder.""" - - _attribute_name = "last_feeding_size" - _unique_id_suffix = "last_feeding_size" - _attr_translation_key: str = "last_feeding_size" - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederPortionsDispensed(Sensor): - """Sensor that displays the number of portions dispensed by the pet feeder.""" - - _attribute_name = "portions_dispensed" - _unique_id_suffix = "portions_dispensed" - _attr_translation_key: str = "portions_dispensed_today" - _attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederWeightDispensed(Sensor): - """Sensor that displays the weight dispensed by the pet feeder.""" - - _attribute_name = "weight_dispensed" - _unique_id_suffix = "weight_dispensed" - _attr_translation_key: str = "weight_dispensed_today" - _attr_native_unit_of_measurement = UnitOfMass.GRAMS - _attr_state_class: SensorStateClass = SensorStateClass.TOTAL_INCREASING - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - @register_entity(AQARA_OPPLE_CLUSTER) class AqaraSmokeDensityDbm(Sensor): """Sensor that displays the smoke density of an Aqara smoke sensor in dB/m.""" From 951806fba3e6dddbfe7d5a4f35001279608b7375 Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:53:18 -0400 Subject: [PATCH 5/8] Update switch.py Remove AqaraPetFeederChildLock and AqaraPetFeederLEDIndicator --- zha/application/platforms/switch.py | 31 ----------------------------- 1 file changed, 31 deletions(-) diff --git a/zha/application/platforms/switch.py b/zha/application/platforms/switch.py index aa9eb4fb1..8fc4339e0 100644 --- a/zha/application/platforms/switch.py +++ b/zha/application/platforms/switch.py @@ -662,37 +662,6 @@ class DisableLed(ConfigurableAttributeSwitch): ) -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederLEDIndicator(ConfigurableAttributeSwitch): - """Representation of a LED indicator configuration entity.""" - - _unique_id_suffix = "disable_led_indicator" - _attribute_name = "disable_led_indicator" - _attr_translation_key = "led_indicator" - _force_inverted = True - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederChildLock(ConfigurableAttributeSwitch): - """Representation of a child lock configuration entity.""" - - _unique_id_suffix = "child_lock" - _attribute_name = "child_lock" - _attr_translation_key = "child_lock" - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - @register_entity(OnOff.cluster_id) class TuyaChildLockSwitch(ConfigurableAttributeSwitch): """Representation of a child lock configuration entity.""" From 7fc3efa35d62b10beb9bf062b096fb9212cf45b1 Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:54:05 -0400 Subject: [PATCH 6/8] Update select.py Remove AqaraPetFeederMode and AqaraFeedingMode --- zha/application/platforms/select.py | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/zha/application/platforms/select.py b/zha/application/platforms/select.py index dcdc0c288..7f80fcb25 100644 --- a/zha/application/platforms/select.py +++ b/zha/application/platforms/select.py @@ -716,29 +716,6 @@ class AqaraT2RelayDecoupledMode(ZCLEnumSelectEntity): ) -class AqaraFeedingMode(types.enum8): - """Feeding mode.""" - - Manual = 0x00 - Schedule = 0x01 - - -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraPetFeederMode(ZCLEnumSelectEntity): - """Representation of an Aqara pet feeder mode configuration entity.""" - - _unique_id_suffix = "feeding_mode" - _attribute_name = "feeding_mode" - _enum = AqaraFeedingMode - _attr_translation_key: str = "feeding_mode" - _cluster_id = AQARA_OPPLE_CLUSTER - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - - class AqaraThermostatPresetMode(types.enum8): """Thermostat preset mode.""" From 814746eee2d9626f570b22ab34491683c32e4397 Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Mon, 31 Aug 2026 08:55:19 -0400 Subject: [PATCH 7/8] Update virtual.py Remove AqaraFeederInit --- zha/application/platforms/virtual.py | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/zha/application/platforms/virtual.py b/zha/application/platforms/virtual.py index 4585ca960..6d4c7bfa1 100644 --- a/zha/application/platforms/virtual.py +++ b/zha/application/platforms/virtual.py @@ -679,30 +679,6 @@ class AqaraPlugInit(_AqaraOppleInitBase): } -@register_entity(AQARA_OPPLE_CLUSTER) -class AqaraFeederInit(_AqaraOppleInitBase): - """Aqara pet feeder attribute init.""" - - _cluster_match = ClusterMatch( - server_clusters=frozenset({AQARA_OPPLE_CLUSTER}), - models=frozenset({"aqara.feeder.acn001"}), - ) - _server_cluster_config = { - AQARA_OPPLE_CLUSTER: ClusterConfig( - attributes={ - "portions_dispensed": AttrConfig(read_on_startup=False), - "weight_dispensed": AttrConfig(read_on_startup=False), - "error_detected": AttrConfig(read_on_startup=False), - "disable_led_indicator": AttrConfig(read_on_startup=False), - "child_lock": AttrConfig(read_on_startup=False), - "feeding_mode": AttrConfig(read_on_startup=False), - "serving_size": AttrConfig(read_on_startup=False), - "portion_weight": AttrConfig(read_on_startup=False), - }, - ), - } - - @register_entity(AQARA_OPPLE_CLUSTER) class AqaraThermostatAgl001Init(_AqaraOppleInitBase): """Aqara E1 radiator thermostat attribute init.""" From 43ff48b27a3c6321a80f479fcef63610264ec452 Mon Sep 17 00:00:00 2001 From: Josh K <28068117+iamjoshk@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:54:30 -0400 Subject: [PATCH 8/8] remove unused UnitOfMass import --- zha/application/platforms/number/__init__.py | 2 +- zha/application/platforms/sensor/__init__.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/zha/application/platforms/number/__init__.py b/zha/application/platforms/number/__init__.py index 98a469b25..e54794d09 100644 --- a/zha/application/platforms/number/__init__.py +++ b/zha/application/platforms/number/__init__.py @@ -42,7 +42,7 @@ from zha.application.platforms.number.bacnet import BACNET_UNITS_TO_HA_UNITS from zha.application.platforms.number.const import ICONS, NumberDeviceClass, NumberMode from zha.quirks import DANFOSS_ALLY_THERMOSTAT -from zha.units import UnitOfMass, UnitOfTemperature, UnitOfTime +from zha.units import UnitOfTemperature, UnitOfTime if TYPE_CHECKING: from zha.zigbee.device import Device diff --git a/zha/application/platforms/sensor/__init__.py b/zha/application/platforms/sensor/__init__.py index 6e84c7d9a..5cb641b7f 100644 --- a/zha/application/platforms/sensor/__init__.py +++ b/zha/application/platforms/sensor/__init__.py @@ -123,7 +123,6 @@ UnitOfElectricPotential, UnitOfEnergy, UnitOfFrequency, - UnitOfMass, UnitOfPower, UnitOfPressure, UnitOfSpeed,