Skip to content

Commit

Permalink
fix: allign set_target_temperature signatures (midea-lan#176)
Browse files Browse the repository at this point in the history
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced new methods to set target temperature and swing settings
for improved control of Midea AC devices.

- **Enhancements**
- Enhanced type handling for temperature settings across multiple
devices.
- Improved message processing logic for more accurate temperature
settings.

- **Bug Fixes**
- Adjusted parameter order in temperature setting methods for
consistency.
  - Updated temperature data types to float for better precision.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Necroneco <[email protected]>
  • Loading branch information
chemelli74 and caibinqing authored Jun 18, 2024
1 parent f4c6b87 commit 4d8c843
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 10 deletions.
7 changes: 6 additions & 1 deletion midealocal/devices/ac/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,12 @@ def set_attribute(self, attr: str, value: bool | int | str) -> None:
if message is not None:
self.build_send(message)

def set_target_temperature(self, target_temperature: float, mode: int) -> None:
def set_target_temperature(
self,
target_temperature: float,
mode: int | None,
zone: int | None = None, # noqa: ARG002
) -> None:
"""Midea AC device set target temperature."""
message: MessageSubProtocolSet | MessageGeneralSet = (
self.make_message_uniq_set()
Expand Down
4 changes: 2 additions & 2 deletions midealocal/devices/c3/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,9 @@ def set_mode(self, zone: int, mode: int) -> None:

def set_target_temperature(
self,
target_temperature: float,
mode: int | None,
zone: int,
target_temperature: int,
mode: int,
) -> None:
"""Midea C3 device set target temperature."""
message = self.make_message_set()
Expand Down
4 changes: 2 additions & 2 deletions midealocal/devices/c3/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ def __init__(self, protocol_version: int) -> None:
self.zone2_power = False
self.dhw_power = False
self.mode = 0
self.zone_target_temp = [25, 25]
self.zone_target_temp = [25.0, 25.0]
self.dhw_target_temp = 40
self.room_target_temp = 25
self.room_target_temp = 25.0
self.zone1_curve = False
self.zone2_curve = False
self.disinfect = False
Expand Down
7 changes: 6 additions & 1 deletion midealocal/devices/cc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,12 @@ def make_message_set(self) -> MessageSet:
message.swing = self._attributes[DeviceAttributes.swing]
return message

def set_target_temperature(self, target_temperature: int, mode: int) -> None:
def set_target_temperature(
self,
target_temperature: float,
mode: int | None,
zone: int | None = None, # noqa: ARG002
) -> None:
"""Midea CC device set target temperature."""
message = self.make_message_set()
message.target_temperature = target_temperature
Expand Down
2 changes: 1 addition & 1 deletion midealocal/devices/cc/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def __init__(self, protocol_version: int) -> None:
self.power = False
self.mode = 4
self.fan_speed = 0x80
self.target_temperature = 26
self.target_temperature: float = 26
self.eco_mode = False
self.sleep_mode = False
self.night_light = False
Expand Down
7 changes: 6 additions & 1 deletion midealocal/devices/cf/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,12 @@ def process_message(self, msg: bytes) -> dict[str, Any]:
new_status[str(status)] = getattr(message, str(status))
return new_status

def set_target_temperature(self, target_temperature: int, mode: int) -> None:
def set_target_temperature(
self,
target_temperature: float,
mode: int | None,
zone: int | None = None, # noqa: ARG002
) -> None:
"""Midea CF device set target temperature."""
message = MessageSet(self._protocol_version)
message.power = True
Expand Down
2 changes: 1 addition & 1 deletion midealocal/devices/cf/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def __init__(self, protocol_version: int) -> None:
)
self.power = False
self.mode = 0 # 1 自动 2 制冷 3 制热
self.target_temperature: int | None = None
self.target_temperature: float | None = None
self.aux_heating: bool | None = None

@property
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/ac/device_ac_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def test_set_attribute(self) -> None:
self.device.set_attribute(DeviceAttributes.mode.value, 2)
mock_build_send.assert_called()

self.device.set_target_temperature(26.0, 2)
self.device.set_target_temperature(26, 2)
mock_build_send.assert_called()

self.device.set_attribute(DeviceAttributes.prompt_tone.value, False)
Expand Down

0 comments on commit 4d8c843

Please sign in to comment.