diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 98d02af5eb0..db1a4be3228 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -6,6 +6,7 @@ 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 @@ -17,6 +18,7 @@ from homeassistant.const import ( import homeassistant.util.dt as dt_util from homeassistant.components import recorder, sun from homeassistant.helpers.entity import split_entity_id +from homeassistant.util import template DOMAIN = "logbook" DEPENDENCIES = ['recorder', 'http'] @@ -27,6 +29,8 @@ QUERY_EVENTS_BETWEEN = """ SELECT * FROM events WHERE time_fired > ? AND time_fired < ? """ +_LOGGER = logging.getLogger(__name__) + EVENT_LOGBOOK_ENTRY = 'logbook_entry' GROUP_BY_MINUTES = 15 @@ -53,8 +57,22 @@ 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 log_message(service): + """ Handle sending notification message service calls. """ + message = service.data.get(ATTR_MESSAGE) + name = service.data.get(ATTR_NAME) + domain = service.data.get(ATTR_DOMAIN, None) + entity_id = service.data.get(ATTR_ENTITY_ID, None) + if not message or not name: + return + + message = template.render(hass, message) + log_entry(hass, name, message, domain, entity_id) + + hass.http.register_path('GET', URL_LOGBOOK, _handle_get_logbook) + hass.services.register(DOMAIN, 'log', log_message) return True