Skip to content

Commit

Permalink
feat(ed): add new query01 msg for ed device
Browse files Browse the repository at this point in the history
  • Loading branch information
wuwentao committed Oct 16, 2024
1 parent ea90491 commit 725fb6b
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 8 deletions.
15 changes: 12 additions & 3 deletions midealocal/devices/ed/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@
from midealocal.device import MideaDevice
from midealocal.message import ListTypes

from .message import MessageEDResponse, MessageNewSet, MessageOldSet, MessageQuery
from .message import (
MessageEDResponse,
MessageNewSet,
MessageOldSet,
MessageQuery,
MessageQuery01,
)

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -77,9 +83,12 @@ def _use_new_set(self) -> bool:
# if (self.sub_type > 342 or self.sub_type == 340) else False
return True

def build_query(self) -> list[MessageQuery]:
def build_query(self) -> list[MessageQuery | MessageQuery01]:
"""Midea ED device build query."""
return [MessageQuery(self._message_protocol_version, self._device_class)]
return [
MessageQuery(self._message_protocol_version),
MessageQuery01(self._message_protocol_version),
]

def process_message(self, msg: bytes) -> dict[str, Any]:
"""Midea ED device process message."""
Expand Down
26 changes: 25 additions & 1 deletion midealocal/devices/ed/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,11 @@ def _body(self) -> bytearray:
class MessageQuery(MessageEDBase):
"""ED message query."""

def __init__(self, protocol_version: int, body_type: ListTypes) -> None:
def __init__(
self,
protocol_version: int,
body_type: ListTypes = ListTypes.X00,
) -> None:
"""Initialize ED message query."""
super().__init__(
protocol_version=protocol_version,
Expand All @@ -77,6 +81,26 @@ def _body(self) -> bytearray:
return bytearray([0x01])


class MessageQuery01(MessageEDBase):
"""ED message query01."""

def __init__(
self,
protocol_version: int,
body_type: ListTypes = ListTypes.X01,
) -> None:
"""Initialize ED message query01."""
super().__init__(
protocol_version=protocol_version,
message_type=MessageType.query,
body_type=body_type,
)

@property
def _body(self) -> bytearray:
return bytearray([0x01])


class MessageNewSet(MessageEDBase):
"""ED message new set."""

Expand Down
5 changes: 3 additions & 2 deletions tests/devices/ed/device_ed_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from midealocal.const import ProtocolVersion
from midealocal.devices.ed import DeviceAttributes, MideaEDDevice
from midealocal.devices.ed.message import MessageQuery
from midealocal.devices.ed.message import MessageQuery, MessageQuery01


class TestMideaEDDevice:
Expand Down Expand Up @@ -89,8 +89,9 @@ def test_process_message(self) -> None:
def test_build_query(self) -> None:
"""Test build query."""
queries = self.device.build_query()
assert len(queries) == 1
assert len(queries) == 2
assert isinstance(queries[0], MessageQuery)
assert isinstance(queries[1], MessageQuery01)

def test_set_attribute(self) -> None:
"""Test set attribute."""
Expand Down
16 changes: 14 additions & 2 deletions tests/devices/ed/message_ed_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
MessageEDResponse,
MessageNewSet,
MessageQuery,
MessageQuery01,
)
from midealocal.message import ListTypes, MessageType

Expand All @@ -39,9 +40,20 @@ def test_query_body(self) -> None:
"""Test query body."""
query = MessageQuery(
protocol_version=ProtocolVersion.V1,
body_type=ListTypes.X02,
)
expected_body = bytearray([0x02, 0x01])
expected_body = bytearray([0x00, 0x01])
assert query.body == expected_body


class TestMessageQuery01:
"""Test Message Query01."""

def test_query_body(self) -> None:
"""Test query body."""
query = MessageQuery01(
protocol_version=ProtocolVersion.V1,
)
expected_body = bytearray([0x01, 0x01])
assert query.body == expected_body


Expand Down

0 comments on commit 725fb6b

Please sign in to comment.