[go: nahoru, domu]

Skip to content

Commit

Permalink
feat(climate): Support more horizontal swing (#53)
Browse files Browse the repository at this point in the history
* feat(climate): Support more horizontal swing

* refactor: Refine horizontal swing
  • Loading branch information
sykuang committed Jul 12, 2023
1 parent a6164a6 commit 65f6224
Showing 1 changed file with 64 additions and 7 deletions.
71 changes: 64 additions & 7 deletions custom_components/jcihitachi_tw/climate.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@
PRESET_MOLD_PREVENTION = "Mold Prev"
PRESET_ECO_MOLD_PREVENTION = "Eco & Mold Prev"

SWING_HORIZONTAL_LEFTMOST = "Horizontal Leftmost"
SWING_HORIZONTAL_MIDDLE_LEFT = "Horizontal Middle Left"
SWING_HORIZONTAL_MIDDLE_RIGHT = "Horizontal Middle Right"
SWING_HORIZONTAL_RIGHTMOST = "Horizontal Rightmost"
SWING_HORIZONTAL_LEFTMOST_VERTICAL_SWING = "Horizontal Leftmost + Vertical Swing"
SWING_HORIZONTAL_MIDDLE_LEFT_VERTICAL_SWING = "Horizontal Middle Left + Vertical Swing"
SWING_HORIZONTAL_MIDDLE_RIGHT_VERTICAL_SWING = "Horizontal Middle Right + Vertical Swing"
SWING_HORIZONTAL_RIGHTMOST_VERTICAL_SWING = "Horizontal Rightmost + Vertical Swing"

SUPPORT_FAN = [
FAN_AUTO,
FAN_SILENT,
Expand All @@ -45,8 +54,17 @@
SWING_OFF,
SWING_VERTICAL,
SWING_HORIZONTAL,
SWING_BOTH
SWING_BOTH,
SWING_HORIZONTAL_LEFTMOST,
SWING_HORIZONTAL_MIDDLE_LEFT,
SWING_HORIZONTAL_MIDDLE_RIGHT,
SWING_HORIZONTAL_RIGHTMOST,
SWING_HORIZONTAL_LEFTMOST_VERTICAL_SWING,
SWING_HORIZONTAL_MIDDLE_LEFT_VERTICAL_SWING,
SWING_HORIZONTAL_MIDDLE_RIGHT_VERTICAL_SWING,
SWING_HORIZONTAL_RIGHTMOST_VERTICAL_SWING,
]

SUPPORT_HVAC = [
HVAC_MODE_OFF,
HVAC_MODE_COOL,
Expand Down Expand Up @@ -210,14 +228,29 @@ def fan_modes(self):
def swing_mode(self):
status = self.hass.data[DOMAIN][UPDATED_DATA][self._thing.name]
if status:
if status.vertical_wind_swingable == "enabled" and \
status.horizontal_wind_direction == "auto":
return SWING_BOTH
elif status.vertical_wind_swingable == "enabled":
if status.vertical_wind_swingable == "enabled":
if status.horizontal_wind_direction == "auto":
return SWING_BOTH
elif status.horizontal_wind_direction == "leftmost":
return SWING_HORIZONTAL_LEFTMOST_VERTICAL_SWING
elif status.horizontal_wind_direction == "middleleft":
return SWING_HORIZONTAL_MIDDLE_LEFT_VERTICAL_SWING
elif status.horizontal_wind_direction == "middleright":
return SWING_HORIZONTAL_MIDDLE_RIGHT_VERTICAL_SWING
elif status.horizontal_wind_direction == "rightmost":
return SWING_HORIZONTAL_RIGHTMOST_VERTICAL_SWING
return SWING_VERTICAL
elif status.horizontal_wind_direction == "auto":
return SWING_HORIZONTAL
else:
if status.horizontal_wind_direction == "auto":
return SWING_HORIZONTAL
elif status.horizontal_wind_direction == "leftmost":
return SWING_HORIZONTAL_LEFTMOST
elif status.horizontal_wind_direction == "middleleft":
return SWING_HORIZONTAL_MIDDLE_LEFT
elif status.horizontal_wind_direction == "middleright":
return SWING_HORIZONTAL_MIDDLE_RIGHT
elif status.horizontal_wind_direction == "rightmost":
return SWING_HORIZONTAL_RIGHTMOST
return SWING_OFF
_LOGGER.error("Missing swing_mode.")
return None
Expand Down Expand Up @@ -352,6 +385,30 @@ def set_swing_mode(self, swing_mode):
elif swing_mode == SWING_BOTH:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="enabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="auto")
elif swing_mode == SWING_HORIZONTAL_LEFTMOST:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="disabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="leftmost")
elif swing_mode == SWING_HORIZONTAL_MIDDLE_LEFT:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="disabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="middleleft")
elif swing_mode == SWING_HORIZONTAL_MIDDLE_RIGHT:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="disabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="middleright")
elif swing_mode == SWING_HORIZONTAL_RIGHTMOST:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="disabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="rightmost")
elif swing_mode == SWING_HORIZONTAL_LEFTMOST_VERTICAL_SWING:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="enabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="leftmost")
elif swing_mode == SWING_HORIZONTAL_MIDDLE_LEFT_VERTICAL_SWING:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="enabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="middleleft")
elif swing_mode == SWING_HORIZONTAL_MIDDLE_RIGHT_VERTICAL_SWING:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="enabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="middleright")
elif swing_mode == SWING_HORIZONTAL_RIGHTMOST_VERTICAL_SWING:
self.put_queue(status_name="vertical_wind_swingable", status_str_value="enabled")
self.put_queue(status_name="horizontal_wind_direction", status_str_value="rightmost")
else:
_LOGGER.error("Invalid swing_mode.")
self.update()
Expand Down

0 comments on commit 65f6224

Please sign in to comment.