Skip to content

Commit 9b5774d

Browse files
authored
Fix zigpy typing issues with Tuya and Aqara (zigpy#4649)
* Fix zigpy typing issues * Fix TSN incrementing later, previously masked by an error * Correct ZCL data type for `display_unit`
1 parent adbfdd4 commit 9b5774d

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

tests/test_tuya_rcbo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ async def test_report_values_rcbo(zigpy_device_from_quirk, frame, cluster, attri
256256
),
257257
(
258258
[],
259-
b'\x01\x04\x00\x00\x06n\x00\x00\x08\x0b"\x00\x00\x01\xf4\x00\x00',
259+
b'\x01\x04\x00\x00\x05n\x00\x00\x08\x0b"\x00\x00\x01\xf4\x00\x00',
260260
"electrical_measurement",
261261
{
262262
"rms_extreme_over_voltage": 2850,

zhaquirks/tuya/mcu/__init__.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,6 @@ def from_cluster_data(self, data: TuyaClusterData) -> list[TuyaCommand]:
214214

215215
tuya_commands: list[TuyaCommand] = []
216216
for dp, mapping in dp_mapping.items():
217-
cmd_payload = TuyaCommand()
218-
cmd_payload.status = 0
219-
cmd_payload.tsn = self.endpoint.device.application.get_sequence()
220-
221217
val = data.attr_value
222218
if mapping.dp_converter:
223219
args = []
@@ -237,9 +233,15 @@ def from_cluster_data(self, data: TuyaClusterData) -> list[TuyaCommand]:
237233

238234
dpd = TuyaDatapointData(dp, val)
239235
self.debug("raw: %s", dpd.data.raw)
240-
cmd_payload.datapoints = t.List([dpd])
241236

242-
tuya_commands.append(cmd_payload)
237+
tuya_commands.append(
238+
TuyaCommand(
239+
status=0,
240+
tsn=self.endpoint.device.application.get_sequence(),
241+
datapoints=[dpd],
242+
)
243+
)
244+
243245
return tuya_commands
244246

245247
def tuya_mcu_command(self, cluster_data: TuyaClusterData):

zhaquirks/xiaomi/aqara/tvoc.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from zigpy.zcl.clusters.general import AnalogInput, Basic, Identify, Ota
99
from zigpy.zcl.clusters.measurement import RelativeHumidity, TemperatureMeasurement
1010
from zigpy.zcl.clusters.security import IasZone
11-
from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef
11+
from zigpy.zcl.foundation import BaseAttributeDefs, DataTypeId, ZCLAttributeDef
1212
from zigpy.zdo.types import NodeDescriptor
1313

1414
from zhaquirks import LocalDataCluster, PowerConfigurationCluster
@@ -71,7 +71,7 @@ async def bind(self):
7171
return result
7272

7373

74-
class TVOCDisplayUnit(t.enum_factory(t.uint8_t)):
74+
class TVOCDisplayUnit(t.enum8):
7575
"""Display values."""
7676

7777
mgm3_celsius = 0x00
@@ -87,7 +87,10 @@ class AttributeDefs(XiaomiAqaraE1Cluster.AttributeDefs):
8787
"""Attribute definitions."""
8888

8989
display_unit: Final = ZCLAttributeDef(
90-
id=DISPLAY_UNIT, type=TVOCDisplayUnit, is_manufacturer_specific=True
90+
id=DISPLAY_UNIT,
91+
type=TVOCDisplayUnit,
92+
zcl_type=DataTypeId.uint8,
93+
is_manufacturer_specific=True,
9194
)
9295

9396

0 commit comments

Comments
 (0)