Home Assistant Unofficial Reference 2024.12.1
config.py
Go to the documentation of this file.
1 """Support for MQTT message handling."""
2 
3 from __future__ import annotations
4 
5 import voluptuous as vol
6 
7 from homeassistant.const import CONF_OPTIMISTIC, CONF_VALUE_TEMPLATE
8 from homeassistant.helpers import config_validation as cv
9 
10 from .const import (
11  CONF_COMMAND_TOPIC,
12  CONF_ENCODING,
13  CONF_QOS,
14  CONF_RETAIN,
15  CONF_STATE_TOPIC,
16  DEFAULT_ENCODING,
17  DEFAULT_OPTIMISTIC,
18  DEFAULT_QOS,
19  DEFAULT_RETAIN,
20 )
21 from .util import valid_publish_topic, valid_qos_schema, valid_subscribe_topic
22 
23 SCHEMA_BASE = {
24  vol.Optional(CONF_QOS, default=DEFAULT_QOS): valid_qos_schema,
25  vol.Optional(CONF_ENCODING, default=DEFAULT_ENCODING): cv.string,
26 }
27 
28 MQTT_BASE_SCHEMA = vol.Schema(SCHEMA_BASE)
29 
30 # Sensor type platforms subscribe to MQTT events
31 MQTT_RO_SCHEMA = MQTT_BASE_SCHEMA.extend(
32  {
33  vol.Required(CONF_STATE_TOPIC): valid_subscribe_topic,
34  vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
35  }
36 )
37 
38 # Switch type platforms publish to MQTT and may subscribe
39 MQTT_RW_SCHEMA = MQTT_BASE_SCHEMA.extend(
40  {
41  vol.Required(CONF_COMMAND_TOPIC): valid_publish_topic,
42  vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
43  vol.Optional(CONF_RETAIN, default=DEFAULT_RETAIN): cv.boolean,
44  vol.Optional(CONF_STATE_TOPIC): valid_subscribe_topic,
45  }
46 )