200 lines
5.8 KiB
Python
200 lines
5.8 KiB
Python
"""Provides the constants needed for component."""
|
|
|
|
from enum import IntFlag, StrEnum
|
|
from functools import partial
|
|
|
|
from homeassistant.helpers.deprecation import (
|
|
DeprecatedConstantEnum,
|
|
all_with_deprecated_constants,
|
|
check_if_deprecated_constant,
|
|
dir_with_deprecated_constants,
|
|
)
|
|
|
|
|
|
class HVACMode(StrEnum):
|
|
"""HVAC mode for climate devices."""
|
|
|
|
# All activity disabled / Device is off/standby
|
|
OFF = "off"
|
|
|
|
# Heating
|
|
HEAT = "heat"
|
|
|
|
# Cooling
|
|
COOL = "cool"
|
|
|
|
# The device supports heating/cooling to a range
|
|
HEAT_COOL = "heat_cool"
|
|
|
|
# The temperature is set based on a schedule, learned behavior, AI or some
|
|
# other related mechanism. User is not able to adjust the temperature
|
|
AUTO = "auto"
|
|
|
|
# Device is in Dry/Humidity mode
|
|
DRY = "dry"
|
|
|
|
# Only the fan is on, not fan and another mode like cool
|
|
FAN_ONLY = "fan_only"
|
|
|
|
|
|
# These HVAC_MODE_* constants are deprecated as of Home Assistant 2022.5.
|
|
# Please use the HVACMode enum instead.
|
|
_DEPRECATED_HVAC_MODE_OFF = DeprecatedConstantEnum(HVACMode.OFF, "2025.1")
|
|
_DEPRECATED_HVAC_MODE_HEAT = DeprecatedConstantEnum(HVACMode.HEAT, "2025.1")
|
|
_DEPRECATED_HVAC_MODE_COOL = DeprecatedConstantEnum(HVACMode.COOL, "2025.1")
|
|
_DEPRECATED_HVAC_MODE_HEAT_COOL = DeprecatedConstantEnum(HVACMode.HEAT_COOL, "2025.1")
|
|
_DEPRECATED_HVAC_MODE_AUTO = DeprecatedConstantEnum(HVACMode.AUTO, "2025.1")
|
|
_DEPRECATED_HVAC_MODE_DRY = DeprecatedConstantEnum(HVACMode.DRY, "2025.1")
|
|
_DEPRECATED_HVAC_MODE_FAN_ONLY = DeprecatedConstantEnum(HVACMode.FAN_ONLY, "2025.1")
|
|
HVAC_MODES = [cls.value for cls in HVACMode]
|
|
|
|
# No preset is active
|
|
PRESET_NONE = "none"
|
|
|
|
# Device is running an energy-saving mode
|
|
PRESET_ECO = "eco"
|
|
|
|
# Device is in away mode
|
|
PRESET_AWAY = "away"
|
|
|
|
# Device turn all valve full up
|
|
PRESET_BOOST = "boost"
|
|
|
|
# Device is in comfort mode
|
|
PRESET_COMFORT = "comfort"
|
|
|
|
# Device is in home mode
|
|
PRESET_HOME = "home"
|
|
|
|
# Device is prepared for sleep
|
|
PRESET_SLEEP = "sleep"
|
|
|
|
# Device is reacting to activity (e.g. movement sensors)
|
|
PRESET_ACTIVITY = "activity"
|
|
|
|
# Possible fan state
|
|
FAN_ON = "on"
|
|
FAN_OFF = "off"
|
|
FAN_AUTO = "auto"
|
|
FAN_LOW = "low"
|
|
FAN_MEDIUM = "medium"
|
|
FAN_HIGH = "high"
|
|
FAN_TOP = "top"
|
|
FAN_MIDDLE = "middle"
|
|
FAN_FOCUS = "focus"
|
|
FAN_DIFFUSE = "diffuse"
|
|
|
|
|
|
# Possible swing state
|
|
SWING_ON = "on"
|
|
SWING_OFF = "off"
|
|
SWING_BOTH = "both"
|
|
SWING_VERTICAL = "vertical"
|
|
SWING_HORIZONTAL = "horizontal"
|
|
|
|
|
|
class HVACAction(StrEnum):
|
|
"""HVAC action for climate devices."""
|
|
|
|
COOLING = "cooling"
|
|
DRYING = "drying"
|
|
FAN = "fan"
|
|
HEATING = "heating"
|
|
IDLE = "idle"
|
|
OFF = "off"
|
|
PREHEATING = "preheating"
|
|
|
|
|
|
# These CURRENT_HVAC_* constants are deprecated as of Home Assistant 2022.5.
|
|
# Please use the HVACAction enum instead.
|
|
_DEPRECATED_CURRENT_HVAC_OFF = DeprecatedConstantEnum(HVACAction.OFF, "2025.1")
|
|
_DEPRECATED_CURRENT_HVAC_HEAT = DeprecatedConstantEnum(HVACAction.HEATING, "2025.1")
|
|
_DEPRECATED_CURRENT_HVAC_COOL = DeprecatedConstantEnum(HVACAction.COOLING, "2025.1")
|
|
_DEPRECATED_CURRENT_HVAC_DRY = DeprecatedConstantEnum(HVACAction.DRYING, "2025.1")
|
|
_DEPRECATED_CURRENT_HVAC_IDLE = DeprecatedConstantEnum(HVACAction.IDLE, "2025.1")
|
|
_DEPRECATED_CURRENT_HVAC_FAN = DeprecatedConstantEnum(HVACAction.FAN, "2025.1")
|
|
CURRENT_HVAC_ACTIONS = [cls.value for cls in HVACAction]
|
|
|
|
|
|
ATTR_AUX_HEAT = "aux_heat"
|
|
ATTR_CURRENT_HUMIDITY = "current_humidity"
|
|
ATTR_CURRENT_TEMPERATURE = "current_temperature"
|
|
ATTR_FAN_MODES = "fan_modes"
|
|
ATTR_FAN_MODE = "fan_mode"
|
|
ATTR_PRESET_MODE = "preset_mode"
|
|
ATTR_PRESET_MODES = "preset_modes"
|
|
ATTR_HUMIDITY = "humidity"
|
|
ATTR_MAX_HUMIDITY = "max_humidity"
|
|
ATTR_MIN_HUMIDITY = "min_humidity"
|
|
ATTR_MAX_TEMP = "max_temp"
|
|
ATTR_MIN_TEMP = "min_temp"
|
|
ATTR_HVAC_ACTION = "hvac_action"
|
|
ATTR_HVAC_MODES = "hvac_modes"
|
|
ATTR_HVAC_MODE = "hvac_mode"
|
|
ATTR_SWING_MODES = "swing_modes"
|
|
ATTR_SWING_MODE = "swing_mode"
|
|
ATTR_TARGET_TEMP_HIGH = "target_temp_high"
|
|
ATTR_TARGET_TEMP_LOW = "target_temp_low"
|
|
ATTR_TARGET_TEMP_STEP = "target_temp_step"
|
|
|
|
DEFAULT_MIN_TEMP = 7
|
|
DEFAULT_MAX_TEMP = 35
|
|
DEFAULT_MIN_HUMIDITY = 30
|
|
DEFAULT_MAX_HUMIDITY = 99
|
|
|
|
DOMAIN = "climate"
|
|
|
|
SERVICE_SET_AUX_HEAT = "set_aux_heat"
|
|
SERVICE_SET_FAN_MODE = "set_fan_mode"
|
|
SERVICE_SET_PRESET_MODE = "set_preset_mode"
|
|
SERVICE_SET_HUMIDITY = "set_humidity"
|
|
SERVICE_SET_HVAC_MODE = "set_hvac_mode"
|
|
SERVICE_SET_SWING_MODE = "set_swing_mode"
|
|
SERVICE_SET_TEMPERATURE = "set_temperature"
|
|
|
|
|
|
class ClimateEntityFeature(IntFlag):
|
|
"""Supported features of the climate entity."""
|
|
|
|
TARGET_TEMPERATURE = 1
|
|
TARGET_TEMPERATURE_RANGE = 2
|
|
TARGET_HUMIDITY = 4
|
|
FAN_MODE = 8
|
|
PRESET_MODE = 16
|
|
SWING_MODE = 32
|
|
AUX_HEAT = 64
|
|
TURN_OFF = 128
|
|
TURN_ON = 256
|
|
|
|
|
|
# These SUPPORT_* constants are deprecated as of Home Assistant 2022.5.
|
|
# Please use the ClimateEntityFeature enum instead.
|
|
_DEPRECATED_SUPPORT_TARGET_TEMPERATURE = DeprecatedConstantEnum(
|
|
ClimateEntityFeature.TARGET_TEMPERATURE, "2025.1"
|
|
)
|
|
_DEPRECATED_SUPPORT_TARGET_TEMPERATURE_RANGE = DeprecatedConstantEnum(
|
|
ClimateEntityFeature.TARGET_TEMPERATURE_RANGE, "2025.1"
|
|
)
|
|
_DEPRECATED_SUPPORT_TARGET_HUMIDITY = DeprecatedConstantEnum(
|
|
ClimateEntityFeature.TARGET_HUMIDITY, "2025.1"
|
|
)
|
|
_DEPRECATED_SUPPORT_FAN_MODE = DeprecatedConstantEnum(
|
|
ClimateEntityFeature.FAN_MODE, "2025.1"
|
|
)
|
|
_DEPRECATED_SUPPORT_PRESET_MODE = DeprecatedConstantEnum(
|
|
ClimateEntityFeature.PRESET_MODE, "2025.1"
|
|
)
|
|
_DEPRECATED_SUPPORT_SWING_MODE = DeprecatedConstantEnum(
|
|
ClimateEntityFeature.SWING_MODE, "2025.1"
|
|
)
|
|
_DEPRECATED_SUPPORT_AUX_HEAT = DeprecatedConstantEnum(
|
|
ClimateEntityFeature.AUX_HEAT, "2025.1"
|
|
)
|
|
|
|
# These can be removed if no deprecated constant are in this module anymore
|
|
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
|
|
__dir__ = partial(
|
|
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
|
|
)
|
|
__all__ = all_with_deprecated_constants(globals())
|