2022-06-20 06:51:12 +00:00
|
|
|
"""Support for MQTT platform config setup."""
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
import voluptuous as vol
|
|
|
|
|
|
|
|
from homeassistant.const import (
|
|
|
|
CONF_CLIENT_ID,
|
|
|
|
CONF_DISCOVERY,
|
|
|
|
CONF_PASSWORD,
|
|
|
|
CONF_PORT,
|
|
|
|
CONF_PROTOCOL,
|
|
|
|
CONF_USERNAME,
|
|
|
|
Platform,
|
|
|
|
)
|
|
|
|
from homeassistant.helpers import config_validation as cv
|
|
|
|
|
|
|
|
from . import (
|
|
|
|
button as button_platform,
|
|
|
|
cover as cover_platform,
|
2023-07-23 12:42:14 +00:00
|
|
|
event as event_platform,
|
2022-06-20 06:51:12 +00:00
|
|
|
humidifier as humidifier_platform,
|
2023-08-25 15:56:22 +00:00
|
|
|
lawn_mower as lawn_mower_platform,
|
2022-06-20 06:51:12 +00:00
|
|
|
lock as lock_platform,
|
|
|
|
number as number_platform,
|
|
|
|
sensor as sensor_platform,
|
|
|
|
switch as switch_platform,
|
2022-10-24 09:47:45 +00:00
|
|
|
update as update_platform,
|
2023-06-08 15:38:30 +00:00
|
|
|
water_heater as water_heater_platform,
|
2022-06-20 06:51:12 +00:00
|
|
|
)
|
|
|
|
from .const import (
|
|
|
|
CONF_BIRTH_MESSAGE,
|
|
|
|
CONF_BROKER,
|
|
|
|
CONF_CERTIFICATE,
|
|
|
|
CONF_CLIENT_CERT,
|
|
|
|
CONF_CLIENT_KEY,
|
|
|
|
CONF_DISCOVERY_PREFIX,
|
|
|
|
CONF_KEEPALIVE,
|
|
|
|
CONF_TLS_INSECURE,
|
|
|
|
CONF_WILL_MESSAGE,
|
|
|
|
)
|
|
|
|
|
|
|
|
DEFAULT_TLS_PROTOCOL = "auto"
|
|
|
|
|
2023-07-18 12:29:45 +00:00
|
|
|
CONFIG_SCHEMA_BASE = vol.Schema(
|
2022-06-20 06:51:12 +00:00
|
|
|
{
|
2023-10-19 10:06:33 +00:00
|
|
|
Platform.ALARM_CONTROL_PANEL.value: vol.All(cv.ensure_list, [dict]),
|
2023-10-19 16:15:21 +00:00
|
|
|
Platform.BINARY_SENSOR.value: vol.All(cv.ensure_list, [dict]),
|
2022-06-20 06:51:12 +00:00
|
|
|
Platform.BUTTON.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[button_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-06-20 06:51:12 +00:00
|
|
|
),
|
2023-10-19 16:17:06 +00:00
|
|
|
Platform.CAMERA.value: vol.All(cv.ensure_list, [dict]),
|
2023-10-19 19:14:45 +00:00
|
|
|
Platform.CLIMATE.value: vol.All(cv.ensure_list, [dict]),
|
2022-06-20 06:51:12 +00:00
|
|
|
Platform.COVER.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[cover_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-06-20 06:51:12 +00:00
|
|
|
),
|
2023-10-19 16:18:04 +00:00
|
|
|
Platform.DEVICE_TRACKER.value: vol.All(cv.ensure_list, [dict]),
|
2023-07-23 12:42:14 +00:00
|
|
|
Platform.EVENT.value: vol.All(
|
|
|
|
cv.ensure_list,
|
|
|
|
[event_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
|
|
|
),
|
2023-10-19 16:48:35 +00:00
|
|
|
Platform.FAN.value: vol.All(cv.ensure_list, [dict]),
|
2022-06-20 06:51:12 +00:00
|
|
|
Platform.HUMIDIFIER.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[humidifier_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-06-20 06:51:12 +00:00
|
|
|
),
|
2023-10-19 16:50:02 +00:00
|
|
|
Platform.IMAGE.value: vol.All(cv.ensure_list, [dict]),
|
2023-08-25 15:56:22 +00:00
|
|
|
Platform.LAWN_MOWER.value: vol.All(
|
|
|
|
cv.ensure_list,
|
|
|
|
[lawn_mower_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
|
|
|
),
|
2023-10-19 15:34:43 +00:00
|
|
|
Platform.LIGHT.value: vol.All(cv.ensure_list, [dict]),
|
2022-06-20 06:51:12 +00:00
|
|
|
Platform.LOCK.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[lock_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-06-20 06:51:12 +00:00
|
|
|
),
|
|
|
|
Platform.NUMBER.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[number_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-06-20 06:51:12 +00:00
|
|
|
),
|
2023-10-19 16:27:04 +00:00
|
|
|
Platform.SCENE.value: vol.All(cv.ensure_list, [dict]),
|
2023-10-19 20:10:45 +00:00
|
|
|
Platform.SELECT.value: vol.All(cv.ensure_list, [dict]),
|
2022-06-20 06:51:12 +00:00
|
|
|
Platform.SENSOR.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[sensor_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-06-20 06:51:12 +00:00
|
|
|
),
|
2023-10-19 16:50:50 +00:00
|
|
|
Platform.SIREN.value: vol.All(cv.ensure_list, [dict]),
|
2022-06-20 06:51:12 +00:00
|
|
|
Platform.SWITCH.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[switch_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-06-20 06:51:12 +00:00
|
|
|
),
|
2023-10-19 16:51:47 +00:00
|
|
|
Platform.TEXT.value: vol.All(cv.ensure_list, [dict]),
|
2022-10-24 09:47:45 +00:00
|
|
|
Platform.UPDATE.value: vol.All(
|
2023-01-08 21:07:10 +00:00
|
|
|
cv.ensure_list,
|
|
|
|
[update_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
2022-10-24 09:47:45 +00:00
|
|
|
),
|
2023-10-19 18:11:09 +00:00
|
|
|
Platform.VACUUM.value: vol.All(cv.ensure_list, [dict]),
|
2023-06-08 15:38:30 +00:00
|
|
|
Platform.WATER_HEATER.value: vol.All(
|
|
|
|
cv.ensure_list,
|
|
|
|
[water_heater_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]
|
|
|
|
),
|
2022-06-20 06:51:12 +00:00
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
CLIENT_KEY_AUTH_MSG = (
|
2022-12-22 12:35:47 +00:00
|
|
|
"client_key and client_cert must both be present in the MQTT broker configuration"
|
2022-06-20 06:51:12 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
DEPRECATED_CONFIG_KEYS = [
|
|
|
|
CONF_BIRTH_MESSAGE,
|
|
|
|
CONF_BROKER,
|
2022-10-24 07:58:23 +00:00
|
|
|
CONF_CLIENT_ID,
|
2022-06-20 06:51:12 +00:00
|
|
|
CONF_DISCOVERY,
|
2022-10-24 07:58:23 +00:00
|
|
|
CONF_DISCOVERY_PREFIX,
|
|
|
|
CONF_KEEPALIVE,
|
2022-06-20 06:51:12 +00:00
|
|
|
CONF_PASSWORD,
|
|
|
|
CONF_PORT,
|
2022-10-24 07:58:23 +00:00
|
|
|
CONF_PROTOCOL,
|
|
|
|
CONF_TLS_INSECURE,
|
2022-06-20 06:51:12 +00:00
|
|
|
CONF_USERNAME,
|
|
|
|
CONF_WILL_MESSAGE,
|
|
|
|
]
|
2022-10-24 07:58:23 +00:00
|
|
|
|
|
|
|
DEPRECATED_CERTIFICATE_CONFIG_KEYS = [
|
|
|
|
CONF_CERTIFICATE,
|
|
|
|
CONF_CLIENT_CERT,
|
|
|
|
CONF_CLIENT_KEY,
|
|
|
|
]
|