Climate Entity

A climate entity is a device that controls temperature, humidity, or fans, such as A/C systems and humidifiers. Derive entity platforms from homeassistant.components.climate.ClimateDevice



Properties should always only return information from memory and not do I/O (like network requests). Implement update() or async_update() to fetch data.

temperature_unitstringNotImplementedErrorThe unit of temperature measurement for the system (TEMP_CELSIUS or TEMP_FAHRENHEIT).
precisionfloatBased on temperature_unitThe precision of the temperature in the system. Defaults to tenths for TEMP_CELSIUS, whole number otherwise.
current_temperaturefloatNoneThe current temperature.
current_humidityfloatNoneThe current humidity.
target_temperaturefloatNoneThe temperature currently set to be reached.
target_temperature_highfloatNoneThe upper bound target temperature
target_temperature_lowfloatNoneThe lower bound target temperature
target_temperature_stepfloatNoneThe supported step size a target temperature can be increased/decreased
target_humidityfloatNoneThe target humidity the device is trying to reach. Requires SUPPORT_TARGET_HUMIDITY.
max_tempintDEFAULT_MAX_TEMP (value == 35)Returns the maximum temperature.
min_tempintDEFAULT_MIN_TEMP (value == 7)Returns the minimum temperature.
max_humidityintDEFAULT_MAX_HUMIDITY (value == 99)Returns the maximum humidity. Requires SUPPORT_TARGET_HUMIDITY.
min_humidityintDEFAULT_MIN_HUMIDITY (value == 30)Returns the minimum humidity. Requires SUPPORT_TARGET_HUMIDITY.
hvac_modestringNotImplementedError()The current operation (e.g. heat, cool, idle). Used to determine state.
hvac_actionstringNoneThe current HVAC action (heating, cooling)
hvac_modeslistNotImplementedError()List of available operation modes. See below.
preset_modestringNotImplementedError()The current active preset. Requires SUPPORT_PRESET_MODE.
preset_modeslistNotImplementedError()The available presets. Requires SUPPORT_PRESET_MODE.
fan_modestringNotImplementedError()Returns the current fan mode. Requires SUPPORT_FAN_MODE.
fan_modeslistNotImplementedError()Returns the list of available fan modes. Requires SUPPORT_FAN_MODE.
swing_modestringNotImplementedError()Returns the swing setting.
swing_modeslistNotImplementedError()Returns the list of available swing modes.
is_aux_heatboolNoneReturns True if an auxiliary heater is on. Requires SUPPORT_AUX_HEAT.
supported_featuresintNotImplementedError()Bitmap of supported features. See below.

HVAC modes

You are only allowed to use the built-in HVAC modes. If you want another mode, add a preset instead.

HVAC_MODE_OFFThe device is turned off.
HVAC_MODE_HEATThe device is set to heat to a target temperature.
HVAC_MODE_COOLThe device is set to cool to a target temperature.
HVAC_MODE_HEAT_COOLThe device supports heating/cooling to a range
HVAC_MODE_AUTOThe device is set to a schedule, learned behavior, AI.
HVAC_MODE_DRYThe device is set to dry/humidity mode.
HVAC_MODE_FAN_ONLYThe device only has the fan on. No heating or cooling taking place.

HVAC Action

The HVAC action describes the current action. This is different from the mode, because if a device is set to heat, and the target temperature is already achieved, the device will not be actively heating anymore.

CURRENT_HVAC_OFFDevice is turned off.
CURRENT_HVAC_HEATDevice is heating.
CURRENT_HVAC_COOLDevice is cooling.
CURRENT_HVAC_DRYDevice is dring.
CURRENT_HVAC_IDLEDevice is idle.


A device can have different presets that it might want to show to the user. Common presets are "Away" or "Eco". There are a couple of built-in presets that will offer translations, but you're also allowed to add custom presets.

ECODevice is running an energy-saving mode
AWAYDevice is in away mode
BOOSTDevice turn all valve full up
COMFORTDevice is in comfort mode
HOMEDevice is in home mode
SLEEPDevice is prepared for sleep
ACTIVITYDevice is reacting to activity (e.g. movement sensors)

Fan modes

A device's fan can have different states. There are a couple of built-in fan modes, but you're also allowed to use custom fan modes.


Swing modes

The device fan can have different swing modes that it wants the user to know about/control.

SWING_OFFThe fan is not swinging.
SWING_VERTICALThe fan is swinging vertical.
SWING_HORIZONTALThe fan is swinging horizontal.
SWING_BOTHThe fan is swinging both horizontal and vertical.

Supported features

Supported features constants are combined using the bitwise or (|) operator.

NameBit valueDescription
SUPPORT_TARGET_TEMPERATURE1The device supports a target temperature.
SUPPORT_TARGET_TEMPERATURE_RANGE2The device supports a ranged target temperature. Used for HVAC modes heat_cool and auto
SUPPORT_TARGET_HUMIDITY4The device supports a target humidity.
SUPPORT_FAN_MODE8The device supports fan modes.
SUPPORT_PRESET_MODE16The device supports presets.
SUPPORT_SWING_MODE32The device supports swing modes.
SUPPORT_AUX_HEAT64The device supports auxiliary heaters.


Set hvac mode

class MyClimateDevice(ClimateDevice):
# Implement one of these methods.
def set_hvac_mode(self, hvac_mode):
"""Set new target hvac mode."""
async def async_set_hvac_mode(self, hvac_mode):
"""Set new target hvac mode."""

Set preset mode

class MyClimateDevice(ClimateDevice):
# Implement one of these methods.
def set_preset_mode(self, preset_mode):
"""Set new target preset mode."""
async def async_set_preset_mode(self, preset_mode):
"""Set new target preset mode."""

Set fan mode

class MyClimateDevice(ClimateDevice):
# Implement one of these methods.
def set_fan_mode(self, fan_mode):
"""Set new target fan mode."""
async def async_set_fan_mode(self, fan_mode):
"""Set new target fan mode."""

Set humidity

class MyClimateDevice(ClimateDevice):
# Implement one of these methods.
def set_humidity(self, humidity):
"""Set new target humidity."""
async def async_set_humidity(self, humidity):
"""Set new target humidity."""

Set swing mode

class MyClimateDevice(ClimateDevice):
# Implement one of these methods.
def set_swing_mode(self, swing_mode):
"""Set new target swing operation."""
async def async_set_swing_mode(self, swing_mode):
"""Set new target swing operation."""

Set temperature

class MyClimateDevice(ClimateDevice):
# Implement one of these methods.
def set_temperature(self, **kwargs):
"""Set new target temperature."""
async def async_set_temperature(self, **kwargs):
"""Set new target temperature."""

Control auxiliary heater

class MyClimateDevice(ClimateDevice):
# Implement one of these methods.
def turn_aux_heat_on(self):
"""Turn auxiliary heater on."""
async def async_turn_aux_heat_on(self):
"""Turn auxiliary heater on."""
# Implement one of these methods.
def turn_aux_heat_off(self):
"""Turn auxiliary heater off."""
async def async_turn_aux_heat_off(self):
"""Turn auxiliary heater off."""