Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Provides the constants needed for component."""
2 
3 from enum import IntFlag, StrEnum
4 from functools import partial
5 
7  DeprecatedConstantEnum,
8  all_with_deprecated_constants,
9  check_if_deprecated_constant,
10  dir_with_deprecated_constants,
11 )
12 
13 
14 class HVACMode(StrEnum):
15  """HVAC mode for climate devices."""
16 
17  # All activity disabled / Device is off/standby
18  OFF = "off"
19 
20  # Heating
21  HEAT = "heat"
22 
23  # Cooling
24  COOL = "cool"
25 
26  # The device supports heating/cooling to a range
27  HEAT_COOL = "heat_cool"
28 
29  # The temperature is set based on a schedule, learned behavior, AI or some
30  # other related mechanism. User is not able to adjust the temperature
31  AUTO = "auto"
32 
33  # Device is in Dry/Humidity mode
34  DRY = "dry"
35 
36  # Only the fan is on, not fan and another mode like cool
37  FAN_ONLY = "fan_only"
38 
39 
40 # These HVAC_MODE_* constants are deprecated as of Home Assistant 2022.5.
41 # Please use the HVACMode enum instead.
42 _DEPRECATED_HVAC_MODE_OFF = DeprecatedConstantEnum(HVACMode.OFF, "2025.1")
43 _DEPRECATED_HVAC_MODE_HEAT = DeprecatedConstantEnum(HVACMode.HEAT, "2025.1")
44 _DEPRECATED_HVAC_MODE_COOL = DeprecatedConstantEnum(HVACMode.COOL, "2025.1")
45 _DEPRECATED_HVAC_MODE_HEAT_COOL = DeprecatedConstantEnum(HVACMode.HEAT_COOL, "2025.1")
46 _DEPRECATED_HVAC_MODE_AUTO = DeprecatedConstantEnum(HVACMode.AUTO, "2025.1")
47 _DEPRECATED_HVAC_MODE_DRY = DeprecatedConstantEnum(HVACMode.DRY, "2025.1")
48 _DEPRECATED_HVAC_MODE_FAN_ONLY = DeprecatedConstantEnum(HVACMode.FAN_ONLY, "2025.1")
49 HVAC_MODES = [cls.value for cls in HVACMode]
50 
51 # No preset is active
52 PRESET_NONE = "none"
53 
54 # Device is running an energy-saving mode
55 PRESET_ECO = "eco"
56 
57 # Device is in away mode
58 PRESET_AWAY = "away"
59 
60 # Device turn all valve full up
61 PRESET_BOOST = "boost"
62 
63 # Device is in comfort mode
64 PRESET_COMFORT = "comfort"
65 
66 # Device is in home mode
67 PRESET_HOME = "home"
68 
69 # Device is prepared for sleep
70 PRESET_SLEEP = "sleep"
71 
72 # Device is reacting to activity (e.g. movement sensors)
73 PRESET_ACTIVITY = "activity"
74 
75 # Possible fan state
76 FAN_ON = "on"
77 FAN_OFF = "off"
78 FAN_AUTO = "auto"
79 FAN_LOW = "low"
80 FAN_MEDIUM = "medium"
81 FAN_HIGH = "high"
82 FAN_TOP = "top"
83 FAN_MIDDLE = "middle"
84 FAN_FOCUS = "focus"
85 FAN_DIFFUSE = "diffuse"
86 
87 
88 # Possible swing state
89 SWING_ON = "on"
90 SWING_OFF = "off"
91 SWING_BOTH = "both"
92 SWING_VERTICAL = "vertical"
93 SWING_HORIZONTAL = "horizontal"
94 
95 # Possible horizontal swing state
96 SWING_HORIZONTAL_ON = "on"
97 SWING_HORIZONTAL_OFF = "off"
98 
99 
100 class HVACAction(StrEnum):
101  """HVAC action for climate devices."""
102 
103  COOLING = "cooling"
104  DEFROSTING = "defrosting"
105  DRYING = "drying"
106  FAN = "fan"
107  HEATING = "heating"
108  IDLE = "idle"
109  OFF = "off"
110  PREHEATING = "preheating"
111 
112 
113 # These CURRENT_HVAC_* constants are deprecated as of Home Assistant 2022.5.
114 # Please use the HVACAction enum instead.
115 _DEPRECATED_CURRENT_HVAC_OFF = DeprecatedConstantEnum(HVACAction.OFF, "2025.1")
116 _DEPRECATED_CURRENT_HVAC_HEAT = DeprecatedConstantEnum(HVACAction.HEATING, "2025.1")
117 _DEPRECATED_CURRENT_HVAC_COOL = DeprecatedConstantEnum(HVACAction.COOLING, "2025.1")
118 _DEPRECATED_CURRENT_HVAC_DRY = DeprecatedConstantEnum(HVACAction.DRYING, "2025.1")
119 _DEPRECATED_CURRENT_HVAC_IDLE = DeprecatedConstantEnum(HVACAction.IDLE, "2025.1")
120 _DEPRECATED_CURRENT_HVAC_FAN = DeprecatedConstantEnum(HVACAction.FAN, "2025.1")
121 CURRENT_HVAC_ACTIONS = [cls.value for cls in HVACAction]
122 
123 
124 ATTR_AUX_HEAT = "aux_heat"
125 ATTR_CURRENT_HUMIDITY = "current_humidity"
126 ATTR_CURRENT_TEMPERATURE = "current_temperature"
127 ATTR_FAN_MODES = "fan_modes"
128 ATTR_FAN_MODE = "fan_mode"
129 ATTR_PRESET_MODE = "preset_mode"
130 ATTR_PRESET_MODES = "preset_modes"
131 ATTR_HUMIDITY = "humidity"
132 ATTR_MAX_HUMIDITY = "max_humidity"
133 ATTR_MIN_HUMIDITY = "min_humidity"
134 ATTR_MAX_TEMP = "max_temp"
135 ATTR_MIN_TEMP = "min_temp"
136 ATTR_HVAC_ACTION = "hvac_action"
137 ATTR_HVAC_MODES = "hvac_modes"
138 ATTR_HVAC_MODE = "hvac_mode"
139 ATTR_SWING_MODES = "swing_modes"
140 ATTR_SWING_MODE = "swing_mode"
141 ATTR_SWING_HORIZONTAL_MODE = "swing_horizontal_mode"
142 ATTR_SWING_HORIZONTAL_MODES = "swing_horizontal_modes"
143 ATTR_TARGET_TEMP_HIGH = "target_temp_high"
144 ATTR_TARGET_TEMP_LOW = "target_temp_low"
145 ATTR_TARGET_TEMP_STEP = "target_temp_step"
146 
147 DEFAULT_MIN_TEMP = 7
148 DEFAULT_MAX_TEMP = 35
149 DEFAULT_MIN_HUMIDITY = 30
150 DEFAULT_MAX_HUMIDITY = 99
151 
152 DOMAIN = "climate"
153 
154 INTENT_GET_TEMPERATURE = "HassClimateGetTemperature"
155 
156 SERVICE_SET_AUX_HEAT = "set_aux_heat"
157 SERVICE_SET_FAN_MODE = "set_fan_mode"
158 SERVICE_SET_PRESET_MODE = "set_preset_mode"
159 SERVICE_SET_HUMIDITY = "set_humidity"
160 SERVICE_SET_HVAC_MODE = "set_hvac_mode"
161 SERVICE_SET_SWING_MODE = "set_swing_mode"
162 SERVICE_SET_SWING_HORIZONTAL_MODE = "set_swing_horizontal_mode"
163 SERVICE_SET_TEMPERATURE = "set_temperature"
164 
165 
166 class ClimateEntityFeature(IntFlag):
167  """Supported features of the climate entity."""
168 
169  TARGET_TEMPERATURE = 1
170  TARGET_TEMPERATURE_RANGE = 2
171  TARGET_HUMIDITY = 4
172  FAN_MODE = 8
173  PRESET_MODE = 16
174  SWING_MODE = 32
175  AUX_HEAT = 64
176  TURN_OFF = 128
177  TURN_ON = 256
178  SWING_HORIZONTAL_MODE = 512
179 
180 
181 # These SUPPORT_* constants are deprecated as of Home Assistant 2022.5.
182 # Please use the ClimateEntityFeature enum instead.
183 _DEPRECATED_SUPPORT_TARGET_TEMPERATURE = DeprecatedConstantEnum(
184  ClimateEntityFeature.TARGET_TEMPERATURE, "2025.1"
185 )
186 _DEPRECATED_SUPPORT_TARGET_TEMPERATURE_RANGE = DeprecatedConstantEnum(
187  ClimateEntityFeature.TARGET_TEMPERATURE_RANGE, "2025.1"
188 )
189 _DEPRECATED_SUPPORT_TARGET_HUMIDITY = DeprecatedConstantEnum(
190  ClimateEntityFeature.TARGET_HUMIDITY, "2025.1"
191 )
192 _DEPRECATED_SUPPORT_FAN_MODE = DeprecatedConstantEnum(
193  ClimateEntityFeature.FAN_MODE, "2025.1"
194 )
195 _DEPRECATED_SUPPORT_PRESET_MODE = DeprecatedConstantEnum(
196  ClimateEntityFeature.PRESET_MODE, "2025.1"
197 )
198 _DEPRECATED_SUPPORT_SWING_MODE = DeprecatedConstantEnum(
199  ClimateEntityFeature.SWING_MODE, "2025.1"
200 )
201 _DEPRECATED_SUPPORT_AUX_HEAT = DeprecatedConstantEnum(
202  ClimateEntityFeature.AUX_HEAT, "2025.1"
203 )
204 
205 # These can be removed if no deprecated constant are in this module anymore
206 __getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
207 __dir__ = partial(
208  dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
209 )
210 __all__ = all_with_deprecated_constants(globals())
list[str] all_with_deprecated_constants(dict[str, Any] module_globals)
Definition: deprecation.py:356