From 9521dad263932092b5393ef3becb94d2ce6f276d Mon Sep 17 00:00:00 2001 From: Stefan Jonasson Date: Fri, 12 Feb 2016 11:25:26 +0100 Subject: [PATCH] Added a command line notification platform that could be used for all kind of custom notifications --- .../components/notify/command_line.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 homeassistant/components/notify/command_line.py diff --git a/homeassistant/components/notify/command_line.py b/homeassistant/components/notify/command_line.py new file mode 100644 index 00000000000..2beb78ccdca --- /dev/null +++ b/homeassistant/components/notify/command_line.py @@ -0,0 +1,46 @@ +""" +homeassistant.components.notify.command_line +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +command_line notification service. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify.command_line/ +""" +import logging +import subprocess +import shlex +from homeassistant.helpers import validate_config +from homeassistant.components.notify import ( + DOMAIN, BaseNotificationService) + +_LOGGER = logging.getLogger(__name__) + + +def get_service(hass, config): + """ Get the Command Line notification service. """ + + if not validate_config({DOMAIN: config}, + {DOMAIN: ['command']}, + _LOGGER): + return None + + command = config['command'] + + return CommandLineNotificationService(command) + + +# pylint: disable=too-few-public-methods +class CommandLineNotificationService(BaseNotificationService): + """ Implements notification service for the Command Line service. """ + + def __init__(self, command): + self.command = command + + def send_message(self, message="", **kwargs): + """ Send a message to a command_line. """ + try: + subprocess.call("{} \"{}\"".format(self.command, + shlex.quote(message)), + shell=True) + except subprocess.CalledProcessError: + _LOGGER.error('Command failed: %s', self.command)