Skip to content

Commit 914dcb8

Browse files
chemelli74rokam
andauthored
fix: cleanup and complete body and subbody types lists (#325)
cc @wuwentao --------- Co-authored-by: Lucas Mindêllo de Andrade <lucas@mindello.com.br>
1 parent c51b50d commit 914dcb8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+556
-346
lines changed

midealocal/devices/a1/message.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from midealocal.const import DeviceType, ProtocolVersion
66
from midealocal.crc8 import calculate
77
from midealocal.message import (
8-
BodyType,
8+
ListTypes,
99
MessageBody,
1010
MessageRequest,
1111
MessageResponse,
@@ -33,7 +33,7 @@ def __init__(
3333
self,
3434
protocol_version: int,
3535
message_type: MessageType,
36-
body_type: BodyType,
36+
body_type: ListTypes,
3737
) -> None:
3838
"""Initialize message A1 base."""
3939
super().__init__(
@@ -67,7 +67,7 @@ def __init__(self, protocol_version: int) -> None:
6767
super().__init__(
6868
protocol_version=protocol_version,
6969
message_type=MessageType.query,
70-
body_type=BodyType.X41,
70+
body_type=ListTypes.X41,
7171
)
7272

7373
@property
@@ -105,7 +105,7 @@ def __init__(self, protocol_version: ProtocolVersion) -> None:
105105
super().__init__(
106106
protocol_version=protocol_version,
107107
message_type=MessageType.query,
108-
body_type=BodyType.B1,
108+
body_type=ListTypes.B1,
109109
)
110110

111111
@property
@@ -125,7 +125,7 @@ def __init__(self, protocol_version: int) -> None:
125125
super().__init__(
126126
protocol_version=protocol_version,
127127
message_type=MessageType.set,
128-
body_type=BodyType.X48,
128+
body_type=ListTypes.X48,
129129
)
130130
self.power = False
131131
self.prompt_tone = False
@@ -190,7 +190,7 @@ def __init__(self, protocol_version: ProtocolVersion) -> None:
190190
super().__init__(
191191
protocol_version=protocol_version,
192192
message_type=MessageType.set,
193-
body_type=BodyType.B0,
193+
body_type=ListTypes.B0,
194194
)
195195
self.light: bool | None = None
196196

@@ -253,10 +253,12 @@ def __init__(self, message: bytearray) -> None:
253253
MessageType.set,
254254
MessageType.notify1,
255255
]:
256-
if self.body_type in [BodyType.B0, BodyType.B1, BodyType.B5]:
256+
if self.body_type in [ListTypes.B0, ListTypes.B1, ListTypes.B5]:
257257
self.set_body(A1NewProtocolMessageBody(super().body, self.body_type))
258258
else:
259259
self.set_body(A1GeneralMessageBody(super().body))
260-
elif self.message_type == MessageType.notify2 and self.body_type == BodyType.A0:
260+
elif (
261+
self.message_type == MessageType.notify2 and self.body_type == ListTypes.A0
262+
):
261263
self.set_body(A1GeneralMessageBody(super().body))
262264
self.set_attr()

midealocal/devices/ac/message.py

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
from midealocal.const import MAX_BYTE_VALUE, DeviceType
66
from midealocal.crc8 import calculate
77
from midealocal.message import (
8-
BodyType,
8+
ListTypes,
99
MessageBody,
1010
MessageRequest,
1111
MessageResponse,
1212
MessageType,
1313
NewProtocolMessageBody,
14-
SubBodyType,
1514
)
1615

1716
BB_AC_MODES = [0, 3, 1, 2, 4, 5]
@@ -108,7 +107,7 @@ def __init__(
108107
self,
109108
protocol_version: int,
110109
message_type: MessageType,
111-
body_type: BodyType,
110+
body_type: ListTypes,
112111
) -> None:
113112
"""Initialize AC message base."""
114113
super().__init__(
@@ -142,7 +141,7 @@ def __init__(self, protocol_version: int) -> None:
142141
super().__init__(
143142
protocol_version=protocol_version,
144143
message_type=MessageType.query,
145-
body_type=BodyType.X41,
144+
body_type=ListTypes.X41,
146145
)
147146

148147
@property
@@ -184,7 +183,7 @@ def __init__(
184183
super().__init__(
185184
protocol_version=protocol_version,
186185
message_type=MessageType.query,
187-
body_type=BodyType.B5,
186+
body_type=ListTypes.B5,
188187
)
189188
self._additional_capabilities = additional_capabilities
190189

@@ -203,7 +202,7 @@ def __init__(self, protocol_version: int) -> None:
203202
super().__init__(
204203
protocol_version=protocol_version,
205204
message_type=MessageType.query,
206-
body_type=BodyType.X41,
205+
body_type=ListTypes.X41,
207206
)
208207

209208
@property
@@ -226,7 +225,7 @@ def __init__(self, protocol_version: int) -> None:
226225
super().__init__(
227226
protocol_version=protocol_version,
228227
message_type=MessageType.query,
229-
body_type=BodyType.X41,
228+
body_type=ListTypes.X41,
230229
)
231230
self.prompt_tone = False
232231

@@ -266,7 +265,7 @@ def __init__(self, protocol_version: int) -> None:
266265
super().__init__(
267266
protocol_version=protocol_version,
268267
message_type=MessageType.query,
269-
body_type=BodyType.B1,
268+
body_type=ListTypes.B1,
270269
)
271270

272271
@property
@@ -299,7 +298,7 @@ def __init__(
299298
super().__init__(
300299
protocol_version=protocol_version,
301300
message_type=message_type,
302-
body_type=BodyType.AA,
301+
body_type=ListTypes.AA,
303302
)
304303
self._subprotocol_query_type = subprotocol_query_type
305304

@@ -442,7 +441,7 @@ def __init__(self, protocol_version: int) -> None:
442441
super().__init__(
443442
protocol_version=protocol_version,
444443
message_type=MessageType.set,
445-
body_type=BodyType.X40,
444+
body_type=ListTypes.X40,
446445
)
447446
self.power = False
448447
self.prompt_tone = True
@@ -534,7 +533,7 @@ def __init__(self, protocol_version: int) -> None:
534533
super().__init__(
535534
protocol_version=protocol_version,
536535
message_type=MessageType.set,
537-
body_type=BodyType.B0,
536+
body_type=ListTypes.B0,
538537
)
539538
self.indirect_wind: bytes | None = None
540539
self.prompt_tone: bytes | None = None
@@ -852,7 +851,7 @@ def __init__(self, body: bytearray) -> None:
852851
subprotocol_body = body[6:]
853852
data_type = subprotocol_head[-1]
854853
subprotocol_body_len = len(subprotocol_body)
855-
if data_type in (SubBodyType.X11, SubBodyType.X20):
854+
if data_type in (ListTypes.X11, ListTypes.X20):
856855
self.power = (subprotocol_body[0] & 0x1) > 0
857856
self.dry = (subprotocol_body[0] & 0x10) > 0
858857
self.boost_mode = (subprotocol_body[0] & 0x20) > 0
@@ -874,7 +873,7 @@ def __init__(self, body: bytearray) -> None:
874873
if subprotocol_body_len > ECO_MODE_MIN_SUBPROTOCOL_LENGTH
875874
else False
876875
)
877-
elif data_type == SubBodyType.X10:
876+
elif data_type == ListTypes.X10:
878877
if subprotocol_body[8] & 0x80 == SUB_PROTOCOL_BODY_TEMP_CHECK:
879878
self.indoor_temperature = (
880879
0 - (~(subprotocol_body[7] + subprotocol_body[8] * 256) + 1)
@@ -886,9 +885,9 @@ def __init__(self, body: bytearray) -> None:
886885
) / 100
887886
self.indoor_humidity = subprotocol_body[30]
888887
self.sn8_flag = subprotocol_body[80] == XBB_SN8_BYTE_FLAG
889-
elif data_type == SubBodyType.X12:
888+
elif data_type == ListTypes.X12:
890889
pass
891-
elif data_type == SubBodyType.X30:
890+
elif data_type == ListTypes.X30:
892891
if subprotocol_body[6] & 0x80 == SUB_PROTOCOL_BODY_TEMP_CHECK:
893892
self.outdoor_temperature = (
894893
0 - (~(subprotocol_body[5] + subprotocol_body[6] * 256) + 1)
@@ -898,7 +897,7 @@ def __init__(self, body: bytearray) -> None:
898897
self.outdoor_temperature = (
899898
subprotocol_body[5] + subprotocol_body[6] * 256
900899
) / 100
901-
elif data_type in (SubBodyType.X13, SubBodyType.X21):
900+
elif data_type in (ListTypes.X13, ListTypes.X21):
902901
pass
903902

904903

@@ -908,27 +907,29 @@ class MessageACResponse(MessageResponse):
908907
def __init__(self, message: bytearray, power_analysis_method: int = 3) -> None:
909908
"""Initialize AC message response."""
910909
super().__init__(message)
911-
if self.message_type == MessageType.notify2 and self.body_type == BodyType.A0:
910+
if self.message_type == MessageType.notify2 and self.body_type == ListTypes.A0:
912911
self.set_body(XA0MessageBody(super().body))
913-
elif self.message_type == MessageType.notify1 and self.body_type == BodyType.A1:
912+
elif (
913+
self.message_type == MessageType.notify1 and self.body_type == ListTypes.A1
914+
):
914915
self.set_body(XA1MessageBody(super().body))
915916
elif self.message_type in [
916917
MessageType.query,
917918
MessageType.set,
918919
MessageType.notify2,
919-
] and self.body_type in [BodyType.B0, BodyType.B1, BodyType.B5]:
920+
] and self.body_type in [ListTypes.B0, ListTypes.B1, ListTypes.B5]:
920921
self.set_body(XBXMessageBody(super().body, self.body_type))
921922
elif (
922923
self.message_type in [MessageType.query, MessageType.set]
923-
and self.body_type == BodyType.C0
924+
and self.body_type == ListTypes.C0
924925
):
925926
self.set_body(XC0MessageBody(super().body))
926-
elif self.message_type == MessageType.query and self.body_type == BodyType.C1:
927+
elif self.message_type == MessageType.query and self.body_type == ListTypes.C1:
927928
self.set_body(XC1MessageBody(super().body, power_analysis_method))
928929
elif (
929930
self.message_type
930931
in [MessageType.set, MessageType.query, MessageType.notify2]
931-
and self.body_type == BodyType.BB
932+
and self.body_type == ListTypes.BB
932933
and len(super().body) >= BB_MIN_BODY_LENGTH
933934
):
934935
self.used_subprotocol = True

midealocal/devices/b0/message.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from midealocal.const import MAX_BYTE_VALUE, DeviceType, ProtocolVersion
44
from midealocal.message import (
5-
BodyType,
5+
ListTypes,
66
MessageBody,
77
MessageRequest,
88
MessageResponse,
@@ -19,7 +19,7 @@ def __init__(
1919
self,
2020
protocol_version: int,
2121
message_type: MessageType,
22-
body_type: BodyType,
22+
body_type: ListTypes,
2323
) -> None:
2424
"""Initialize B0 message base."""
2525
super().__init__(
@@ -42,7 +42,7 @@ def __init__(self, protocol_version: ProtocolVersion) -> None:
4242
super().__init__(
4343
protocol_version=protocol_version,
4444
message_type=MessageType.query,
45-
body_type=BodyType.X00,
45+
body_type=ListTypes.X00,
4646
)
4747

4848
@property
@@ -58,7 +58,7 @@ def __init__(self, protocol_version: int) -> None:
5858
super().__init__(
5959
protocol_version=protocol_version,
6060
message_type=MessageType.query,
61-
body_type=BodyType.X01,
61+
body_type=ListTypes.X01,
6262
)
6363

6464
@property
@@ -108,9 +108,9 @@ def __init__(self, message: bytearray) -> None:
108108
"""Initialize B0 message response."""
109109
super().__init__(message)
110110
if self.message_type in [MessageType.notify1, MessageType.query]:
111-
if self.body_type == BodyType.X01:
111+
if self.body_type == ListTypes.X01:
112112
self.set_body(B0Message01Body(super().body))
113-
elif self.body_type == BodyType.X04:
113+
elif self.body_type == ListTypes.X04:
114114
pass
115115
else:
116116
self.set_body(B0MessageBody(super().body))

midealocal/devices/b1/message.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from midealocal.const import MAX_BYTE_VALUE, DeviceType
44
from midealocal.message import (
5-
BodyType,
5+
ListTypes,
66
MessageBody,
77
MessageRequest,
88
MessageResponse,
@@ -17,7 +17,7 @@ def __init__(
1717
self,
1818
protocol_version: int,
1919
message_type: MessageType,
20-
body_type: BodyType,
20+
body_type: ListTypes,
2121
) -> None:
2222
"""Initialize B1 message base."""
2323
super().__init__(
@@ -40,7 +40,7 @@ def __init__(self, protocol_version: int) -> None:
4040
super().__init__(
4141
protocol_version=protocol_version,
4242
message_type=MessageType.query,
43-
body_type=BodyType.X00,
43+
body_type=ListTypes.X00,
4444
)
4545

4646
@property

midealocal/devices/b3/message.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from midealocal.const import MAX_BYTE_VALUE, DeviceType
44
from midealocal.message import (
5-
BodyType,
5+
ListTypes,
66
MessageBody,
77
MessageRequest,
88
MessageResponse,
@@ -24,7 +24,7 @@ def __init__(
2424
self,
2525
protocol_version: int,
2626
message_type: MessageType,
27-
body_type: BodyType,
27+
body_type: ListTypes,
2828
) -> None:
2929
"""Initialize B3 message base."""
3030
super().__init__(
@@ -47,7 +47,7 @@ def __init__(self, protocol_version: int) -> None:
4747
super().__init__(
4848
protocol_version=protocol_version,
4949
message_type=MessageType.query,
50-
body_type=BodyType.X31,
50+
body_type=ListTypes.X31,
5151
)
5252

5353
@property
@@ -218,16 +218,16 @@ def __init__(self, message: bytes) -> None:
218218
super().__init__(bytearray(message))
219219
if (
220220
self.message_type == MessageType.query
221-
and self.body_type == BodyType.X31
221+
and self.body_type == ListTypes.X31
222222
or self.message_type == MessageType.notify1
223-
and self.body_type == BodyType.X41
223+
and self.body_type == ListTypes.X41
224224
):
225225
self.set_body(B3MessageBody31(super().body))
226226
elif (
227227
self.message_type == MessageType.set
228-
and self.body_type == BodyType.X21
228+
and self.body_type == ListTypes.X21
229229
or self.message_type == MessageType.set
230-
and self.body_type == BodyType.X24
230+
and self.body_type == ListTypes.X24
231231
):
232232
self.set_body(B3MessageBody21(super().body))
233233
self.set_attr()

midealocal/devices/b4/message.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from midealocal.const import MAX_BYTE_VALUE, DeviceType
44
from midealocal.message import (
5-
BodyType,
5+
ListTypes,
66
MessageBody,
77
MessageRequest,
88
MessageResponse,
@@ -17,7 +17,7 @@ def __init__(
1717
self,
1818
protocol_version: int,
1919
message_type: MessageType,
20-
body_type: BodyType,
20+
body_type: ListTypes,
2121
) -> None:
2222
"""Initialize B4 message base."""
2323
super().__init__(
@@ -40,7 +40,7 @@ def __init__(self, protocol_version: int) -> None:
4040
super().__init__(
4141
protocol_version=protocol_version,
4242
message_type=MessageType.query,
43-
body_type=BodyType.X01,
43+
body_type=ListTypes.X01,
4444
)
4545

4646
@property
@@ -82,7 +82,7 @@ def __init__(self, message: bytes) -> None:
8282
MessageType.query,
8383
MessageType.set,
8484
]
85-
and self.body_type == BodyType.X01
85+
and self.body_type == ListTypes.X01
8686
):
8787
self.set_body(B4MessageBody(super().body))
8888
self.set_attr()

0 commit comments

Comments
 (0)