Skip to content

Commit 4e7fb61

Browse files
committed
Cleanup, set defaults
1 parent 88068fc commit 4e7fb61

File tree

2 files changed

+69
-69
lines changed

2 files changed

+69
-69
lines changed

zhaquirks/tuya/mcu/__init__.py

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import zigpy.types as t
1212
from zigpy.zcl import foundation
1313
from zigpy.zcl.clusters.general import LevelControl, OnOff
14+
from zigpy.zcl.clusters.measurement import SoilMoisture, TemperatureMeasurement
1415

1516
from zhaquirks import Bus, DoublingPowerConfigurationCluster
1617

@@ -29,6 +30,7 @@
2930
TuyaEnchantableCluster,
3031
TuyaLocalCluster,
3132
TuyaNewManufCluster,
33+
TuyaPowerConfigurationCluster2AAA,
3234
TuyaTimePayload,
3335
)
3436

@@ -730,6 +732,14 @@ class TuyaLevelControlManufCluster(TuyaMCUCluster):
730732
}
731733

732734

735+
class TuyaTemperatureMeasurement(TemperatureMeasurement, TuyaLocalCluster):
736+
"""Tuya local TemperatureMeasurement cluster."""
737+
738+
739+
class TuyaSoilMoisture(SoilMoisture, TuyaLocalCluster):
740+
"""Tuya local SoilMoisture cluster with a device RH_MULTIPLIER factor if required."""
741+
742+
733743
class TuyaQuirkBuilder(QuirkBuilder):
734744
"""Tuya QuirkBuilder."""
735745

