Updated notifier component.

This update to the notifier component allows multiple notifiers to be
configured. In order to support this, an optional property “name” has
been added to all the notifier’s configurations. The notifier can now
be called with the service “notify.NAME”. If the name is not provided,
the service will be mapped to “notify.notify”. Because of this, this
update should be fully backwards compatible.
This commit is contained in:
Ryan Kraus
2015-08-18 22:28:40 -04:00
parent 74308b2677
commit 159411df8b

View File

@@ -4,12 +4,13 @@ homeassistant.components.notify
Provides functionality to notify people. Provides functionality to notify people.
""" """
from functools import partial
import logging import logging
from homeassistant.loader import get_component from homeassistant.loader import get_component
from homeassistant.helpers import validate_config from homeassistant.helpers import config_per_platform
from homeassistant.const import CONF_PLATFORM from homeassistant.const import CONF_PLATFORM, CONF_NAME
DOMAIN = "notify" DOMAIN = "notify"
DEPENDENCIES = [] DEPENDENCIES = []
@@ -33,29 +34,29 @@ def send_message(hass, message):
def setup(hass, config): def setup(hass, config):
""" Sets up notify services. """ """ Sets up notify services. """
success = False
if not validate_config(config, {DOMAIN: [CONF_PLATFORM]}, _LOGGER): for platform, p_config in config_per_platform(config, DOMAIN, _LOGGER):
return False # create platform
platform = p_config[CONF_PLATFORM]
platform = config[DOMAIN].get(CONF_PLATFORM)
notify_implementation = get_component( notify_implementation = get_component(
'notify.{}'.format(platform)) 'notify.{}'.format(platform))
if notify_implementation is None: if notify_implementation is None:
_LOGGER.error("Unknown notification service specified.") _LOGGER.error("Unknown notification service specified.")
continue
return False # create platform service
notify_service = notify_implementation.get_service(
notify_service = notify_implementation.get_service(hass, config) hass, {DOMAIN: p_config})
if notify_service is None: if notify_service is None:
_LOGGER.error("Failed to initialize notification service %s", _LOGGER.error("Failed to initialize notification service %s",
platform) platform)
continue
return False # create service handler
def notify_message(notify_service, call):
def notify_message(call):
""" Handle sending notification message service calls. """ """ Handle sending notification message service calls. """
message = call.data.get(ATTR_MESSAGE) message = call.data.get(ATTR_MESSAGE)
@@ -66,9 +67,13 @@ def setup(hass, config):
notify_service.send_message(message, title=title) notify_service.send_message(message, title=title)
hass.services.register(DOMAIN, SERVICE_NOTIFY, notify_message) # register service
service_call_handler = partial(notify_message, notify_service)
service_notify = p_config.get(CONF_NAME, SERVICE_NOTIFY)
hass.services.register(DOMAIN, service_notify, service_call_handler)
success = True
return True return success
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods