Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Daikin preset modes #25395

Merged
merged 2 commits into from Jul 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
29 changes: 16 additions & 13 deletions homeassistant/components/daikin/climate.py
Expand Up @@ -12,15 +12,16 @@
SUPPORT_SWING_MODE,
HVAC_MODE_OFF, HVAC_MODE_HEAT, HVAC_MODE_COOL, HVAC_MODE_HEAT_COOL,
HVAC_MODE_DRY, HVAC_MODE_FAN_ONLY,
PRESET_AWAY, PRESET_HOME,
PRESET_AWAY, PRESET_NONE,
ATTR_CURRENT_TEMPERATURE, ATTR_FAN_MODE,
ATTR_HVAC_MODE, ATTR_SWING_MODE,
ATTR_PRESET_MODE)
import homeassistant.helpers.config_validation as cv

from . import DOMAIN as DAIKIN_DOMAIN
from .const import (
ATTR_INSIDE_TEMPERATURE, ATTR_OUTSIDE_TEMPERATURE, ATTR_TARGET_TEMPERATURE)
ATTR_INSIDE_TEMPERATURE, ATTR_OUTSIDE_TEMPERATURE, ATTR_STATE_OFF,
ATTR_STATE_ON, ATTR_TARGET_TEMPERATURE)

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -49,7 +50,7 @@

HA_PRESET_TO_DAIKIN = {
PRESET_AWAY: 'on',
PRESET_HOME: 'off'
PRESET_NONE: 'off'
}

HA_ATTR_TO_DAIKIN = {
Expand Down Expand Up @@ -142,9 +143,10 @@ def get(self, key):
ha_mode = DAIKIN_TO_HA_STATE.get(daikin_mode)
value = ha_mode
elif key == ATTR_PRESET_MODE:
away = (self._api.device.represent(daikin_attr)[1]
!= HA_STATE_TO_DAIKIN[HVAC_MODE_OFF])
value = PRESET_AWAY if away else PRESET_HOME
if self._api.device.represent(
daikin_attr)[1] == HA_PRESET_TO_DAIKIN[PRESET_AWAY]:
return PRESET_AWAY
return PRESET_NONE

if value is None:
_LOGGER.error("Invalid value requested for key %s", key)
Expand All @@ -164,7 +166,7 @@ async def _set(self, settings):
values = {}

for attr in [ATTR_TEMPERATURE, ATTR_FAN_MODE, ATTR_SWING_MODE,
ATTR_HVAC_MODE, ATTR_PRESET_MODE]:
ATTR_HVAC_MODE]:
value = settings.get(attr)
if value is None:
continue
Expand All @@ -173,8 +175,6 @@ async def _set(self, settings):
if daikin_attr is not None:
if attr == ATTR_HVAC_MODE:
values[daikin_attr] = HA_STATE_TO_DAIKIN[value]
elif attr == ATTR_PRESET_MODE:
values[daikin_attr] = HA_PRESET_TO_DAIKIN[value]
elif value in self._list[attr]:
values[daikin_attr] = value.lower()
else:
Expand Down Expand Up @@ -273,16 +273,19 @@ def swing_modes(self):

@property
def preset_mode(self):
"""Return the fan setting."""
"""Return the preset_mode."""
return self.get(ATTR_PRESET_MODE)

async def async_set_preset_mode(self, preset_mode):
"""Set new target temperature."""
await self._set({ATTR_PRESET_MODE: preset_mode})
"""Set preset mode."""
if preset_mode == PRESET_AWAY:
await self._api.device.set_holiday(ATTR_STATE_ON)
else:
await self._api.device.set_holiday(ATTR_STATE_OFF)

@property
def preset_modes(self):
"""List of available swing modes."""
"""List of available preset modes."""
return list(HA_PRESET_TO_DAIKIN)

async def async_update(self):
Expand Down
3 changes: 3 additions & 0 deletions homeassistant/components/daikin/const.py
Expand Up @@ -5,6 +5,9 @@
ATTR_INSIDE_TEMPERATURE = 'inside_temperature'
ATTR_OUTSIDE_TEMPERATURE = 'outside_temperature'

ATTR_STATE_ON = 'on'
ATTR_STATE_OFF = 'off'

SENSOR_TYPE_TEMPERATURE = 'temperature'

SENSOR_TYPES = {
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/daikin/manifest.json
Expand Up @@ -4,7 +4,7 @@
"config_flow": true,
"documentation": "https://www.home-assistant.io/components/daikin",
"requirements": [
"pydaikin==1.4.6"
"pydaikin==1.5.1"
],
"dependencies": [],
"codeowners": [
Expand Down
2 changes: 1 addition & 1 deletion requirements_all.txt
Expand Up @@ -1084,7 +1084,7 @@ pycsspeechtts==1.0.2
# pycups==1.9.73

# homeassistant.components.daikin
pydaikin==1.4.6
pydaikin==1.5.1

# homeassistant.components.danfoss_air
pydanfossair==0.1.0
Expand Down