@@ -741,49 +751,10 @@ def __init__(
741751
self.tuya_dp_to_attribute: dict[int, DPToAttributeMapping] = {}
742752
super().__init__(manufacturer, model, registry)
743753

744-
def add_tuya_dp(
754+
def battery(
745755
self,
746756
dp_id: int,
747-
ep_attribute: str,
748-
attribute_name: Union[str, tuple],
749-
converter: Optional[
750-
Callable[
751-
[
752-
Any,
753-
],
754-
Any,
755-
]
756-
] = None,
757-
dp_converter: Optional[
758-
Callable[
759-
[
760-
Any,
761-
],
762-
Any,
763-
]
764-
] = None,
765-
endpoint_id: Optional[int] = None,
766-
dp_handler: str = "_dp_2_attr_update",
767-
) -> QuirkBuilder:
768-
"""Add Tuya DP Converter."""
769-
self.tuya_dp_to_attribute.update(
770-
{
771-
dp_id: DPToAttributeMapping(
772-
ep_attribute,
773-
attribute_name,
774-
converter=converter,
775-
dp_converter=dp_converter,
776-
endpoint_id=endpoint_id,
777-
)
778-
}
779-
)
780-
self.tuya_data_point_handlers.update({dp_id: dp_handler})
781-
return self
782-
783-
def add_battery_config(
784-
self,
785-
dp_id: int,
786-
power_cfg: PowerConfiguration,
757+
power_cfg: PowerConfiguration = TuyaPowerConfigurationCluster2AAA,
787758
converter: Optional[
788759
Callable[
789760
[
@@ -794,7 +765,7 @@ def add_battery_config(
794765
] = lambda x: x * 2,
795766
) -> QuirkBuilder:
796767
"""Add a Tuya Battery Power Configuration."""
797-
self.add_tuya_dp(
768+
self.tuya_dp(
798769
dp_id,
799770
power_cfg.ep_attribute,
800771
"battery_percentage_remaining",
@@ -803,10 +774,10 @@ def add_battery_config(
803774
self.adds(power_cfg)
804775
return self
805776

806-
def add_soil_moisture_config(
777+
def soil_moisture(
807778
self,
808779
dp_id: int,
809-
soil_cfg: TuyaLocalCluster,
780+
soil_cfg: TuyaLocalCluster = TuyaSoilMoisture,
810781
converter: Optional[
811782
Callable[
812783
[
@@ -826,10 +797,10 @@ def add_soil_moisture_config(
826797
self.adds(soil_cfg)
827798
return self
828799

829-
def add_temperature_config(
800+
def temperature(
830801
self,
831802
dp_id: int,
832-
temp_cfg: TuyaLocalCluster,
803+
temp_cfg: TuyaLocalCluster = TuyaTemperatureMeasurement,
833804
converter: Optional[
834805
Callable[
835806
[
@@ -849,6 +820,45 @@ def add_temperature_config(
849820
self.adds(temp_cfg)
850821
return self
851822

823+
def tuya_dp(
824+
self,
825+
dp_id: int,
826+
ep_attribute: str,
827+
attribute_name: Union[str, tuple],
828+
converter: Optional[
829+
Callable[
830+
[
831+
Any,
832+
],
833+
Any,
834+
]
835+
] = None,
836+
dp_converter: Optional[
837+
Callable[
838+
[
839+
Any,
840+
],
841+
Any,
842+
]
843+
] = None,
844+
endpoint_id: Optional[int] = None,
845+
dp_handler: str = "_dp_2_attr_update",
846+
) -> QuirkBuilder:
847+
"""Add Tuya DP Converter."""
848+
self.tuya_dp_to_attribute.update(
849+
{
850+
dp_id: DPToAttributeMapping(
851+
ep_attribute,
852+
attribute_name,
853+
converter=converter,
854+
dp_converter=dp_converter,
855+
endpoint_id=endpoint_id,
856+
)
857+
}
858+
)
859+
self.tuya_data_point_handlers.update({dp_id: dp_handler})
860+
return self
861+
852862
def add_to_registry(self) -> QuirksV2RegistryEntry:
853863
"""Build the quirks v2 registry entry."""
854864

zhaquirks/tuya/ts0601_sensor.py

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55
from zigpy.profiles import zha
66
from zigpy.quirks import CustomDevice
77
from zigpy.zcl.clusters.general import Basic, Groups, Ota, Scenes, Time
8-
from zigpy.zcl.clusters.measurement import (
9-
RelativeHumidity,
10-
SoilMoisture,
11-
TemperatureMeasurement,
12-
)
8+
from zigpy.zcl.clusters.measurement import RelativeHumidity, TemperatureMeasurement
139

1410
from zhaquirks.const import (
1511
DEVICE_TYPE,
@@ -21,15 +17,12 @@
2117
SKIP_CONFIGURATION,
2218
)
2319
from zhaquirks.tuya import TuyaLocalCluster, TuyaPowerConfigurationCluster2AAA
24-
from zhaquirks.tuya.mcu import DPToAttributeMapping, TuyaMCUCluster, TuyaQuirkBuilder
25-
26-
27-
class TuyaTemperatureMeasurement(TemperatureMeasurement, TuyaLocalCluster):
28-
"""Tuya local TemperatureMeasurement cluster."""
29-
30-
31-
class TuyaSoilMoisture(SoilMoisture, TuyaLocalCluster):
32-
"""Tuya local SoilMoisture cluster with a device RH_MULTIPLIER factor if required."""
20+
from zhaquirks.tuya.mcu import (
21+
DPToAttributeMapping,
22+
TuyaMCUCluster,
23+
TuyaQuirkBuilder,
24+
TuyaTemperatureMeasurement,
25+
)
3326

3427

3528
class TuyaRelativeHumidity(RelativeHumidity, TuyaLocalCluster):
@@ -337,12 +330,9 @@ class TuyaTempHumiditySensorVar04(CustomDevice):
337330
(
338331
TuyaQuirkBuilder("_TZE284_aao3yzhs", "TS0601")
339332
.also_applies_to("_TZE284_sgabhwa6", "TS0601")
340-
.add_battery_config(15, TuyaPowerConfigurationCluster2AAA)
341-
.add_temperature_config(5, TuyaTemperatureMeasurement, converter=lambda x: x * 10)
342-
.add_battery_config(15, TuyaPowerConfigurationCluster2AAA)
343-
.add_soil_moisture_config(3, TuyaSoilMoisture)
344-
.adds(TuyaSoilMoisture)
345-
.adds(TuyaTemperatureMeasurement)
333+
.temperature(5, converter=lambda x: x * 10)
334+
.battery(15)
335+
.soil_moisture(3)
346336
.add_to_registry()
347337
)
348338

@@ -352,8 +342,8 @@ class TuyaTempHumiditySensorVar04(CustomDevice):
352342
.also_applies_to("_TZE200_ga1maeof", "TS0601")
353343
.also_applies_to("_TZE200_9cqcpkgb", "TS0601")
354344
.also_applies_to("_TZE204_myd45weu", "TS0601")
355-
.add_temperature_config(5, TuyaTemperatureMeasurement)
356-
.add_battery_config(15, TuyaPowerConfigurationCluster2AAA)
357-
.add_soil_moisture_config(3, TuyaSoilMoisture)
345+
.temperature(5)
346+
.battery(15)
347+
.soil_moisture(3)
358348
.add_to_registry()
359349
)

0 commit comments

Comments
 (0)