Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Support for MQTT lights."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 import voluptuous as vol
8 
9 from homeassistant.components import light
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
13 from homeassistant.helpers.typing import ConfigType, VolSchemaType
14 
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,
20  MqttLight,
21 )
22 from .schema_json import (
23  DISCOVERY_SCHEMA_JSON,
24  PLATFORM_SCHEMA_MODERN_JSON,
25  MqttLightJson,
26 )
27 from .schema_template import (
28  DISCOVERY_SCHEMA_TEMPLATE,
29  PLATFORM_SCHEMA_MODERN_TEMPLATE,
30  MqttLightTemplate,
31 )
32 
33 PARALLEL_UPDATES = 0
34 
35 
36 def validate_mqtt_light_discovery(config_value: dict[str, Any]) -> ConfigType:
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,
42  }
43  config: ConfigType = schemas[config_value[CONF_SCHEMA]](config_value)
44  return config
45 
46 
47 def validate_mqtt_light_modern(config_value: dict[str, Any]) -> ConfigType:
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,
53  }
54  config: ConfigType = schemas[config_value[CONF_SCHEMA]](config_value)
55  return config
56 
57 
58 DISCOVERY_SCHEMA = vol.All(
59  MQTT_LIGHT_SCHEMA_SCHEMA.extend({}, extra=vol.ALLOW_EXTRA),
60  validate_mqtt_light_discovery,
61 )
62 
63 PLATFORM_SCHEMA_MODERN = vol.All(
64  MQTT_LIGHT_SCHEMA_SCHEMA.extend({}, extra=vol.ALLOW_EXTRA),
65  validate_mqtt_light_modern,
66 )
67 
68 
70  hass: HomeAssistant,
71  config_entry: ConfigEntry,
72  async_add_entities: AddEntitiesCallback,
73 ) -> None:
74  """Set up MQTT lights through YAML and through MQTT discovery."""
76  hass,
77  config_entry,
78  None,
79  light.DOMAIN,
80  async_add_entities,
81  DISCOVERY_SCHEMA,
82  PLATFORM_SCHEMA_MODERN,
83  {"basic": MqttLight, "json": MqttLightJson, "template": MqttLightTemplate},
84  )
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)
Definition: entity.py:245
ConfigType validate_mqtt_light_modern(dict[str, Any] config_value)
Definition: __init__.py:47
ConfigType validate_mqtt_light_discovery(dict[str, Any] config_value)
Definition: __init__.py:36
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: __init__.py:73