Skip to content

Commit

Permalink
Daikin Climate - Better integration with Climate base component (#16913)
Browse files Browse the repository at this point in the history
* Daikin Climate - Better integration with Climate base component

Made some modification in order to better integrate the Daikin AC Component with the base Climate Component.
Benefits are:
Support localization for Operation Mode
Support for Homekit Integration (if the AC is turned On, now the status is updated in Homekit)

* Build bug fixing

* Bug fixing in Set Operation_Mode functionality

Fixed to .title() functionality in matching the Operation_Mode

* Fix useless code

* Fix hound bug

* Bug fixing

Change in list of Operation Mode

* Trailing white space fix

* Compile fixing

* Whitespace fix
  • Loading branch information
MatteGary authored and MartinHjelmare committed Oct 8, 2018
1 parent f2d8f3b commit ee5e1fa
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions homeassistant/components/climate/daikin.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@
STATE_OFF: 'off',
}

DAIKIN_TO_HA_STATE = {
'fan': STATE_FAN_ONLY,
'dry': STATE_DRY,
'cool': STATE_COOL,
'hot': STATE_HEAT,
'auto': STATE_AUTO,
'off': STATE_OFF,
}

HA_ATTR_TO_DAIKIN = {
ATTR_OPERATION_MODE: 'mode',
ATTR_FAN_MODE: 'f_rate',
Expand Down Expand Up @@ -75,9 +84,7 @@ def __init__(self, api):
self._api = api
self._force_refresh = False
self._list = {
ATTR_OPERATION_MODE: list(
map(str.title, set(HA_STATE_TO_DAIKIN.values()))
),
ATTR_OPERATION_MODE: list(HA_STATE_TO_DAIKIN),
ATTR_FAN_MODE: list(
map(
str.title,
Expand Down Expand Up @@ -136,11 +143,11 @@ def get(self, key):
elif key == ATTR_OPERATION_MODE:
# Daikin can return also internal states auto-1 or auto-7
# and we need to translate them as AUTO
value = re.sub(
'[^a-z]',
'',
self._api.device.represent(daikin_attr)[1]
).title()
daikin_mode = re.sub(
'[^a-z]', '',
self._api.device.represent(daikin_attr)[1])
ha_mode = DAIKIN_TO_HA_STATE.get(daikin_mode)
value = ha_mode

if value is None:
_LOGGER.error("Invalid value requested for key %s", key)
Expand All @@ -167,8 +174,8 @@ def set(self, settings):

daikin_attr = HA_ATTR_TO_DAIKIN.get(attr)
if daikin_attr is not None:
if value.title() in self._list[attr]:
values[daikin_attr] = value.lower()
if value in self._list[attr]:
values[daikin_attr] = HA_STATE_TO_DAIKIN[value]
else:
_LOGGER.error("Invalid value %s for %s", attr, value)

Expand Down

0 comments on commit ee5e1fa

Please sign in to comment.