From c31522eea9b625522df83d0927aebc3348b4d96e Mon Sep 17 00:00:00 2001 From: magnusknutas Date: Wed, 27 Jan 2016 17:27:55 +0100 Subject: [PATCH] Logbook service --- homeassistant/components/logbook.py | 31 ++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 98d02af5eb0..387fa9ae948 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -6,9 +6,11 @@ Parses events and generates a human log. For more details about this component, please refer to the documentation at https://home-assistant.io/components/logbook/ """ +import logging from datetime import timedelta from itertools import groupby import re +from functools import partial from homeassistant.core import State, DOMAIN as HA_DOMAIN from homeassistant.const import ( @@ -36,6 +38,22 @@ ATTR_MESSAGE = 'message' ATTR_DOMAIN = 'domain' ATTR_ENTITY_ID = 'entity_id' +_LOGGER = logging.getLogger(__name__) + + +# pylint: disable=too-few-public-methods +class LogbookService(object): + """ Implements logging service for Logbook. """ + + def __init__(self, hass, name): + self.hass = hass + self.name = name + + def send_message(self, message="", **kwargs): + """ Adds an entry to the logbook. """ + _LOGGER.error("IM HERE") + log_entry(self.hass, self.name, message, DOMAIN) + def log_entry(hass, name, message, domain=None, entity_id=None): """ Adds an entry to the logbook. """ @@ -53,8 +71,19 @@ def log_entry(hass, name, message, domain=None, entity_id=None): def setup(hass, config): """ Listens for download events to download files. """ - hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) + # create service handler + def notify_message(notify_service, call): + """ Handle sending notification message service calls. """ + message = call.data.get(ATTR_MESSAGE) + if message is None: + return + + notify_service.send_message(message) + + service = LogbookService(hass, config.get(ATTR_NAME, None)) + hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) + hass.services.register(DOMAIN, DOMAIN, partial(notify_message, service)) return True