Home Assistant Unofficial Reference 2024.12.1
notify.py
Go to the documentation of this file.
1 """Support for MQTT notify."""
2 
3 from __future__ import annotations
4 
5 import voluptuous as vol
6 
7 from homeassistant.components import notify
8 from homeassistant.components.notify import NotifyEntity
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.const import CONF_NAME
11 from homeassistant.core import HomeAssistant, callback
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 from homeassistant.helpers.typing import ConfigType
15 
16 from .config import DEFAULT_RETAIN, MQTT_BASE_SCHEMA
17 from .const import CONF_COMMAND_TEMPLATE, CONF_COMMAND_TOPIC, CONF_RETAIN
18 from .entity import MqttEntity, async_setup_entity_entry_helper
19 from .models import MqttCommandTemplate
20 from .schemas import MQTT_ENTITY_COMMON_SCHEMA
21 from .util import valid_publish_topic
22 
23 PARALLEL_UPDATES = 0
24 
25 DEFAULT_NAME = "MQTT notify"
26 
27 PLATFORM_SCHEMA_MODERN = MQTT_BASE_SCHEMA.extend(
28  {
29  vol.Optional(CONF_COMMAND_TEMPLATE): cv.template,
30  vol.Required(CONF_COMMAND_TOPIC): valid_publish_topic,
31  vol.Optional(CONF_NAME): vol.Any(cv.string, None),
32  vol.Optional(CONF_RETAIN, default=DEFAULT_RETAIN): cv.boolean,
33  }
34 ).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
35 
36 DISCOVERY_SCHEMA = PLATFORM_SCHEMA_MODERN.extend({}, extra=vol.REMOVE_EXTRA)
37 
38 
40  hass: HomeAssistant,
41  config_entry: ConfigEntry,
42  async_add_entities: AddEntitiesCallback,
43 ) -> None:
44  """Set up MQTT notify through YAML and through MQTT discovery."""
46  hass,
47  config_entry,
48  MqttNotify,
49  notify.DOMAIN,
50  async_add_entities,
51  DISCOVERY_SCHEMA,
52  PLATFORM_SCHEMA_MODERN,
53  )
54 
55 
57  """Representation of a notification entity service that can send messages using MQTT."""
58 
59  _default_name = DEFAULT_NAME
60  _entity_id_format = notify.ENTITY_ID_FORMAT
61 
62  @staticmethod
63  def config_schema() -> vol.Schema:
64  """Return the config schema."""
65  return DISCOVERY_SCHEMA
66 
67  def _setup_from_config(self, config: ConfigType) -> None:
68  """(Re)Setup the entity."""
69  self._command_template_command_template = MqttCommandTemplate(
70  config.get(CONF_COMMAND_TEMPLATE), entity=self
71  ).async_render
72 
73  @callback
74  def _prepare_subscribe_topics(self) -> None:
75  """(Re)Subscribe to topics."""
76 
77  async def _subscribe_topics(self) -> None:
78  """(Re)Subscribe to topics."""
79 
80  async def async_send_message(self, message: str, title: str | None = None) -> None:
81  """Send a message."""
82  payload = self._command_template(message)
83  await self.async_publish_with_config(self._config[CONF_COMMAND_TOPIC], payload)
None async_send_message(self, str message, str|None title=None)
Definition: notify.py:80
None _setup_from_config(self, ConfigType config)
Definition: notify.py:67
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
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: notify.py:43