mirror of
https://github.com/home-assistant/core.git
synced 2025-11-12 04:20:17 +00:00
Support fetching/setting humidity of HomeKit controller thermostats (#23040)
* Add support for homekit humidity control * Add tests
This commit is contained in:
@@ -4,7 +4,7 @@ import logging
|
||||
from homeassistant.components.climate import ClimateDevice
|
||||
from homeassistant.components.climate.const import (
|
||||
STATE_COOL, STATE_HEAT, STATE_IDLE, SUPPORT_OPERATION_MODE,
|
||||
SUPPORT_TARGET_TEMPERATURE)
|
||||
SUPPORT_TARGET_TEMPERATURE, SUPPORT_TARGET_HUMIDITY)
|
||||
from homeassistant.const import ATTR_TEMPERATURE, STATE_OFF, TEMP_CELSIUS
|
||||
|
||||
from . import KNOWN_DEVICES, HomeKitEntity
|
||||
@@ -41,6 +41,8 @@ class HomeKitClimateDevice(HomeKitEntity, ClimateDevice):
|
||||
self._valid_modes = []
|
||||
self._current_temp = None
|
||||
self._target_temp = None
|
||||
self._current_humidity = None
|
||||
self._target_humidity = None
|
||||
super().__init__(*args)
|
||||
|
||||
def get_characteristic_types(self):
|
||||
@@ -52,6 +54,8 @@ class HomeKitClimateDevice(HomeKitEntity, ClimateDevice):
|
||||
CharacteristicsTypes.HEATING_COOLING_TARGET,
|
||||
CharacteristicsTypes.TEMPERATURE_CURRENT,
|
||||
CharacteristicsTypes.TEMPERATURE_TARGET,
|
||||
CharacteristicsTypes.RELATIVE_HUMIDITY_CURRENT,
|
||||
CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET,
|
||||
]
|
||||
|
||||
def _setup_heating_cooling_target(self, characteristic):
|
||||
@@ -82,6 +86,9 @@ class HomeKitClimateDevice(HomeKitEntity, ClimateDevice):
|
||||
def _setup_temperature_target(self, characteristic):
|
||||
self._features |= SUPPORT_TARGET_TEMPERATURE
|
||||
|
||||
def _setup_relative_humidity_target(self, characteristic):
|
||||
self._features |= SUPPORT_TARGET_HUMIDITY
|
||||
|
||||
def _update_heating_cooling_current(self, value):
|
||||
self._state = MODE_HOMEKIT_TO_HASS.get(value)
|
||||
|
||||
@@ -94,6 +101,12 @@ class HomeKitClimateDevice(HomeKitEntity, ClimateDevice):
|
||||
def _update_temperature_target(self, value):
|
||||
self._target_temp = value
|
||||
|
||||
def _update_relative_humidity_current(self, value):
|
||||
self._current_humidity = value
|
||||
|
||||
def _update_relative_humidity_target(self, value):
|
||||
self._target_humidity = value
|
||||
|
||||
async def async_set_temperature(self, **kwargs):
|
||||
"""Set new target temperature."""
|
||||
temp = kwargs.get(ATTR_TEMPERATURE)
|
||||
@@ -103,6 +116,13 @@ class HomeKitClimateDevice(HomeKitEntity, ClimateDevice):
|
||||
'value': temp}]
|
||||
await self._accessory.put_characteristics(characteristics)
|
||||
|
||||
async def async_set_humidity(self, humidity):
|
||||
"""Set new target humidity."""
|
||||
characteristics = [{'aid': self._aid,
|
||||
'iid': self._chars['relative-humidity.target'],
|
||||
'value': humidity}]
|
||||
await self._accessory.put_characteristics(characteristics)
|
||||
|
||||
async def async_set_operation_mode(self, operation_mode):
|
||||
"""Set new target operation mode."""
|
||||
characteristics = [{'aid': self._aid,
|
||||
@@ -132,6 +152,16 @@ class HomeKitClimateDevice(HomeKitEntity, ClimateDevice):
|
||||
"""Return the temperature we try to reach."""
|
||||
return self._target_temp
|
||||
|
||||
@property
|
||||
def current_humidity(self):
|
||||
"""Return the current humidity."""
|
||||
return self._current_humidity
|
||||
|
||||
@property
|
||||
def target_humidity(self):
|
||||
"""Return the humidity we try to reach."""
|
||||
return self._target_humidity
|
||||
|
||||
@property
|
||||
def current_operation(self):
|
||||
"""Return current operation ie. heat, cool, idle."""
|
||||
|
||||
Reference in New Issue
Block a user