Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Constants used by multiple MQTT modules."""
2 
3 import logging
4 
5 import jinja2
6 
7 from homeassistant.const import CONF_PAYLOAD, Platform
8 from homeassistant.exceptions import TemplateError
9 
10 ATTR_DISCOVERY_HASH = "discovery_hash"
11 ATTR_DISCOVERY_PAYLOAD = "discovery_payload"
12 ATTR_DISCOVERY_TOPIC = "discovery_topic"
13 ATTR_PAYLOAD = "payload"
14 ATTR_QOS = "qos"
15 ATTR_RETAIN = "retain"
16 ATTR_SERIAL_NUMBER = "serial_number"
17 ATTR_TOPIC = "topic"
18 
19 AVAILABILITY_ALL = "all"
20 AVAILABILITY_ANY = "any"
21 AVAILABILITY_LATEST = "latest"
22 
23 AVAILABILITY_MODES = [AVAILABILITY_ALL, AVAILABILITY_ANY, AVAILABILITY_LATEST]
24 
25 CONF_PAYLOAD_AVAILABLE = "payload_available"
26 CONF_PAYLOAD_NOT_AVAILABLE = "payload_not_available"
27 
28 CONF_AVAILABILITY = "availability"
29 
30 CONF_AVAILABILITY_MODE = "availability_mode"
31 CONF_AVAILABILITY_TEMPLATE = "availability_template"
32 CONF_AVAILABILITY_TOPIC = "availability_topic"
33 CONF_BROKER = "broker"
34 CONF_BIRTH_MESSAGE = "birth_message"
35 CONF_COMMAND_TEMPLATE = "command_template"
36 CONF_COMMAND_TOPIC = "command_topic"
37 CONF_DISCOVERY_PREFIX = "discovery_prefix"
38 CONF_ENCODING = "encoding"
39 CONF_JSON_ATTRS_TOPIC = "json_attributes_topic"
40 CONF_JSON_ATTRS_TEMPLATE = "json_attributes_template"
41 CONF_KEEPALIVE = "keepalive"
42 CONF_OPTIONS = "options"
43 CONF_ORIGIN = "origin"
44 CONF_QOS = ATTR_QOS
45 CONF_RETAIN = ATTR_RETAIN
46 CONF_SCHEMA = "schema"
47 CONF_STATE_TOPIC = "state_topic"
48 CONF_STATE_VALUE_TEMPLATE = "state_value_template"
49 CONF_TOPIC = "topic"
50 CONF_TRANSPORT = "transport"
51 CONF_WS_PATH = "ws_path"
52 CONF_WS_HEADERS = "ws_headers"
53 CONF_WILL_MESSAGE = "will_message"
54 CONF_PAYLOAD_RESET = "payload_reset"
55 CONF_SUPPORTED_FEATURES = "supported_features"
56 
57 CONF_ACTION_TEMPLATE = "action_template"
58 CONF_ACTION_TOPIC = "action_topic"
59 CONF_CURRENT_HUMIDITY_TEMPLATE = "current_humidity_template"
60 CONF_CURRENT_HUMIDITY_TOPIC = "current_humidity_topic"
61 CONF_CURRENT_TEMP_TEMPLATE = "current_temperature_template"
62 CONF_CURRENT_TEMP_TOPIC = "current_temperature_topic"
63 CONF_ENABLED_BY_DEFAULT = "enabled_by_default"
64 CONF_ENTITY_PICTURE = "entity_picture"
65 CONF_MODE_COMMAND_TEMPLATE = "mode_command_template"
66 CONF_MODE_COMMAND_TOPIC = "mode_command_topic"
67 CONF_MODE_LIST = "modes"
68 CONF_MODE_STATE_TEMPLATE = "mode_state_template"
69 CONF_MODE_STATE_TOPIC = "mode_state_topic"
70 CONF_PAYLOAD_CLOSE = "payload_close"
71 CONF_PAYLOAD_OPEN = "payload_open"
72 CONF_PAYLOAD_STOP = "payload_stop"
73 CONF_POSITION_CLOSED = "position_closed"
74 CONF_POSITION_OPEN = "position_open"
75 CONF_POWER_COMMAND_TOPIC = "power_command_topic"
76 CONF_POWER_COMMAND_TEMPLATE = "power_command_template"
77 CONF_PRECISION = "precision"
78 CONF_STATE_CLOSED = "state_closed"
79 CONF_STATE_CLOSING = "state_closing"
80 CONF_STATE_OPEN = "state_open"
81 CONF_STATE_OPENING = "state_opening"
82 CONF_TEMP_COMMAND_TEMPLATE = "temperature_command_template"
83 CONF_TEMP_COMMAND_TOPIC = "temperature_command_topic"
84 CONF_TEMP_STATE_TEMPLATE = "temperature_state_template"
85 CONF_TEMP_STATE_TOPIC = "temperature_state_topic"
86 CONF_TEMP_INITIAL = "initial"
87 CONF_TEMP_MAX = "max_temp"
88 CONF_TEMP_MIN = "min_temp"
89 
90 CONF_CERTIFICATE = "certificate"
91 CONF_CLIENT_KEY = "client_key"
92 CONF_CLIENT_CERT = "client_cert"
93 CONF_COMPONENTS = "components"
94 CONF_TLS_INSECURE = "tls_insecure"
95 
96 # Device and integration info options
97 CONF_IDENTIFIERS = "identifiers"
98 CONF_CONNECTIONS = "connections"
99 CONF_MANUFACTURER = "manufacturer"
100 CONF_HW_VERSION = "hw_version"
101 CONF_SW_VERSION = "sw_version"
102 CONF_SERIAL_NUMBER = "serial_number"
103 CONF_VIA_DEVICE = "via_device"
104 CONF_DEPRECATED_VIA_HUB = "via_hub"
105 CONF_SUGGESTED_AREA = "suggested_area"
106 CONF_CONFIGURATION_URL = "configuration_url"
107 CONF_OBJECT_ID = "object_id"
108 CONF_SUPPORT_URL = "support_url"
109 
110 DEFAULT_PREFIX = "homeassistant"
111 DEFAULT_BIRTH_WILL_TOPIC = DEFAULT_PREFIX + "/status"
112 DEFAULT_DISCOVERY = True
113 DEFAULT_ENCODING = "utf-8"
114 DEFAULT_OPTIMISTIC = False
115 DEFAULT_QOS = 0
116 DEFAULT_PAYLOAD_AVAILABLE = "online"
117 DEFAULT_PAYLOAD_CLOSE = "CLOSE"
118 DEFAULT_PAYLOAD_NOT_AVAILABLE = "offline"
119 DEFAULT_PAYLOAD_OPEN = "OPEN"
120 DEFAULT_PORT = 1883
121 DEFAULT_RETAIN = False
122 DEFAULT_WS_HEADERS: dict[str, str] = {}
123 DEFAULT_WS_PATH = "/"
124 DEFAULT_POSITION_CLOSED = 0
125 DEFAULT_POSITION_OPEN = 100
126 DEFAULT_RETAIN = False
127 
128 PROTOCOL_31 = "3.1"
129 PROTOCOL_311 = "3.1.1"
130 PROTOCOL_5 = "5"
131 SUPPORTED_PROTOCOLS = [PROTOCOL_31, PROTOCOL_311, PROTOCOL_5]
132 
133 TRANSPORT_TCP = "tcp"
134 TRANSPORT_WEBSOCKETS = "websockets"
135 
136 DEFAULT_PORT = 1883
137 DEFAULT_KEEPALIVE = 60
138 DEFAULT_PROTOCOL = PROTOCOL_311
139 DEFAULT_TRANSPORT = TRANSPORT_TCP
140 
141 DEFAULT_BIRTH = {
142  ATTR_TOPIC: DEFAULT_BIRTH_WILL_TOPIC,
143  CONF_PAYLOAD: DEFAULT_PAYLOAD_AVAILABLE,
144  ATTR_QOS: DEFAULT_QOS,
145  ATTR_RETAIN: DEFAULT_RETAIN,
146 }
147 
148 DEFAULT_WILL = {
149  ATTR_TOPIC: DEFAULT_BIRTH_WILL_TOPIC,
150  CONF_PAYLOAD: DEFAULT_PAYLOAD_NOT_AVAILABLE,
151  ATTR_QOS: DEFAULT_QOS,
152  ATTR_RETAIN: DEFAULT_RETAIN,
153 }
154 
155 DOMAIN = "mqtt"
156 LOGGER = logging.getLogger(__package__)
157 
158 MQTT_CONNECTION_STATE = "mqtt_connection_state"
159 
160 PAYLOAD_EMPTY_JSON = "{}"
161 PAYLOAD_NONE = "None"
162 
163 ENTITY_PLATFORMS = [
164  Platform.ALARM_CONTROL_PANEL,
165  Platform.BINARY_SENSOR,
166  Platform.BUTTON,
167  Platform.CAMERA,
168  Platform.CLIMATE,
169  Platform.COVER,
170  Platform.DEVICE_TRACKER,
171  Platform.EVENT,
172  Platform.FAN,
173  Platform.HUMIDIFIER,
174  Platform.IMAGE,
175  Platform.LIGHT,
176  Platform.LAWN_MOWER,
177  Platform.LOCK,
178  Platform.NOTIFY,
179  Platform.NUMBER,
180  Platform.SCENE,
181  Platform.SELECT,
182  Platform.SENSOR,
183  Platform.SIREN,
184  Platform.SWITCH,
185  Platform.TEXT,
186  Platform.UPDATE,
187  Platform.VACUUM,
188  Platform.VALVE,
189  Platform.WATER_HEATER,
190 ]
191 
192 TEMPLATE_ERRORS = (jinja2.TemplateError, TemplateError, TypeError, ValueError)
193 
194 SUPPORTED_COMPONENTS = (
195  "alarm_control_panel",
196  "binary_sensor",
197  "button",
198  "camera",
199  "climate",
200  "cover",
201  "device_automation",
202  "device_tracker",
203  "event",
204  "fan",
205  "humidifier",
206  "image",
207  "lawn_mower",
208  "light",
209  "lock",
210  "notify",
211  "number",
212  "scene",
213  "siren",
214  "select",
215  "sensor",
216  "switch",
217  "tag",
218  "text",
219  "update",
220  "vacuum",
221  "valve",
222  "water_heater",
223 )