mirror of
https://github.com/home-assistant/core.git
synced 2026-04-02 08:26:41 +01:00
83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
"""Service registration for HTML5 integration."""
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.components.notify import (
|
|
ATTR_DATA,
|
|
ATTR_MESSAGE,
|
|
ATTR_TITLE,
|
|
ATTR_TITLE_DEFAULT,
|
|
DOMAIN as NOTIFY_DOMAIN,
|
|
)
|
|
from homeassistant.core import HomeAssistant, callback
|
|
from homeassistant.helpers import config_validation as cv, service
|
|
|
|
from .const import (
|
|
ATTR_ACTION,
|
|
ATTR_ACTIONS,
|
|
ATTR_BADGE,
|
|
ATTR_DIR,
|
|
ATTR_ICON,
|
|
ATTR_IMAGE,
|
|
ATTR_LANG,
|
|
ATTR_RENOTIFY,
|
|
ATTR_REQUIRE_INTERACTION,
|
|
ATTR_SILENT,
|
|
ATTR_TAG,
|
|
ATTR_TIMESTAMP,
|
|
ATTR_TTL,
|
|
ATTR_URGENCY,
|
|
ATTR_VIBRATE,
|
|
DOMAIN,
|
|
)
|
|
|
|
SERVICE_SEND_MESSAGE = "send_message"
|
|
|
|
SERVICE_SEND_MESSAGE_SCHEMA = cv.make_entity_service_schema(
|
|
{
|
|
vol.Required(ATTR_TITLE, default=ATTR_TITLE_DEFAULT): cv.string,
|
|
vol.Optional(ATTR_MESSAGE): cv.string,
|
|
vol.Optional(ATTR_DIR): vol.In({"auto", "ltr", "rtl"}),
|
|
vol.Optional(ATTR_ICON): cv.string,
|
|
vol.Optional(ATTR_BADGE): cv.string,
|
|
vol.Optional(ATTR_IMAGE): cv.string,
|
|
vol.Optional(ATTR_TAG): cv.string,
|
|
vol.Exclusive(ATTR_VIBRATE, "silent_xor_vibrate"): vol.All(
|
|
cv.ensure_list,
|
|
[vol.All(vol.Coerce(int), vol.Range(min=0))],
|
|
),
|
|
vol.Optional(ATTR_TIMESTAMP): cv.datetime,
|
|
vol.Optional(ATTR_LANG): cv.language,
|
|
vol.Exclusive(ATTR_SILENT, "silent_xor_vibrate"): cv.boolean,
|
|
vol.Optional(ATTR_RENOTIFY): cv.boolean,
|
|
vol.Optional(ATTR_REQUIRE_INTERACTION): cv.boolean,
|
|
vol.Optional(ATTR_URGENCY): vol.In({"normal", "high", "low"}),
|
|
vol.Optional(ATTR_TTL): vol.All(cv.time_period, cv.positive_timedelta),
|
|
vol.Optional(ATTR_ACTIONS): vol.All(
|
|
cv.ensure_list,
|
|
[
|
|
{
|
|
vol.Required(ATTR_ACTION): cv.string,
|
|
vol.Required(ATTR_TITLE): cv.string,
|
|
vol.Optional(ATTR_ICON): cv.string,
|
|
}
|
|
],
|
|
),
|
|
vol.Optional(ATTR_DATA): dict,
|
|
}
|
|
)
|
|
|
|
|
|
@callback
|
|
def async_setup_services(hass: HomeAssistant) -> None:
|
|
"""Set up services for HTML5 integration."""
|
|
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_SEND_MESSAGE,
|
|
entity_domain=NOTIFY_DOMAIN,
|
|
schema=SERVICE_SEND_MESSAGE_SCHEMA,
|
|
func="send_push_notification",
|
|
)
|