1 """Support for MQTT lights."""
3 from __future__
import annotations
7 import voluptuous
as vol
15 from ..entity
import async_setup_entity_entry_helper
16 from .schema
import CONF_SCHEMA, MQTT_LIGHT_SCHEMA_SCHEMA
17 from .schema_basic
import (
18 DISCOVERY_SCHEMA_BASIC,
19 PLATFORM_SCHEMA_MODERN_BASIC,
22 from .schema_json
import (
23 DISCOVERY_SCHEMA_JSON,
24 PLATFORM_SCHEMA_MODERN_JSON,
27 from .schema_template
import (
28 DISCOVERY_SCHEMA_TEMPLATE,
29 PLATFORM_SCHEMA_MODERN_TEMPLATE,
37 """Validate MQTT light schema for discovery."""
38 schemas: dict[str, VolSchemaType] = {
39 "basic": DISCOVERY_SCHEMA_BASIC,
40 "json": DISCOVERY_SCHEMA_JSON,
41 "template": DISCOVERY_SCHEMA_TEMPLATE,
43 config: ConfigType = schemas[config_value[CONF_SCHEMA]](config_value)
48 """Validate MQTT light schema for setup from configuration.yaml."""
49 schemas: dict[str, VolSchemaType] = {
50 "basic": PLATFORM_SCHEMA_MODERN_BASIC,
51 "json": PLATFORM_SCHEMA_MODERN_JSON,
52 "template": PLATFORM_SCHEMA_MODERN_TEMPLATE,
54 config: ConfigType = schemas[config_value[CONF_SCHEMA]](config_value)
58 DISCOVERY_SCHEMA = vol.All(
59 MQTT_LIGHT_SCHEMA_SCHEMA.extend({}, extra=vol.ALLOW_EXTRA),
60 validate_mqtt_light_discovery,
63 PLATFORM_SCHEMA_MODERN = vol.All(
64 MQTT_LIGHT_SCHEMA_SCHEMA.extend({}, extra=vol.ALLOW_EXTRA),
65 validate_mqtt_light_modern,
71 config_entry: ConfigEntry,
72 async_add_entities: AddEntitiesCallback,
74 """Set up MQTT lights through YAML and through MQTT discovery."""
82 PLATFORM_SCHEMA_MODERN,
83 {
"basic": MqttLight,
"json": MqttLightJson,
"template": MqttLightTemplate},
None async_setup_entity_entry_helper(HomeAssistant hass, ConfigEntry entry, type[MqttEntity]|None entity_class, str domain, AddEntitiesCallback async_add_entities, VolSchemaType discovery_schema, VolSchemaType platform_schema_modern, dict[str, type[MqttEntity]]|None schema_class_mapping=None)
ConfigType validate_mqtt_light_modern(dict[str, Any] config_value)
ConfigType validate_mqtt_light_discovery(dict[str, Any] config_value)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)